アイテムをスタック内の位置に移動するための最小移動数を見つける方法は?
Nがスタックの数、Pがスタックの容量であるNXPスタックのセットが与えられた場合、ロケーションAのノードから任意のロケーションBに移動するために必要なスワップの最小数を計算するにはどうすればよいですか?私はゲームを設計しています。最終的な目標は、すべてのスタックをすべて同じ色になるように並べ替えることです。 # Let "-" represent blank spaces, and assume the stacks are stacks = [ ['R', 'R', 'R', 'R'], ['Y', 'Y', 'Y', 'Y'], ['G', 'G', 'G', 'G'], ['-', '-', '-', 'B'], ['-', 'B', 'B', 'B'] ] stacks[1][1]そんな時に「B」を挿入したい場合stacks[1] = ["-", "B", "Y", "Y"]。そのために必要な移動の最小数を決定するにはどうすればよいですか? 私は複数のアプローチを見てきました。ある状態から可能なすべての動きを生成し、それらにスコアを付け、次に最良のスコアリングパスを継続する遺伝的アルゴリズムを試しました。また、問題をパスファインディングするためにDjikstraのアルゴリズムを実行しようとしました。イライラするほどシンプルに見えますが、指数時間以外で実行する方法を理解できません。ここで適用できる欠落しているアルゴリズムはありますか? 編集する 必要な移動の最小数を計算するためにこの関数を書きました:スタック:スタック内のピースを表すキャラクターのリストのリスト、スタック[0] [0]はスタックのトップです[0]スタック_インデックス:インデックスピースを追加するスタックneeds_piece:スタックに追加するピースneeds_index:ピースを配置するインデックス def calculate_min_moves(stacks, stack_ind, needs_piece, …