If you're seeing this message, it means we're having trouble loading external resources on our website.

Wenn du hinter einem Webfilter bist, stelle sicher, dass die Domänen *. kastatic.org und *. kasandbox.org nicht blockiert sind.

Hauptinhalt

Türme von Hanoi, Fortsetzung

Als du in der vorangegangenen Übung die Türme von Hanoi für drei Scheiben gelöst hast, musstest du die unterste Scheibe Nummer 3 freilegen um sie von Stift A nach Stift B zu bewegen. Um Scheibe 3 freizulegen musstest du die Scheiben 1 und 2 von Stift A auf den freien Stift C bewegen:
Moment mal - es sieht so aus, als ob sich zwei Scheiben in einem Schritt bewegen und damit die erste Regel verletzen. Aber sie haben sich nicht in einem Schritt bewegt. Du hast zugestimmt, dass du die Scheiben 1 und 2 in drei Schritten von einem beliebigen Stift zu einem beliebigen Stift bewegen kannst. Die obige Situation stellt dar, was du nach drei Schritten hast. (Verschiebe Scheibe 1 von Stift A nach Stift B; verschiebe Scheibe 2 von Stift A nach Stift C; verschiebe Scheibe 1 von Stift B nach Stift C.)
Indem man die Scheiben 1 und 2 von Stift A zu Stift C bewegt, löst man rekursiv ein Unterproblem: Bewege Scheiben 1 bis n1 (in unserem Fall ist n=3) von Stift A to nach C. Sobald du dieses Unterproblem gelöst hast kannst du die Scheibe 3 von Stift A nach Stift B bewegen:
Abschliessend musst du noch das Unterproblem rekursiv lösen, das darin besteht die Scheiben 1 bis n1 vom Stift C nach B zu bewegen. Wir wissen bereits, dass das in drei Schritten erledigt werden kann (Bewege Scheibe 1 von Stift C auf Stift A; bewege Scheibe 2 von C nach B; bewege Scheibe 1 von Stift A auf Stift B.) Geschafft:
Und – du ahnst sicher, dass diese Frage kommen musste – macht es etwas aus von und zu welchen Stiften du die Scheiben 1 bis 3 bewegst? Du hättest sie von und auf beliebige Stifte ziehen können. Zum Beispiel von Stift B auf Stift C:
  • Löse rekursiv das Unterproblem um Scheiben 1 und 2 von Stift B auf den freien Stift A zu bewegen. (Lösung: bewege Scheibe 1 von Stift B auf Stift C; bewege Scheibe 2 von Stift B auf Stift A; bewege Scheibe 1 von Stift C auf Stift A.)
  • Da nun die Scheibe 3 auf Stift B freiliegt, bewege sie auf Stift C.
  • Löse nun rekursiv das Unterproblem um Scheiben 1 und 2 von Stift A auf Stift C zu bewegen: (Bewege Scheibe 1 von Stift A auf Stift B; bewege Scheibe 2 von Stift A auf Stift C; bewege Scheibe 1 von Stift B auf Stift C.)
Ganz gleich wie man es dreht und wendet, du kannst die Scheiben 1 bis 3 von jedem Stift auf jeden anderen Stift mit 7 Zügen bewegen. Zweimal, wenn die Scheiben 1 und 2 bewegt werden, fallen jeweils drei Züge an, plus ein Zug für das einmalige Bewegen der Scheibe 3.
Was ist, wenn n=4? Weil wir bereits wissen wie das Unterproblem, bestehend aus drei Scheiben gelöst werden kann, können wir auch das Problem für n=4 lösen.
  • Löse rekursiv das Unterproblem indem du die Scheiben 1 bis 3 vom Stift A zum Stift C bewegst. Dafür werden sieben Züge benötigt.
  • Bewege anschließend Scheibe 4 vom Stift A zum Stift B.
  • Löse dann rekursiv das Unterproblem um die Scheiben 1 bis 3 from Stift C auf Stift B zu bewegen. Dafür werden erneut sieben Züge benötigt.
Insgesamt werden für diese Lösung 15 Züge benötigt (7 + 1 + 7). Auch dies gilt allgemein für jeden beliebigen Start- und Zielstift.
Du siehst vielleicht schon zwei Muster auftauchen. Erstens kann man die Türme von Hanoi rekursiv lösen. Wenn n=1, dann bewege einfach Scheibe 1. Ansonsten, wenn n2, löse das Problem in drei Schritten:
  • Löse rekursiv das Unterproblem um die Scheiben 1 through n1 von ihrem Ausgangsstift auf den freien Stift zu bewegen.
  • Bewege die Scheibe n von ihrem Ausgangsstift auf den Zielstift.
  • Löse rekursiv das Unterproblem des Bewegens der Scheiben 1 bis n1 von dem freien Stift auf den Zielstift.
Zweitens, das Lösen eines Problems für n Scheiben erfordert 2n1 Züge. Wir haben gesehen, dass das wahr ist wenn:
  • n=1 (211=1, nur ein Zug erforderlich)
  • n=2 (221=3, drei Züge erforderlich)
  • n=3 (231=7, sieben Züge erforderlich)
  • n=4 (241=15, 15 Züge erforderlich).
Wenn du ein Problem für n1 Scheiben in 2n11 Zügen lösen kannst, dann kannst du ein Problem für n Scheiben in 2n1 Zügen lösen. Du brauchst:
  • 2n11 Züge, um rekursiv das erste Teilproblem des Bewegens der Scheiben 1 bis n1 zu lösen
  • 1 Zug, um die Scheibe n zu bewegen
  • 2n11 Züge (wieder), um rekursiv das zweite Teilproblem des Bewegens der Scheiben 1 bis n1 zu lösen
Wenn du die Züge addierst, erhältst du 2n1.
Zurück zu den Mönchen. Sie benutzen n=64 Scheiben, und so müssen sie eine Scheibe 2641 mal bewegen. Diese Mönche sind flink und stark. Sie können jede Sekunde eine Scheibe bewegen, Tag und Nacht.
Wie lang ist 2641 Sekunden? Wenn man die grobe Schätzung von 365,25 Tagen pro Jahr verwendet, sind das 584.542.046.090,6263 Jahre. Das sind 584+ Milliarden Jahre. Die Sonne hat nur noch etwa fünf bis sieben Milliarden Jahre übrig, bevor sie zur Supernova wird. Also, ja, die Welt wird untergehen, aber egal wie hartnäckig die Mönche auch sein mögen, es wird lange vorher passieren, bevor sie alle 64 Scheiben auf Stift B bringen können.
Wenn du wissen willst wozu dieser Algorithmus sonst noch verwendet werden kann, ausser das Ende der Welt vorauszusagen, dann schau' mal auf Wikipedia nach. Dort findest du einige interessante Anwendungen.

Dieses Tutorial ist in Zusammenarbeit zwischen den Professoren Thomas Cormen und Devin Bock von Dartmouth Computer Sience und dem Khan Academy Computing Curiculum-Team entstanden und wurde von der KA Deutsch Community übersetzt. Das Tutorial ist unter der Lizenz CC-BY-NC-SA lizenziert.

Willst du an der Diskussion teilnehmen?

  • leaf green style-Avatar für Benutzer Karsten Schulz
    Fehler im 2. Abschnitt:
    Move disk 1 from peg A to peg B; move disk 2 from peg A to peg B; move disk 1 from peg B to peg C.)

    im 2. Schritt 'move disk 2 from peg A to peg B' sollte heissen: move disk 2 from peg A to peg C
    (1 Bewertung)
    Default Khan Academy avatar-Avatar für Benutzer
Verstehst du Englisch? Klick hier, um weitere Diskussionen auf der englischen Khan Academy Seite zu sehen.