Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Erstellen von Raumgrundrissen mit Vorlagen
Seminar über Algorithmen
Fast Fourier Transformation
Christian Scheideler SS 2009
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Eine dynamische Menge, die diese Operationen unterstützt,
Polynomial Root Isolation
Steigung m berechnen Man kann die Steigung auch berechnen,
Simulation komplexer technischer Anlagen
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Schnelle Matrizenoperationen von Christian Büttner
Vom graphischen Differenzieren
WR + WS ZEIGEN Neues aus der Mathematik.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Das Halteproblem. Gibt es einen Algorithmus, mit dem man für jedes beliebig vorgegebene Programm R und für jede beliebig vorgegebene Eingabe E entscheiden.
Algorithmentheorie 04 –Hashing
Dynamische Programmierung (2) Matrixkettenprodukt
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Bestimmung des Next-Arrays im KMP-Algorithmus
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Geometrisches Divide and Conquer
Kapitel 1 Das Schubfachprinzip
Kapitel 6 Differenzierbarkeit. Kapitel 6: Differenzierbarkeit © Beutelspacher Juni 2005 Seite 2 Inhalt 6.1 Die Definition 6.2 Die Eigenschaften 6.3 Extremwerte.
Kapitel 4 Geometrische Abbildungen
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
Selbstverständnis der Mathematik
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PG 520 Intelligence Service – gezielte Informationen aus dem Internet
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Heute: Scherenzange zeichnen
Wie macht man ein Sudoku? Transformations-Methode:
Kakuro Regeln und Strategien
Diskrete Mathe 9 Vorlesung 9 SS 2001
Materialien zum Informatikunterricht (Pohlig-Häberle)
Effiziente Algorithmen
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
Effiziente Algorithmen
Powerpoint 2010 Start Funker Panorama: Zuschauer auf der Elbbrücke beim Weinfest 2011 in Meißen.
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
§3 Allgemeine lineare Gleichungssysteme
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung
Gleichungen und Gleichungssysteme
Analyse von Ablaufdiagrammen
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
A ungerade B D C gerade Umstapeln Vier Ablageplätze A, B, C, D für Zahlenkarten 1 bis 8 sind wie abgebildet angeordnet Die Karten sollen.
ENDLICHE KÖRPER RSA – VERFAHREN.
Disziplin 3: Cycle. Man geht aus von zwei 3er-Stapeln und einem 6er-Stapel
Das Traveling Salesman Problem (TSP)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Vom graphischen Differenzieren
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Institut für Informationssysteme Technische Universität Braunschweig Institut für Informationssysteme Technische Universität Braunschweig Verdrängung von.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
 Präsentation transkript:

Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 08.04.2017 Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und Interaktionen + Turm von Hanoi Prof. Dr.-Ing. R.J. Scherer Bauinformatik Grundlagen 1

Bewegungsanforderungen Welche Objekte können sich bewegen? Alle phys. Objekte? Fast alle Bewegungsfähigkeit ist eine Objekteigenschaft, die den Verhalten zugeordnet ist. Das End- und Zwischenergebnis einer Bewegung bzw. des Bewegungsablaufs ist der aktuelle Ort des Objektes und somit der Objekteigenschaft Zustand zugeordnet. Art der Bewegung: Fahrzeuge: fahren (werden durch den Fahrer bewegt) Maschine: werden durch den Nutzer bewegt, werden angeliefert Handreäte: werden durch den Nutzer bewegt, werden angeliefert Material: wird angeliefert, wird umgesetzt, wird eingebaut Einrichtungselement: wird angeliefert, umgesetzt, abtransportiert Baugrube: Aushub wird abtransportiert, zwischengelagert, wieder teilweise eingebaut Bauobjekt: keine Bewegung, aber es entsteht Bauplatz: keine Bewegung 08.04.2017

Weg-Zeit-Tabelle Bewegungsabläufe können mit Hilfe von Weg-Zeit-Tabellen beschrieben werden. Dabei werden: Startzeitpunkt ta Beschleunigung a Winkelbeschleunigung b Endzeitpunkt, optional te Endzeitpunkt muss auf Konsistenz geprüft werden, da redundant Sollte kein Endzeitpunkt gegeben sein, gelten die Werte bis zum nächsten Startzeitpunkt in der nächsten Zeile der Tabelle. Um die Konsistenz der Geschwindigkeit zu wahren, wird diese aus Zeit und Beschleunigung berechnet. Objekt: Fahrtabelle ta a b te 1,0 0,5 0,2 2,5 2,0 0,7 0,1 3,2 08.04.2017

Weg-Zeit-Diagramm Für jedes bewegte Objekte kann der Inhalt der Weg-Zeit-Tabelle auch als Diagramm dargestellt werden. Das Diagramm ist ein eigenständiges Objekt. Es ist mit Hilfe des Beobachtermusters an die Tabelle bzw das phys. Objekt (LKW) geknüpft. LKW 08.04.2017

DATEN 08.04.2017

Bewegung Bewegung kann ausgedrückt/modelliert werden durch (nur in der Ebene betrachtet) Polarkoordinaten: Richtung α Weg (aktueller Ort) w Geschwindigkeit v Beschleunigung a Richtungsgeschwindigkeit β Anmerkung: für die Lehre vereinfacht, mathematisch, fahrtechnisch nicht ganz korrekt. Objekt: Bewegungsablauf y w, v, a α, β x 08.04.2017 6

Bewegung Die fünf aufgeführten Größen Richtung Richtung α Weg (aktueller Ort) w Geschwindigkeit v Beschleunigung a Richtungsgeschwindigkeit β sind redundant, d.h. das Problem ist überbestimmt. Eine unabhängige Anzahl von Größen wäre: Richtungsgeschwindigkeit β Beschleunigung a Alle anderen drei Größen sind abgeleitete Größen. Die aktuelle Geschwindigkeit und der Weg ergeben sich durch Integration der Beschleunigung, der Winkel aus der Integration der Winkeländerung. Objekt: Bewegungsgrößen 08.04.2017 7

Bewegung: Anfangswerte, Kontrollwerte Sonderfall: Startwerte/Anfangswerte. Die Simulation beginnt nicht vom absoluten Ruhezustand , sondern in einem Momentanzustand. Daher sind Anfangswerte, die Integrationskonstanten, zu berücksichtigen. Zeitpunkt t Ort(Weg) w Geschwindigkeit v Beschleunigung a Richtung α Winkelgeschwindigkeit β Problem: Infolge der begrenzten Rechengenauigkeit und der Approximation der Integration infolge von diskreten Werten, ergeben sich erhebliche, da akkumulierende Fehler. (z.B. würde der LKW immer weiterfahren) Strategie: Regelmäßige Kontrollwerte für Geschwindigkeit, Weg und Winkel mit Neustart der Integration. Kontrollwerte können mit Anfangswerten zusammengefasst werden. Objekt: Bewegungsanfangswerte Objekt: Kontrollwerte 08.04.2017 8

Bewegungsrandbedingung Neben den Anfangswertproblem (Anfangwerte) der Bewegungs-gleichung sind noch weitere Randbedingungen zu berücksichtigen, die sich aus den Fahreigenschaften/Bewegungseigenschaften ergeben. So kann z.B. ein Fahrzeug nicht eine beliebig große Winkeländerung ausführen. Diese Kurvenfahrt ist von der Geschwindigkeit und der Beschleunigung abhängig, usw. Allgemein ausgedrückt ergibt sich für alle fünf Größen Maximalwerte (Obergrenzen) Minimalwerte (Untergrenzen) Die Max/Min-Werte können von den anderen vier Größen abhängig sein. Z.B. max. β = f(a, v), d.h. die max. Winkeländerung, Lenkradeinschlag ist wegen der Fliehkraft von der aktuellen Geschwindigkeit und Beschleunigung abhängig. Aus der Winkeländerung ergibt sich der Kurvenradius. Objekt: Fahreigenschaften Tabelle + Methoden 08.04.2017

Verknüpfung der Bewegungsinformation Zustand Verhalten Bewegungsablauf Weg-Zeit-Diagramm Bewegungsablauf a, β = f(t) Anfangs-und Kontrollwerte w, v, α = f(t) min/max Bewegungsgrößen = fixe Werte = evtl. gekoppelt

Datenqualität der Bewegungsinformation Zustand Verhalten Bewegungsablauf Weg-Zeit-Diagramm w, v, α = f(t) Bewegungsablauf a, β = f(t) = Liste (t) Anfangs-und Kontrollwerte w, v, α = f(t) = Liste (t) = Liste (t) min/max Bewegungsgrößen = fixe Werte = evtl. gekoppelt = stat. Liste + Methoden

Objektmodell des Bewegungsablaufs Phys. Objekt Bewegungsablauf Dyn. Liste Bewegungsgrößen Dyn. Liste Bewegung Anfangs- und Kontrollwerte Stat. Liste Bewegungsrand-bedingungen Methode a -ß 08.04.2017

Das Objekt als Datenstruktur Aufbau eines physikalischen Objektes Im weiteren nennen wir Dinge der physikalischen Welt physikalische Objekte. Es gibt weitere Objekte wie Prozessobjekte, Steuerungsobjekte, Darstellungsobjekte, Programmobjekte usw. Funktionalität Verhalten: Aktion-Reaktion, (z.B. Ausweichmanöver), weitere Methoden (Beschleunigung-Zeit-Diagramm) Zustand (z.B. aktueller Ort, Weg-Zeit-Diagramm beladen, naß, Batteriestand) phys. Objekt Relationen => Topologien Geometrie Visualisierung (z.B. Symbol) Informationsweitergabe

Klassenstruktur der Baustelle Baumaterial Baugeräte Bauobjekte Einrichtungs- elemente

ALGORITHMEN 08.04.2017 15

Kollisionskontrolle bei fahrenden Objekten Bisher sind wir davon ausgegangen, dass die Objekte nur in diskreten Kontrollzuständen, den diskreten Schritten Dt der Simulation, zu untersuchen sind. Tatsächlich bewegen sie sich kontinuierlich und da wir einen exakten Abstand (d=0 oder d=x) untersuchen wollen, müssen wir die Veränderung zwischen den Kontrollzuständen mit einbeziehen (quasi interpolieren). Strategie: durch Sicherheitsabstand in quasi statischen Zustand abbilden Strategie1: der Sicherheitsabstand ist abhängig von der Bewegung während Dt Strategie2: bei identifizierter Kollision berücksichtigen wir, ob sich eines der beiden Fahrzeuge evtl. aus der Kollisionszone schon wieder entfernt hätte.

Sicherheitsabstand Nehmen wir an das Fahrzeug bewegt sich nur gerade aus, d.h. keine Winkeländerung, so ergibt sich Zur Untersuchung der Kollision verwenden wir wieder ein maximal umschreibendes Rechteck. Dieses ist das Fahrzeug + die Bewegung, die es während dem Simulationszeitschritt Dt ausführt. 08.04.2017

Sicherheitsabstand Im Fall einer beliebigen Bewegungsrichtung, d.h. einschließlich einer Richtungsänderung während eines Simulationsschrittes Dt können wir wieder ein maximal mögliches Rechteck abschätzen, das sich aus drei Komponenten zusammensetzt: max. Bewegung in aktuelle Fahrtrichtung max. Bewegung quer zur aktuellen Fahrtrichtung max. Ausschwenken Genau wäre es wenn Radstand, Radlenkfähigkeit, ect. In die Berechnung des Ausschwenken mit eingingen 2 3 1 08.04.2017

Ausweichen Fall: Strategie/Regel: Fall 1: Entgegenkommen 08.04.2017 Ausweichen Fall: Strategie/Regel: Fall 1: Entgegenkommen Wer weicht aus? Jeder zur Hälfte nach rechts Fall 2: Überholen Der Überholende weicht aus Fall 3: Kreuzen Rechts vor Links, der Linke stoppt Bei einem Winkel von kleiner 1,0 Grad wird das Kreuzen als Fall 1 bzw. 2 behandelt Beachte: winkelbedingten größeren Sicherheitsabstand Fall 4: Schleifender Schnitt 2) 1) α2 α1 08.04.2017 Bauinformatik Grundlagen

Algorithmus für Fall 2 : Überholen 4 5 6 3 7 2 8 O1 O2 O2 3 1 5 Algorithmus: Problem: vorgegebener Abstand zweier Fahrzeuge bei dem der Überholvorgang einsetzt Regel: Abstand = (v1-v2)/10 Positive Winkeländerung: Regel: Winkelgeschwindigkeit β = f(v1) Beenden bei a) max Winkel 30° oder b)Ausweichbreite (3) erreicht (Schräge) Geradeausfahrt: Regel: nur wenn Ausweichbreite noch nicht erreicht ist Negative Winkeländerung: Regel: Winkelgeschwindigkeit β = f(v1) Beenden bei Winkel 0° Geradausfahrt: Regel: Beenden, wenn der Abstand größer ist als (v1-v2)/5 bis 8) analog 2) -4) mit inversen Winkeländerungen 08.04.2017 20

Bewegungsablauf Wenn Abstand zu klein Ja Nein Ändere Winkel eines der LKWs stufenweise um 3 ° Ändere Winkel eines der LKWs stufenweise um 3 ° zurück Solange Abstand zu gering Fahre auf der Gegenspur Ändere Winkel eines der LKWs stufenweise um - 3 ° Ändere Winkel eines der LKWs stufenweise um - 3 ° zurück 08.04.2017

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 22

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 23

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 24

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 25

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 26

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 27

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 28

Turm von Hanoi Stellen Sie sich drei Lagerplätze A, B und C, auf die mehrere verschieden große Scheiben gelegt werden vor. Zu Beginn liegen alle Scheiben auf Platz A, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ihre Aufgabe ist es, den kompletten Scheiben-Stapel von A nach C zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Platzes auf einen der beiden anderen Plätze gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt die Scheiben auf jedem Feld der Größe nach geordnet. Platz A Platz B Platz C 08.04.2017 29

Turm von Hanoi Geschichte Vermutlich wurde das Spiel 1883 vom französischen Mathematiker Edouard Lucas erfunden. Er dachte sich dazu die Geschichte aus, dass indische Mönche im großen Tempel zu Benares, im Mittelpunkt der Welt, einen Turm aus 64 goldenen Scheiben versetzen müssten, und wenn ihnen das gelungen sei, wäre das Ende der Welt gekommen. In der Geschichte lösen die Mönche das Problem folgendermaßen: Der älteste Mönch erhält die Aufgabe, den Turm aus 64 Scheiben zu versetzen. Da er die komplexe Aufgabe nicht bewältigen kann, gibt er dem zweitältesten Mönch die Aufgabe, die oberen 63 Scheiben auf einen Hilfsplatz zu versetzen. Er selbst (der Älteste) würde dann die große letzte Scheibe zum Ziel bringen. Dann könnte der Zweitälteste wieder die 63 Scheiben vom Hilfsplatz zum Ziel bringen. Der zweitälteste Mönch fühlt sich der Aufgabe ebenfalls nicht gewachsen. So gibt er dem drittältesten Mönch den Auftrag, die oberen 62 Scheiben zu transportieren, und zwar auf den endgültigen Platz. Er selbst (der Zweitälteste) würde dann die zweitletzte Scheibe an den Hilfsplatz bringen. Schließlich würde er wieder den Drittältesten beauftragen, die 62 Scheiben vom Zielfeld zum Hilfsplatz zu schaffen. Dies setzt sich nun bis zum 64. Mönch (dem Jüngsten) fort, der die obenauf liegende kleinste Scheibe alleine verschieben kann. Da es 64 Mönche im Kloster gibt und alle viel Zeit haben, können sie die Aufgabe in endlicher, wenn auch sehr langer Zeit erledigen.  Lösung durch Rekursion 08.04.2017 30

Turm von Hanoi Rekursiver Algorithmus Der Algorithmus besteht im Wesentlichen aus einer Funktion bewege, die vier Parameter besitzt: Mit i ist die Anzahl der zu verschiebenden Scheiben bezeichnet, mit a der Stab von dem verschoben werden soll, mit b der Stab, der als Zwischenziel dient und mit c der Stab, auf den die Scheiben verschoben werden sollen. Zur Lösung des eigentlichen Problems wird bewege mit i=n, a=A, b=B und c=C aufgerufen. Die Funktion bewege löst ein Teilproblem dadurch, dass es dieses in drei einfachere Probleme aufteilt, sofern der zu verschiebende Turm mindestens die Höhe 1 besitzt. Andernfalls ist die Funktion bewege untätig. Die drei Teilprobleme werden sequentiell ausgeführt: Zunächst wird der um eine Scheibe kleinere Turm von a auf das Zwischenziel b verschoben, indem sich die Funktion bewege selbst mit den entsprechenden Parametern aufruft. Die Stäbe b und c tauschen dabei ihre Rollen. Anschließend wird die einzig verbliebene Scheibe von a nach c verschoben. Zum Abschluss wird der zuvor auf b verschobene Turm auf seinen Bestimmungsort c verschoben, wobei hier a und b die Rollen tauschen. funktion bewege (Zahl i, Stab a, Stab b, Stab c) { falls (i > 0) { bewege(i-1, a, c, b); verschiebe oberste Scheibe von a nach c; bewege(i-1, b, a, c); } 08.04.2017 31

Turm von Hanoi Iterativer Algorithmus Es gibt einen iterativen Algorithmus beschrieben, der die gleiche Zugfolge generiert. Bei diesem ist die Korrektheit zwar nicht sofort erkennbar, die Handlungsweise aber ohne das Konzept der Rekursion verständlich. Es sei vorausgesetzt, dass die Stäbe A, B und C bei gerader Scheibenanzahl im Uhrzeigersinn auf einem Kreis angeordnet sind, sonst entgegen dem Uhrzeigersinn. Die Scheiben befinden sich zum Anfang alle auf Stab A, am Ende auf Stab C. Solange sich auf wenigstens einem der beiden Stäbe A und B Scheiben befinden, wird: erst die kleinste Scheibe (S1) im Uhrzeigersinn und anschließend, sofern dies möglich ist, eine von S1 verschiedene Scheibe verschoben. Als Pseudocode notiert ergibt sich also folgender Algorithmus: solange (Stab A oder B enthalten Scheiben) { Verschiebe S1 im Uhrzeigersinn um einen Platz; falls (eine von S1 verschiedene Scheibe ist verschiebbar) Verschiebe eine von S1 verschiedene Scheibe; } 08.04.2017 32

Turm von Hanoi Optimalität der Algorithmen Es gibt für jede Scheibenanzahl nur einen optimalen Lösungsweg für das Problem, also nur eine kürzeste Zugfolge. Diese wird von beiden Algorithmen durchlaufen. In diesem Sinne sind die Algorithmen also optimal. Die Anzahl der Züge der optimalen Lösung ist 2n − 1. Dies führt zu einer faktischen Unlösbarkeit des Problems. Unter der Annahme, dass die Mönche eine Scheibe pro Sekunde verschieben können und dass sie bis zur Vollendung der Aufgabe kontinuierlich und ohne Pause durcharbeiten, lässt sich die Dauer zur Lösung des Problems wie in nebenstehender Tabelle abschätzen. Diese zeigt, dass bereits für relativ kleine Türme der Aufwand zu deren Verschiebung so groß wäre, dass die Aufgabe praktisch nicht mehr zu bewältigen ist, insbesondere wenn man bedenkt, dass unser Universum schätzungsweise gerade mal 13,5 Milliarden Jahre alt ist, für n=64 die Aufgabe aber bereits 584 Milliarden Jahre beanspruchen würde. Auch mit einem Computer ist diese Aufgabe nicht lösbar, was nützt es wenn dieser 1000 Schritte pro Sekunde abarbeiten kann, auch das würde Jahrmillionen dauern. Anzahl Scheiben Benötigte Zeit 5 31 Sekunden 10 17 Minuten 20 12 Tage 30 34 Jahre 40 348 Jahrhunderte 60 36,5 Milliarden Jahre 64 584 Milliarden Jahre 08.04.2017 33