33
TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und Interaktionen + Turm von Hanoi Prof. Dr.-Ing. R.J. Scherer

TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

Embed Size (px)

Citation preview

Page 1: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Bauinformatik GrundlagenAlgorithmen und Datenstrukturen

in Java2. Semester5. Vorlesung

Bewegungsabläufe und Interaktionen+ Turm von Hanoi

Prof. Dr.-Ing. R.J. Scherer

Page 2: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

BewegungsanforderungenWelche 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

11.04.23 2

Page 3: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 3

ta a b te

1,0 0,5 0,2 2,5

2,0 0,7 0,1 3,2

Objekt: Fahrtabelle

Page 4: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 4

-505

10152025

0 10 20 30 40

Beschleinigung

GeschwindigkeitLKW

Page 5: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

DATEN

11.04.23 5

Page 6: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

BewegungBewegung kann ausgedrückt/modelliert werden durch (nur in der Ebene betrachtet) Polarkoordinaten:

1. Richtung α2. Weg (aktueller Ort) w3. Geschwindigkeit v4. Beschleunigung a5. Richtungsgeschwindigkeit β

Anmerkung: für die Lehre vereinfacht, mathematisch, fahrtechnisch nicht ganz korrekt.

11.04.23 6

w, v, a

x

y

α, β

Objekt: Bewegungsablauf

Page 7: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

BewegungDie fünf aufgeführten Größen Richtung1. Richtung α2.Weg (aktueller Ort) w3. Geschwindigkeit v4. Beschleunigung a5. Richtungsgeschwindigkeit βsind redundant, d.h. das Problem ist überbestimmt.

Eine unabhängige Anzahl von Größen wäre:1. Richtungsgeschwindigkeit β2. 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.

11.04.23 7

y

x

y x

Objekt: Bewegungsgrößen

Page 8: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Bewegung: Anfangswerte, KontrollwerteSonderfall: Startwerte/Anfangswerte. Die Simulation beginnt nicht vom absoluten Ruhezustand , sondern in einem Momentanzustand. Daher sind Anfangswerte, die Integrationskonstanten, zu berücksichtigen.

Zeitpunkt tOrt(Weg) wGeschwindigkeit vBeschleunigung aRichtung α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.

Zeitpunkt tOrt(Weg) wGeschwindigkeit vBeschleunigung a

Kontrollwerte können mit Anfangswerten zusammengefasst werden.

11.04.23 8

Objekt: Bewegungsanfangswerte

Objekt: Kontrollwerte

Page 9: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

BewegungsrandbedingungNeben 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: FahreigenschaftenTabelle + Methoden

11.04.23 9

Page 10: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Verknüpfung der Bewegungsinformation

BewegungsablaufWeg-Zeit-Diagramm

Bewegungsablaufa, β = f(t)

min/maxBewegungsgrößen= fixe Werte= evtl. gekoppelt

Zustand Verhalten

Anfangs-und Kontrollwertew, v, α = f(t)

Page 11: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Datenqualität der Bewegungsinformation

BewegungsablaufWeg-Zeit-Diagrammw, v, α = f(t)

Bewegungsablaufa, β = f(t)

min/maxBewegungsgrößen= fixe Werte= evtl. gekoppelt

Zustand Verhalten

Anfangs-und Kontrollwertew, v, α = f(t)

= Liste (t)

= stat. Liste

= Liste (t)

+ Methoden

= Liste (t)

Page 12: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Objektmodell des Bewegungsablaufs

11.04.23 12

Bewegung

Bewegungsablauf

Bewegungsgrößen

Bewegungsrand-bedingungen

Dyn. Liste

Dyn. Liste

Methode a -ß

Anfangs- und Kontrollwerte Stat. Liste

Phys. Objekt

Page 13: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik BI 1-1 Folie-Nr.: 13

Das Objekt als DatenstrukturAufbau eines physikalischen Objektes

Funktionalität

phys. Objekt

Verhalten: Aktion-Reaktion, (z.B. Ausweichmanöver), weitere Methoden (Beschleunigung-Zeit-Diagramm)

Zustand (z.B. aktueller Ort, Weg-Zeit-Diagrammbeladen, naß, Batteriestand)

Geometrie

Relationen => Topologien

Visualisierung(z.B. Symbol)

Informationsweitergabe

Im weiteren nennen wir Dinge der physikalischen Welt physikalische Objekte. Es gibt weitere Objekte wie Prozessobjekte, Steuerungsobjekte, Darstellungsobjekte, Programmobjekte usw.

Page 14: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Klassenstruktur der Baustelle

Baumaterial

Baugeräte

Bauobjekte

Einrichtungs-elemente

(ABS)Physical_ObjectZustand Repraesentation Koord_Trans_2DBezugsystem

Geom_Repr Topol_Repr Symbol_Repr

1

*Objektzustand

Bauplatz

Darstellungsformen S[1:?]

Bauobjekt

Einrichtungselement

Baugeraet

Baumaterial

Personal

enthaelt_Bauobjekt

Einrichtungselementebeinhaltet S[1:?]

enthaelt_Baustellenelemente

Geraeteparkenthaelt_Baugeraete beinhaltet S[1:?]

Baugrube Bauwerk

1

LagerplatzBaustrasse

Wendeplatz

Abladeplatz

Kranschienen

1

Baucontainer

LKWBaggerKran

1

StB_Balken

Stahltraeger

I_Traeger Rohr_Traeger

Ziegelstein Zementsack

Fertigteil Baustoff

Deckenplatte

1

11

1

Ist noch zu entscheiden und entsprechend zu erweitern

Bauteambenoetigte_Arbeitskraefte

besteht_aus S[1:?]

*beinhaltet S[1:?]

AuslegerKatze

Schaufel

hat hat

hat

1

*transportiert [1:?]

Ist noch zu entscheiden und entsprechend zu erweitern

REAL

REAL

REAL

X

Y

Winkel

Zelle

hat S[1:?]

Optionale ContainerklassenKönnen für Gruppierungen bzw. Gruppenfunktionen benutzt werden.Falls nicht nötig gehen die Relationen von Baustelle direkt an die enspr. Elemente

Eigenschaften sind da noch zu überlegen

Aushub

Aushubszustand

Gilt nicht für Bagger

verbunden_mit S[1:?]

hat Ladeplatform

ist beladen mit S[1:?]

(ABS)Symbol 1 (ABS)Symbol 2

1Bewegung

*Bewegungsablauf

HandgeraetFahrzeug

1

SaegeFraeseBohrer

1

usw.

Page 15: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

ALGORITHMEN

11.04.23 15

Page 16: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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 abbildenStrategie1: der Sicherheitsabstand ist abhängig von der Bewegung während DtStrategie2: bei identifizierter Kollision berücksichtigen wir, ob

sich eines der beiden Fahrzeuge evtl. aus der Kollisionszone schon wieder entfernt hätte.

Page 17: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 17

t t

tvtadta 2

2

1

Page 18: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

SicherheitsabstandIm 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:

11.04.23 18

2

3

1

1) max. Bewegung in aktuelle Fahrtrichtung

2) max. Bewegung quer zur aktuellen Fahrtrichtung

3) max. Ausschwenken

Genau wäre es wenn Radstand, Radlenkfähigkeit, ect. In die Berechnung des Ausschwenken mit eingingen

dta

dta

),min( LängeBreite

Page 19: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Ausweichen

11.04.23 19

Fall 1: Entgegenkommen

Jeder zur Hälfte nach rechtsWer weicht aus?

Fall 2: Überholen

Der Überholende weicht aus

Fall 3: KreuzenRechts vor Links, der Linke stoppt

Fall 4: Schleifender Schnitt1)2)

α1α2

Bei einem Winkel von kleiner 1,0 Grad wird das Kreuzen als Fall 1 bzw. 2 behandeltBeachte: winkelbedingten größeren Sicherheitsabstand

Fall: Strategie/Regel:

Page 20: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Algorithmus für Fall 2 : Überholen

Algorithmus:

1) Problem: vorgegebener Abstand zweier Fahrzeuge bei dem der Überholvorgang einsetzt

Regel: Abstand = (v1-v2)/10

2) Positive Winkeländerung:Regel: Winkelgeschwindigkeit β = f(v1)

Beenden bei a) max Winkel 30° oder b)Ausweichbreite (3) erreicht

3) (Schräge) Geradeausfahrt:Regel: nur wenn Ausweichbreite noch nicht erreicht ist

4) Negative Winkeländerung:Regel: Winkelgeschwindigkeit β = f(v1) Beenden bei Winkel 0°

5) Geradausfahrt:Regel: Beenden, wenn der Abstand größer ist als (v1-v2)/5

6) bis 8) analog 2) -4) mit inversen Winkeländerungen11.04.23 20

O1 O2 O21

23

4 5 6

78 3

5

Page 21: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Bewegungsablauf

11.04.23 21

Wenn Abstand zu kleinJa Nein

Ändere Winkel eines der LKWs stufenweise um 3 °Ändere Winkel eines der LKWs stufenweise um 3 ° zurückSolange 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

Page 22: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 22

Platz A Platz B Platz C

Page 23: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Turm von Hanoi

11.04.23 23

Platz A Platz B Platz C

• 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.

Page 24: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 24

Platz A Platz B Platz C

Page 25: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 25

Platz A Platz B Platz C

Page 26: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 26

Platz A Platz B Platz C

Page 27: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 27

Platz A Platz B Platz C

Page 28: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 28

Platz A Platz B Platz C

Page 29: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

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.

11.04.23 29

Platz A Platz B Platz C

Page 30: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Turm von HanoiGeschichteVermutlich 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

11.04.23 30

Page 31: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Turm von HanoiRekursiver 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.

11.04.23 31

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); }}

Page 32: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Turm von HanoiIterativer 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:

11.04.23 32

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; }

Page 33: TU Dresden - Institut für Bauinformatik Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 5. Vorlesung Bewegungsabläufe und

TU Dresden - Institut für Bauinformatik

Turm von HanoiOptimalitä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.

11.04.23 33

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