これで、開始点から目標を見つけるためにBFSで解決する迷路ができました。いくつかの情報を出力する必要があるので、A、B、およびCインスタンス変数を持つクラスノードを作成することにしました(はい、JAVAを使用します)。しかし、私の質問は、BFS中に、同じAとBでノードを拡張するべきではないということです。つまり、たとえば、ノードを最初に拡張した(1,2,3)のではなく、ノードを2番目に拡張する必要があります( 1,2,5)。ですから、ハッシュマップやハッシュテーブルを作ってみるべきだと思います。1つのノードノード(x、y、z)について、その(x、y)が以前に発生したかどうかを確認する必要があります。どうすれば実装できますか?それでもハッシュ時間O(1)ですか?他のすべての方法でクラスを設計する必要がありますか?ありがとうございました!
2 に答える
1
はい、これにはハッシュテーブルを使用できます。あなたがする必要があるのは、equals(Object)メソッドとhashCode()メソッドを定義することだけです。これらの場合、(z)ではなく(x、y)のみをテストする限り、同じ(x、y)を持つノードはハッシュマップで衝突します。しかし、これも重要ですか?(x、y)が同じでz値が異なる2つのノードがありますか?それは非常に奇妙な迷路になります...
編集:最後に、設定されたオブジェクトも機能し、まさにあなたが使用したいものになるように聞こえます。
于 2013-02-25T01:17:51.240 に答える
0
このタイプの作業では、通常、再帰的アルゴリズムが最良のアプローチです。
あなたの質問は、グローバル情報の使用を必要とする反復的なアプローチを示唆しています。再帰的アプローチでは、この種の情報を保持する必要はなく、コードの理解と実装も容易になります。
于 2013-02-25T01:04:53.057 に答える