局Aから局Bまでの最短ルートを双方向グラフでプロローグしたいのですが(AがBに接続されていてBがAに接続されている場合)、グラフには枝には重みがない。問題は、
solve(開始、終了、パス)のように表示されます。
開始開始ステーション。
最終宛先ステーション。
パス - 最短ルートで渡されたすべてのステーションのリスト。グラフに直接接続された2つのステーション間の距離は等しくなります。 実際のベースは
ファクト( "Staion1"、 "metroline"、 "Station2"、 "metroline")です。
地下鉄線は、2つの駅を直接結ぶ線の数です。 2番目と4番目の引数が同じ場合、ステーションは直接接続されます。プロローグで幅優先探索で最短経路を返します
line( "Abbesses"、 "12"、 "Pigalle"、 "12")。
line( "Abbesses"、 "12"、 "Lamarck Caulaincourt"、 "12")。
line(「Ale'sia」、「4」、「Mouton Duvernet」、「4」)。
line(「Ale'sia」、「4」、「Porte d'Orle'ans」、「4」)。
行(「Alexandre Dumas」、「2」、「Philippe Auguste」、「2」)。
行(「Alexandre Dumas」、「2」、「Avron」、「2」)。
行(「Alma Marcesu」、「9」、「Ie'na」、「9」)。
EDIT: 私はこの問題を解決しようとしましたが、BFSを使用するとより速く動作することがわかりました。
ここに私が書いた解決策があります:
solve(開始、終了、パス): - solve1([開始]、終了、[開始]、パス)。子ども(P、S)、メンバー(End、S)、!、。
solve1([P | O]、End、Visited、Path):
(メンバー(P、訪問中))、子(P、S)、追加(O、S、O1)、解決1終了、訪問、パス));
(solve1(O、End、Visited、Path))。
? - 宛先ノードへのパスを持つリストにする必要があります。
唯一の問題は、宛先ノードへのパスを返す方法がわかりません。
ありがとうございます。
あなたが問題を解決し始めました、あなたがどこに捕まってしまった方法を教えてください。他の人があなたのためにこれを完全に解決してくれるように思えます... –