10.06. Zugverbindungen (Zusatzaufgabe)

In Kapitel 3 hast du bereits mit folgender Wissenbasis gearbeitet:

directTrain(saarbruecken,dudweiler).
directTrain(forbach,saarbruecken).
directTrain(freyming,forbach).
directTrain(stAvold,freyming).
directTrain(fahlquemont,stAvold).
directTrain(metz,fahlquemont).
directTrain(nancy,metz).

Dort hast du ein Prädikat travel/2 geschrieben, das gelingt, wenn man per Zug von einer Stadt zur anderen reisen kann. Nun wäre es plausibel anzunehmen, dass wenn es eine Zugverbindung von Stadt A nach Stadt B gibt, es auch eine Zugverbindung von B nach A gibt.

Füge diese Informationen zu deiner Wissensbasis hinzu, in dem du sie entweder explizit auflistest, oder besser, in dem du in deinen Regeln erfasst, dass man von A nach B ohne Umstieg fahren kann, wenn es eine Verbindung von A nach B oder von B nach A gibt.
Vorsicht: durch die Aufnahme der Rückverbindungen kann man jetzt endlos zwischen zwei Städten hin und her fahren. Zu welchen Problemen führt das?

Schreibe dann ein Prädikat travel/3 welches dir eine Liste der besuchten Städte angibt, wenn du von Stadt A nach Stadt B fährst. Sorge dafür, dass nur Routen erlaubt sind, bei denen kein Ort zweimal besucht wird.

Zum Beispiel:

?- route(forbach,metz,Route).
Route = [forbach,freyming,stAvold,fahlquemont,metz]
Noch keine Kommentare eingereicht. Bitte hilf uns diese Aufgabe zu verbessern.

Schreibe einen Kommentar