Bahnauskunftssystem in Prolog

2. Lösungsschritt

/* Datenbank */
/* nur aus Fakten bestehend */
/* strecke(Anfangsort,Endort,Laenge). */

strecke(erfurt,weimar,21).
strecke(weimar,apolda,16).
strecke(weimar,bad_berka,15).
strecke(weimar,jena,23).
strecke(apolda,naumburg,23).
strecke(naumburg,halle,43).
strecke(halle,leipzig,41).
strecke(naumburg,leipzig,54).
strecke(naumburg,camburg,13).
strecke(camburg,jena,14).
strecke(jena,stadtroda,15).
strecke(stadtroda,hermsdorf,11).
strecke(hermsdorf,gera,19).
strecke(jena,kahla,15).
strecke(kahla,orlamuende,5).
strecke(orlamuende,rudostadt,12).
strecke(orlamuende,poessneck,14).
strecke(rudolstadt,saalfeld,11).
strecke(saalfeld,probstzella,25).
strecke(erfurt,soemmerda,25).
strecke(soemmerda,sangerhausen,45).
strecke(sangerhausen,eisleben,22).
strecke(eisleben,halle,38).

/* Regel, die sichert, dass die Verbindung reflexiv wird. */

direkte_verbindung(Von,Nach,Laenge):-
   strecke(Von,Nach,Laenge);
   strecke(Nach,Von,Laenge).

Mängel dieser zweiten Lösung:
Auf Anfragen, die sich auf eine Verbindung nicht direkt benachbarter Orte beziehen, erhält man lediglich die Antwort "No.".
Es ist keinerlei Benutzerführung eingebaut.

Ob bei der Beseitigung des ersten Mangels Rekursion hilfreich ist?

erster Versuch einer rekursiven Lösung

Zurck