2

T を、各ノードが状態を表すツリーとします。ルートは初期状態を表します。親から子へのエッジは、状態を変更するために親で実行できるアクションを指定します (新しい状態は子になります)。各エッジはゲインに関連付けられています。つまり、親状態から子状態に遷移することで何かを得ることができます。

さらに、ルート ノードからリーフ ノードまでの各パスの長さは Q であるとします。

私の目的は、長さ Q の最も有望なパス、つまり最大のゲインを保証するパスを見つけることです (パス ゲインは、パスのエッジに付加されたゲインの合計として定義されます)。

T が非常に巨大になる可能性があるため、明らかに、ツリー全体を探索せずにこれを実行したいと考えています。

そこで、A* を適用することを考えました。A* を使用してグラフ内の最短経路を見つけることができることは知っていますが、次のようになります。

  • コストはありませんが、利益があります
  • 最長のパスを見つけたい (実際には、開始ノードからの距離が最長ではなく、重みを合計した場合に最大の値が得られるパス)
  • グラフではなくツリーがあります(サイクルはありません!)

最終的に、私はあなたに提起したい一連の質問を思いつきました:

  1. A* はこのタイプの問題に適していますか? 適用することで最適解を見つけられるでしょうか?
  2. A* は、最短パスの場合に現在のノードからゴールまでのコストの (過小) 推定値を使用する必要があるため、現在のノードからゴールまでのゲインの (過大な) 推定値を探して使用する必要がありますか?それはヒューリスティックですか?
  3. T のノード n が与えられた場合、私の考えは、n の子によって達成されるゲインの合計としてヒューリスティック h(n) を計算することでした。これはそれほど厳密ではない可能性があります。もっと良い解決策があると思いますか?

編集: ツリー内のノード n が与えられた場合、n から出るエッジに付加されたゲインは量 U(n) よりも大きくすることはできません。さらに、U(n) は、n の深さが大きくなるにつれて、ますます小さくなります。

4

2 に答える 2

4

分析

その理由は次のとおりです。パスPが最適であると主張し、 edge を調べていないとしますe。一般性を失うことなくe、ツリー内の他のすべてのゲインの合計よりも大きな値に のゲインを設定できます。その場合、パスPは最適ではありません。

したがって、すべてのエッジのゲインを調べる前に行われる最適性の主張は誤りです。

結論

エッジのゲインに関する追加情報が与えられていない場合、ツリー全体を調査しない限り、最適なパスを見つけることはできません

たとえば、ゲイン値に上限がある場合、A* を使用して最適なパスをより効率的に見つけ、すべてのエッジを調べる必要はありません。


この回答が書かれた後に質問に加えた変更に対する回答は、以下のコメントにあります。必ず確認してください。

于 2013-06-13T16:55:54.033 に答える
0

質問に答えると、A* は通常、ツリーを探索するための正しいアプローチではありません。ツリーではなく、加重グラフ用です。ツリーを探索している場合は、バックトラックを使用します。ヒューリスティックまたはプルーニングを使用して、バックトラッキングをよりインテリジェントにすることができます。

于 2013-06-13T17:52:37.573 に答える