私は3種類のヒューリスティック関数を持つA *アルゴリズムを使ってNパズルを解こうとしています。私は時間の複雑さの観点からそれぞれのヒューリスティックをどのように比較するかを知りたい。私が使っている経験則は、マンハッタン距離、マンハッタン距離+線形矛盾、N-maxスワップです。特に、8パズルと15パズルの場合。N個のパズルを解くA *ヒューリスティックの比較
0
A
答えて
1
Nパズルは、一般的に、最短解を見つけるのに難しいので、あなたがどのヒューリスティックを使用しても、それらの複雑さの違いを見つけることはできません。あらゆる縛りの緊張を証明する。
8パズルまたは15パズルに制限されている場合、任意の許容ヒューリスティックを持つA *アルゴリズムは、ボード位置が有限であるにもかかわらずO(1)時間で実行されます。
1
@Harold氏は、ヒューリスティック関数の時間的複雑さを比較するアプローチは実験的なテストであると主張しています。あなたのケースでは、8-パズルと15-パズルのランダムな問題nのセットを生成し、異なるヒューリスティック関数を使用してそれらを解きます。注意すべきものがあります:
比較は常にアルゴリズムを実装したときに、...
は一般的に、より多くを話すのハードウェアexpecs、プログラミング言語、あなたのスキルのようないくつかの要因に依存するであろう知識のあるヒューリスティックは、あまり知られていないノードよりも少ないノードを常に展開し、おそらくより高速になります。
- 問題:
そして最後に、各問題のセットのための3つのヒューリスティックを比較するために、私は平均実行時間とグラフィックを示唆している(例えば5回それぞれの問題を繰り返します) x軸には難易度が並んでいます。
- 実行時間は、ヒューリスティック関数ごとに(おそらく対数の差が分かりにくい場合は対数スケールで)y軸になります。
と同様の図で、調査した状態の数を示します。
関連する問題
- 1. n-queenパズルを解く
- 2. A *アルゴリズムを使った8個のパズルを解く
- 3. 重み付き15パズルを解くヒューリスティック関数
- 4. N Queens Dominationパズルを解くアルゴリズム
- 5. n ** n ** n Pythonのヒューリスティック
- 6. Javaのn個の文字列を比較する
- 7. ラケットでパズルを解く
- 8. ヒューリスティックよりもA *
- 9. imagettftext \\ n改行パズル
- 10. ターンベースのパズルを解く正しいアプローチ
- 11. Pythonのn-queenパズルに対する2つの解の差
- 12. n個のボールで迷路を解く一般的なアルゴリズム
- 13. Cで比較n回なしのループ
- 14. A *のヒューリスティック関数の自動生成?
- 15. セット比較の理解
- 16. 人工知能:BlocksworldヒューリスティックA *ソリューションのアプローチ
- 17. A * FとGヒューリスティックのアルゴリズムと使用
- 18. A-star:複数目標のヒューリスティック
- 19. Javascriptを比較理解
- 20. 私はvbaのいくつかのセルの値を比較したいが、Codeは私にN/Aが見つかったらランタイムエラーを表示するので、値を "#N/A"と比較するコードを提案する
- 21. A [n-1]> = A [n] <= A [n + 1]
- 22. Matlabスクリプトa(n)= a(n-1)+ a(n-2)
- 23. 検索アルゴリズムを使ってパズルを解く
- 24. A(n)= A(n-1)+ n * log(n)?
- 25. 並べ替えAボックス内のN個の要素は?
- 26. n個のJMeter
- 27. 2ファイルの比較テキストと比較の問題を解決する方法
- 28. estimator.evaluateの理解と比較の出力
- 29. 比較ソートによるソートの最小限の比較
- 30. A *アルゴリズムを使用して8パズルを解くための "近傍関数"の最適化
ヒューリスティックは通常、実験的に比較されます。 – harold
しかし、私はそれらを比較することができますか? –
たとえば、擬似乱数(シードとPRNGを紙に入れます)を生成し、調べたノードの数を記録します。 – harold