Hallo,
ich heiße Jan und studiere Wirtschaftsingenieurwesen Fachrichtung E-Logistics.
Ich programmiere auch in meinem Studiengang Prolog und Python. Ich habe folgende Aufgabe,
welche ich in Prolog lösen soll:
1. Eimer-Problem
Ein Wasserverkäufer sitzt an seinem Brunnen, um Wasser zu verkaufen. Er hat zwei Eimer, einen zu 7 l und einen zu 4 l. Für einen Liter Wasser verlangt er einen Preis von einem Goldstück. Die Wasserkäufer möchten daher nur die tatsächlich benötigte Wassermenge kaufen, z.B. 1 l, 2 l, 3 l, 5 l und 6 l.
Der Wasserverkäufer kann folgende Handlungen ausführen:
• einen leeren Eimer im Brunnen voll Wasser füllen,
• einen Eimer beliebiger Füllung in den Brunnen entleeren,
• Wasser aus einem Eimer in den anderen ohne Verlust umfüllen.
Ist es möglich – und wenn ja, wie – die gewünschten Mengen abzumessen?
Anleitung:
a) Legen Sie eine Datenstruktur fest, die den Zustand der „Eimer-Welt“ repräsentiert. Als wesentliche Daten muss sie die Inhalte der beiden Eimer enthalten.
b) Formulieren Sie mithilfe dieser Datenstruktur sechs Regeln für die Prozedur aktion/2, die die möglichen Handlungen repräsentieren:
• den großen Eimer entleeren
• den kleinen Eimer entleeren
• den großen Eimer vollschöpfen
• den kleinen Eimer vollschöpfen
• die mögliche Menge vom kleinen Eimer in den großen Eimer umfüllen
• die mögliche Menge vom großen Eimer in den kleinen Eimer umfüllen
c) Definieren Sie einen sinnvollen Startzustand durch einen Fakt! Definieren Sie für die interessierenden Zielzustände jeweils einen Fakt!
d) Wählen Sie ein geeignetes Suchverfahren zur Lösung!
Wie gehe ich an diese Aufgabe heran als Tipp soll ich die Welt als Praedikat mit zwei Variablen zu definieren, die den Fuellstand der beiden Eimer beschreiben.
Hat jemand einen Lösungsansatz?
Ich währe um eine Hilfe dankbar. Vielen Dank.
Gruß
Jan
Programmierung in Prolog
- __blackjack__
- User
- Beiträge: 14045
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ja.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Das fiel mir sofort dazu ein: https://www.youtube.com/watch?v=BVtQNK_ZUJg