幅優先探索を使用して 8 パズル ソルバーを作成しました。ここで、ヒューリスティックを使用するようにコードを変更したいと思います。次の2つの質問に答えていただけるとありがたいです。
可解性
8 のパズルが解けるかどうかをどのように判断しますか? (開始状態と目標状態が与えられた場合)これはウィキペディアの言うことです:
不変量は、16 個の正方形すべての順列のパリティに、空の正方形の右下隅からのタクシー距離 (行数と列数) のパリティを加えたものです。
残念ながら、私にはその意味が理解できませんでした。理解するのは少し複雑でした。誰かがそれをもっと簡単な言葉で説明できますか?
最短ソリューション
ヒューリスティックが与えられた場合、A* アルゴリズムを使用して最短の解を与えることが保証されますか? より具体的には、オープン リストの最初のノードには、オープン リストに存在するすべてのノードの深さの最小値である深さ (または非常に太った動きの数) が常にありますか?
ヒューリスティックは、上記のステートメントが真であるために何らかの条件を満たす必要がありますか?
編集:許容可能なヒューリスティックが常に最適なソリューションを提供するのはどうしてですか? そして、ヒューリスティックが許容できるかどうかをどのようにテストするのでしょうか?
ここにリストされているヒューリスティックを使用します
Manhattan Distance
Linear Conflict
Pattern Database
Misplaced Tiles
Nilsson's Sequence Score
N-MaxSwap X-Y
Tiles out of row and column
Eyal Schneider からの説明: