Martin Vaeth schrieb:
> Stephan Gerlach <
mam9...@t-online.de> schrieb:
>> Ich frage mich gerade, ob man derartige Aufgaben irgendwie "automatisch"
>> lösen kann, z.B. mit Hilfe eines geeigneten Diagramms.
>>
>> Sowas hatte ich mal beim Wolf-Ziege-Grünkohl-Problem gesehen
Dessen (geometrische) Lösung, die wohl sehr ähnlich einer
graphentheoretischen ist, sieht im übrigen wie folgt aus:
Jedes der 3 Objekte Grünkohl, Ziege, Wolf kann einen der 2 Zustände 0
(auf "dieser" Seite des Flusses) oder 1 (auf der anderen Seite des
Flusses) annehmen.
Man einen beliebigen "Gesamt-Zustand" durch einen Punkt im R^3
beschreiben, wobei o.B.d.A
w = Wolf
k = Grünkohl
z = Ziege
gesetzt werden kann.
Dann bedeutet z.B. (w;k;z) = (0;1;0), daß sich Wolf w und Ziege z auf
dieser Seite des Flusses befinden, während der Grünkohl k auf der
anderen Seite ist.
Die Menge aller möglichen Zustände wird nun durch die Eckpunkte eines
Würfels im R^3 beschrieben:
(0;0;0), (0;0;1), (0;1;0), (0;1;1),
(1;0;0), (1;0;1), (1;1;0), (1;1;1).
Das Ziel ist es nun einfach, entlang der Kanten des Würfels einen Weg
von (0;0;0) (alle 3 Objekte auf dieser Seite des Flusses) zu (1;1;1)
(alle 3 Objekte auf der anderen Seite des Flusses) zu finden.
Dabei dürfen genau 4 Kanten *nicht* benutzt werden, weil ansonsten
[Ziege und Grünkohl] oder [Wolf und Ziege] auf einer Seite des Flusses
allein zurückgelassen werden (Skizze zeichnen, dann sieht man das).
Z.B. die Kante (0;0;0)-->(1;0;0) ist unerwünscht, da sonst Ziege und
Grünkohl allein auf dieser Seite des Flusses zurückgelassen werden.
Aus der Skizze (des Würfels) "sieht" man dann sehr schnell die möglichen
beiden Wege.
> Ja. Das sind Standard-Probleme der Graphentheorie:
> Die Füllstände (im 1. Problem) sind die Knoten, und wenn es
> zwischen zwei Knoten einen Übergang durch
> Umschütten/Befüllen/Leeren gibt, machst Du einen Pfeil
> zwischen den Knoten.
Nur um sicher zu gehen: Welche Füllstände genau sind die Knoten?
Die Füllstände des 5-Liter-Eimers (in dem ja letztenendes die 4 Liter
Wasser sein müssen), oder die Füllstands-Kombinationen des 3-Liter- und
5-Liter-Eimers?
In der 1. Variante gäbe es nur die Knoten 0, 1, 2, 3, 4, 5.
In der 2. Variante gäbe es die Knoten
(0;0), (0;1), (0;2), (0;3),
(1;0), (1;1), (1;2), (1;3),
(2;0), (2;1), (2;2), (2;3),
(3;0), (3;1), (3;2), (3;3),
(4;0), (4;1), (4;2), (4;3),
(5;0), (5;1), (5;2), (5;3)
Mehr Sinn ergibt für mich die 2. Variante.
Das Ganze kann (glaube ich) ähnlich gelöst werden wie das
Wolf-Ziege-Grünkohl-Problem.
Jede Füllstands-Kombination entspricht einem Punkt in einem
2-dimensionalen Koordinatensystem mit
x = Füllstand des 5-Liter-Eimers
y = Füllstand des 3-Liter-Eimers.
_ _ _ _ _
|_|_|_|_|_|
|_|_|_|_|_|
|_|_|_|_|_|
Nun besteht das Problem "nur" darin, einen geeigneten Weg (Polygonzug)
innerhalb des "Rechtecks" mit den Eckpunkten (0;0), (5;0), (0;3), (5;3)
vom Punkt (0;0) zu einem der Punkte (4;0) oder (4;3) zu finden, unter
bestimmten Nebenbedingungen für die möglichen Wege dorthin. "Erlaubt"
sind folgende Wege:
- horizontale Strecken bis ganz nach rechts an den Rand (entspricht
5-Liter-Eimer auffüllen)
- horizontale Strecken bis ganz nach links an den Rand (entspricht
5-Liter-Eimer leeren)
- vertikale Strecken bis ganz nach oben an den Rand (entspricht
3-Liter-Eimer auffüllen)
- vertikale Strecken bis ganz nach unten an den Rand (entspricht
3-Liter-Eimer leeren)
- diagonale Strecken im im 45°-Winkel von links/oben nach rechts/unten
von "Rand bis Rand" (entspricht 3-Liter-Eimer in 5-Liter-Eimer umfüllen)
- diagonale Strecken im im 45°-Winkel von rechts/unten nach links/oben
von "Rand bis Rand" (entspricht 5-Liter-Eimer in 3-Liter-Eimer umfüllen).
Also kurz gesagt: "Erlaubt" sind vertikale, horizontale oder schräge
(45° von links/oben nach rechts/unten oder umgekehrt) Strecken von einem
Rand bis zu einem (anderen) Rand des Rechtecks.
Nach ein wenig Zeichnen "sieht" man auch hier schnell die beiden
möglichen Lösungen.