Künstliche Intelligenz und Prolog
Copyright © 2019 Jiri Kriz, www.nosco.ch

7Problemlösung

Lösungen

7.1Autofahren in der Schweiz

Eine Strassenkarte kann z.B. als eine Menge der Fakten

strasse( Stadt1, Stadt2, Art, Distanz)

repräsentiert werden (Art = a für Autobahn, Art = s für Strasse).

strasse( zuerich,   baden,    a, 22).    
strasse( baden,     basel,    s, 83).
strasse( zuerich,   rotkreuz, s, 39).    
strasse( baden,     olten,    a, 43).
strasse( olten,     bern,     a, 67).    
strasse( olten,     luzern,   a, 57).
strasse( olten,     basel,    a, 39).    
strasse( rotkreuz,  luzern,   a, 18).    
strasse( rotkreuz,  schwyz,   a, 26).
strasse( luzern,    altdorf,  a, 39).    
strasse( schwyz,    altdorf,  s, 16).

Formulieren Sie das Prädikat:

weg( X, Y, W, L),

das besagt, dass ein Weg W von X nach Y der Länge L existiert. W ist die geordnete Liste der Zwischenstädte beginnend mit X.

Lösung 7.1

7.2Zwei Kanister

Es gibt zwei Kanister. Der eine fasst 7 Liter, der andere 5 Liter. Wie erzielt man 4 Liter Wasser im grossen Kanister? Nur folgende Aktionen sind möglich:

  1. Füllen eines Kanisters.
  2. Leeren eines Kanisters.
  3. Umgiessen von einem Kanister in den anderen, bis der eine leer oder der andere voll wird.

Lösung 7.2

7.3Flussüberquerung

Ein Bauer mit einem Schaf, einer Ziege und einem Sack Heu möchte einen Fluss überqueren. Er hat dazu ein Boot, das neben ihm nur noch ein Objekt fasst. Ausserdem will er weder das Schaf noch die Ziege ohne seine Aufsicht allein mit dem Heu lassen. Wie macht er das?

(Hinweis: Der Bauer hat einen portablen Computer mit Prolog zur Verfügung.)

Lösung 7.3

7.4Roboter

In einem verseuchten Raum sollte ein Roboter ein Ventil schliessen. Der Roboter steht an der Tür, während das Ventil oben in der Ecke ist. Er kann es nur erreichen, wenn er auf eine verschiebbare Rampe steigt, die aber am Fenster ist. Der Roboter kann nur folgende Aktionen ausführen:

  1. Herumlaufen
  2. Schieben der Rampe
  3. Hinaufsteigen auf die Rampe
  4. Hinuntersteigen von der Rampe
  5. Schliessen des Ventils
  6. Öffnen des Ventils

Welche Aktionen muss der Roboter ausführen, um das Ventil zu schliessen?

Hinweis: Repräsentieren Sie den Anfangszustand z.B. als

zustand(
    roboter( an_tuer, auf_boden),
    rampe( am_fenster), 
    ventil( offen)).

und den Endzustand als

zustand(
    roboter( in_ecke, auf_rampe),
    rampe( in_ecke),
    ventil( geschlossen)). 

Lösung 7.4