Lösen Sie den Turm von Hanoi Probelem in Python

Manav Narula 10 Oktober 2023
Lösen Sie den Turm von Hanoi Probelem in Python

Das Tower of Hanoi-Problem ist ein grundlegendes mathematisches Rätsel, das neuen Programmierern zu Beginn vorgestellt wird, damit sie ihr Problemlösungsquiz erweitern können.

Das Problem ist einfach und umfasst drei Stäbe. Ein Stab enthält mehrere Scheiben in absteigender Reihenfolge, wobei die größte Scheibe unten und die kleinste oben liegt. Wir müssen dies mit dem zweiten Stab von Stab eins auf Stab drei übertragen.

Wir müssen bestimmte Regeln beachten. Wir können nur eine Scheibe gleichzeitig bewegen und müssen die Scheibe am oberen Ende der Stange nehmen. Außerdem können wir keine größere Festplatte auf eine kleinere legen.
Vor diesem Hintergrund müssen wir dieses Problem lösen und die Gesamtzahl der Züge berechnen, die erforderlich sind, um es zu lösen.

In diesem Tutorial stellen wir Ihnen vor, wie Sie dieses Problem lösen können. Wir werden eine rekursive Methode verwenden, um das Tower of Hanoi-Problem in Python zu lösen.

Diese Methode erstellt eine Funktion, die sich basierend auf einigen Bedingungen rekursiv aufruft, um das Problem des Turms von Hanoi zu lösen.
Die Logik dafür implementieren wir im folgenden Code.

def ToH(n, A, B, C):
    if n == 1:
        print("Disk 1 from", A, "to", B)
        return
    ToH(n - 1, A, C, B)
    print("Disk", n, "from", A, "to", B)
    ToH(n - 1, C, B, A)


ToH(3, "A", "B", "C")

Ausgabe:

Disk 1 from A to B
Disk 2 from A to C
Disk 1 from B to C
Disk 3 from A to B
Disk 1 from C to A
Disk 2 from C to B
Disk 1 from A to B

Im obigen Beispiel bewegen wir drei Scheiben von Stab A zu Stab B mit Stab C.

Wie Sie sehen, beträgt die Gesamtzahl der Bewegungen im obigen Beispiel 7. Bei n Platten sind die Gesamtbewegungen mit dieser Methode immer gleich 2^n -1.

Im Laufe der Zeit sind einige andere Lösungen entstanden, um das Problem des Turms von Hanoi mithilfe von Stapeln zu lösen. Es wird jedoch nicht empfohlen, sie zu verwenden, da solche Methoden in Bezug auf Zeitaufwand und Geschwindigkeit sehr ineffizient sind.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn