2

状況があります:私はプロローグの特定の路線で宣言されたロンドン地下鉄のほとんどの部分を持っていません。私はいくつかの駅がある3つの路線を持っていますが、それらはすべて互いに共通点を持っています。

地下の地図

私は駅についての事実を持っています、そこでは議論は隣同士の駅とそれらが何をしているのかという線です。地図上に駅の完全なリストがあります:

neighbour(south_kensington,victoria,green).
neighbour(victoria,westminster,green).
neighbour(westminster,embankment,green).
neighbour(embankment,blackfriars,green).
neighbour(vauxhall,victoria,blue).
neighbour(victoria,green_park,blue).
neighbour(green_park,oxford_circus,blue).
neighbour(oxford_circus,warren_street,blue).
neighbour(warren_street,euston,blue).
neighbour(warren_street,tottenham_court_road,black).
neighbour(tottenham_court_road,leichester_square,black).
neighbour(leichester_square,charing_cross,black).
neighbour(charing_cross,embankbent,black).
neighbour(embankment,waterloo,black).

問題は次のとおりです。私はAからBに行きたい(それらは異なる路線にあります)そしてProlog氏はどの駅で路線を変更すべきかを言うべきです。例:A:チャリングクロス; B:ウェストミンスター; 変更場所:堤防

4

1 に答える 1

2

問題のステートメントは完全には明確ではありません。変更が 1 回のみのルートをお探しですか、それとも変更は何度でも可能です。

1) ヴォクスホールからウォータールーまで、地下鉄の一部を移動することを検討してください。乗り換え2回のウェストミンスター経由と乗り換え1回のウォーレンストリート経由があります。両方のルートが許容されますか、それとも 1 つだけですか?

2) 隣接するEmbankment駅名の誤字を修正(charing_cross,embankbent,black)。

3) ステーション St がライン Li にある場合にのみ保持される述語 station_on_line(St,Li) を定義し、クエリに対してstation_on_line(St,blue)各ステーションを正確に 1 回返し、同様station_on_line(victoria,Li)にビクトリア駅がオンになっている各ラインを 1 回だけ返すことを確認します。

4) 路線と駅が合流したchange_at(L1,L2,C)場合に成立する述語を定義する。L1L2C

5) ケース 3) と 4) は、1 つの変更のみが許可される場合、変更する駅を見つけるのに十分です。つまり、Vauxhall から Westminster を経由して Waterloo に至る経路は 1) では許可されません。

6) 任意の数の回線を持つネットワーク上の任意の数のステーションを通るパスを見つけることができる再帰的な定義を設計します。

于 2012-05-06T05:36:21.540 に答える