このコードは、A* アルゴリズムを使用してタスマニア ラクダ パズルを解くことを目的としています。ただし、コード内のボトルネックによりパフォーマンスが低下しています。
一連のスタック トレースにより、時間の大部分が astar 関数の 80 行目に費やされていることがわかります。 :
openlist.put((current.g + heuristicf(neighbor), node(neighbor, current.g + 1, current)))
この行には複数の操作が含まれています:
これらの操作を別々に分離する線は速度低下の原因を特定するのに役立ちます。ただし、隣接する配置に対するヒューリスティックの繰り返し計算が潜在的なパフォーマンスのボトルネックであることは明らかです。
コードのパフォーマンスを向上させるには、次の提案を検討してください。
これらの最適化を実装することで、パフォーマンスが向上します。コードの部分が大幅に改善され、より大きなパズル インスタンスをより効率的に解決できるようになります。
以上がタスマニアのラクダのパズルを解くために A* アルゴリズムを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。