• Keine Ergebnisse gefunden

Datenstruktur Horizontb¨ aume

N/A
N/A
Protected

Academic year: 2022

Aktie "Datenstruktur Horizontb¨ aume"

Copied!
184
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Offline Bewegungsplanung: Horizontb¨ aume

Elmar Langetepe University of Bonn

(2)

Datenstruktur Horizontb¨ aume

5 5 4 3 2 1

S

Oberer Horizontbaum

S

Unterer Horizontbaum

1 2

3 4

(3)

Datenstruktur Horizontb¨ aume

• F¨ur Pseudogerade mit Ordnung

5 5 4 3 2 1

S

Oberer Horizontbaum

S

Unterer Horizontbaum

1 2

3 4

(4)

Datenstruktur Horizontb¨ aume

• F¨ur Pseudogerade mit Ordnung

• Oberer und Unterer Horizontbaum gegeben

5 5 4 3 2 1

S

Oberer Horizontbaum

S

Unterer Horizontbaum

1 2

3 4

(5)

Datenstruktur Horizontb¨ aume

• F¨ur Pseudogerade mit Ordnung

• Oberer und Unterer Horizontbaum gegeben

• Hebe ¨uber n¨achsten erlaubten SP

5 5 4 3 2 1

S

Oberer Horizontbaum

S

Unterer Horizontbaum

1 2

3 4

(6)

Datenstruktur Horizontb¨ aume

• F¨ur Pseudogerade mit Ordnung

• Oberer und Unterer Horizontbaum gegeben

• Hebe ¨uber n¨achsten erlaubten SP

• Aktualisiere die B¨aume

5 5 4 3 2 1

S

Oberer Horizontbaum

S

Unterer Horizontbaum

1 2

3 4

(7)

Kosten Aktualisierung T

o

(T

u

)

(8)

Kosten Aktualisierung T

o

(T

u

)

1. N¨achster Knoten v!

g2 g1

v

g3

(9)

Kosten Aktualisierung T

o

(T

u

)

1. N¨achster Knoten v! 2. Dr¨uberheben

S

g2 g1

v

g3

Bleibt!

Schnittpunkt!

Neu!

(10)

Kosten Aktualisierung T

o

(T

u

)

1. N¨achster Knoten v! 2. Dr¨uberheben

3. Schnittpunkt mit Kette darunter bestimmen

S

g2 g1

v

g3

Bleibt!

Schnittpunkt!

Neu!

Durchlaufen!

(11)

Kosten Aktualisierung T

o

(T

u

)

1. N¨achster Knoten v! 2. Dr¨uberheben

3. Schnittpunkt mit Kette darunter bestimmen 4. Einmal Kanten einer Zelle durchlaufen

S

g2 g1

v

g3

Bleibt!

Schnittpunkt!

Neu!

Durchlaufen!

(12)

Kosten Aktualisierung T

o

(T

u

)

1. N¨achster Knoten v! 2. Dr¨uberheben

3. Schnittpunkt mit Kette darunter bestimmen 4. Einmal Kanten einer Zelle durchlaufen

5. Nicht alle auf dem Rand!

S

g2 g1

v

g3

Bleibt!

Schnittpunkt!

Neu!

Durchlaufen!

gl

Zelle Z

(13)

Kosten Aktualisierung T

o

(T

u

)

1. N¨achster Knoten v! 2. Dr¨uberheben

3. Schnittpunkt mit Kette darunter bestimmen 4. Einmal Kanten einer Zelle durchlaufen

5. Nicht alle auf dem Rand!

S

g2 g1

v

g3

Bleibt!

Schnittpunkt!

Neu!

Durchlaufen!

gl

Zelle Z

(14)

Gesamtkosten: Aktualisierung T

o

(T

u

)

(15)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

S1

(16)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

S1

(17)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

S1 1x v

1x v

(18)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

S2

(19)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

S2

(20)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

S2

1x w

(21)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

1x w

S3

(22)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

1x w

S3

(23)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

1x w

1x x S3

(24)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

1x w

1x x S3

1x x

(25)

Gesamtkosten: Aktualisierung T

o

(T

u

)

1. Geschickte Zuordnung

2. Gesamtz¨ahlweise: Pro Knoten alle Kanten einer Zelle 3. P

Zelle Z(Kanten Z) × (Knoten Z)

g1

x w v v

S

gk g3

g2 Schnittpunkt!

Neu!

Bleibt!

1x v 1x v

1x w

1x x S3

1x x

(26)

Andere Z¨ ahlweise, bessere Zuordnung!

X Zelle Z

(Kanten Z) × (Knoten Z) ≤

2 X

Gerade g

X

g schneidet Z

(Kanten Z)

g

(27)

Komplexit¨ at Zone einer Geraden g

g

(28)

Komplexit¨ at Zone einer Geraden g

X

g schneidet Z

(Kanten Z)

g

(29)

Komplexit¨ at Zone einer Geraden g

X

g schneidet Z

(Kanten Z)

n-mal diese Kosten, jede Gerade

g

(30)

Zone(l) in O(n)

(31)

Zone(l) in O(n)

• n nicht-senkrechte Geraden, Horizontale l

(32)

Zone(l) in O(n)

• n nicht-senkrechte Geraden, Horizontale l

• Def. 1.3: Zone(l) := {Kanten der Zelle Z|Z ∩ l 6= ∅}

(33)

Zone(l) in O(n)

• n nicht-senkrechte Geraden, Horizontale l

• Def. 1.3: Zone(l) := {Kanten der Zelle Z|Z ∩ l 6= ∅}

• Theorem 1.4: Komplexit¨at von Zone(l) liegt in O(n)

(34)

Zone(l) in O(n)

• n nicht-senkrechte Geraden, Horizontale l

• Def. 1.3: Zone(l) := {Kanten der Zelle Z|Z ∩ l 6= ∅}

• Theorem 1.4: Komplexit¨at von Zone(l) liegt in O(n)

1 l

2 3 4

5 6

7 8

(35)

Induktiv linke Kanten z¨ ahlen

(36)

Induktiv linke Kanten z¨ ahlen

l

(37)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

(38)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

(39)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

(40)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

(41)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

l neu (am weitesten rechts)

(42)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

l neu (am weitesten rechts)

w v

(43)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

l neu (am weitesten rechts)

w

v +1

(44)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

l neu (am weitesten rechts)

w

v +1

+1

(45)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

l neu (am weitesten rechts)

w

v +1

+1

+1

(46)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

l neu (am weitesten rechts)

w

v +1

+1

+1

<= 5 x (n-1) + 3 Linke Kanten

(47)

Induktiv linke Kanten z¨ ahlen

Linke Kanten einer Zelle! l

l Ind. Anf.

<= 5 x (1) Linke Kanten

l Fall 1) Einfacher Schnitt

Ind. Schluss (neue Gerade ganz rechts)

l neu (am weitesten rechts)

w

v +1

+1

+1

<= 5 x (n-1) + 3 Linke Kanten

(48)

Induktiv linke Kanten z¨ ahlen

(49)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

(50)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts)

(51)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts) v

w

(52)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts) v

w

+1

(53)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts) v

w

+1

+1

(54)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts) v

w

+1

+1

+1

(55)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts) v

w

+1

+1

+1 +2

(56)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts) v

w

+1

+1

+1 +2

<= 5 x (n-1) + 5 Linke Kanten

(57)

Induktiv linke Kanten z¨ ahlen

Ind. Schluss (WC)

l Fall 2) Schnitt mit einer Kante

l neu (am weitesten rechts) v

w

+1

+1

+1 +2

<= 5 x (n-1) + 5 Linke Kanten

(58)

Induktiv linke Kanten z¨ ahlen

(59)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

(60)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

l neu (am weitesten rechts)

(61)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

l neu (am weitesten rechts) v

w

(62)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

l neu (am weitesten rechts) v

w

+1

(63)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

l neu (am weitesten rechts) v

w

+1

+1

(64)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

l neu (am weitesten rechts) v

w

+1

+1

+2

(65)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

l neu (am weitesten rechts) v

w

+1

+1

+2

<= 5 x (n-1) + 4 Linke Kanten

(66)

Induktiv linke Kanten z¨ ahlen

l Fall 3) Schnitt mit mahr als einer Kante

Ind. Schluss (WC)

l neu (am weitesten rechts) v

w

+1

+1

+2

<= 5 x (n-1) + 4 Linke Kanten

Insgesamt nicht mehr als 5n linke Kanten!

(67)

Algorithmus Bearbeitungsreihenfolge

(68)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume:

(69)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume: O(n2)

(70)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume: O(n2)

• Kandidaten ausw¨ahlen, Liste aktualisieren (Horizontbaum):

(71)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume: O(n2)

• Kandidaten ausw¨ahlen, Liste aktualisieren (Horizontbaum): O(1)

(72)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume: O(n2)

• Kandidaten ausw¨ahlen, Liste aktualisieren (Horizontbaum): O(1)

• Horizontb¨aume aktualisieren:

(73)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume: O(n2)

• Kandidaten ausw¨ahlen, Liste aktualisieren (Horizontbaum): O(1)

• Horizontb¨aume aktualisieren: O(n2)

(74)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume: O(n2)

• Kandidaten ausw¨ahlen, Liste aktualisieren (Horizontbaum): O(1)

• Horizontb¨aume aktualisieren: O(n2)

• Reihenfolge des ¨Uberschreitens: Bearbeitungsreihenfolge,

(75)

Algorithmus Bearbeitungsreihenfolge

• Init.: Nachbarliste, Kandidatenliste, Horizontb¨aume: O(n2)

• Kandidaten ausw¨ahlen, Liste aktualisieren (Horizontbaum): O(1)

• Horizontb¨aume aktualisieren: O(n2)

• Reihenfolge des ¨Uberschreitens: Bearbeitungsreihenfolge, O(n2)

(76)

Zusammenfassung Gesamtalgorithmus

• Horizontb¨aume aktualisieren: O(n2)

• Topol. Sweep: O(n2)

• Bearbeitungsreihenfolge: O(n2)

• Sweep Sichtbarkeitsgraph: O(n2)

• Theorem 1.5:: Sichtbarkeitsgraph von n Liniensegmenten in O(n2) berechenbar. Speicherbedarf O(n)

(77)

K¨ urzeste Pfade in gewichteten Graph (Dijkstra, 1959)

Gegeben: Graph G = (V, E) zusammenh¨angend, |V | = n, Kantengewichtung g : E −→ R≥0, Knoten s, t ∈ V .

Gesucht: Kantenfolge von s nach t mit minimalem Gesamtgewicht.

Solange A 6= ∅:

• Entnehme A ein p mit minimalen d(p).

• W := W ∪ {p}.

• F¨ur alle direkten Nachbarn q von p in W C: – d(q) := min

n

d(q), d(p) + g(p, q) o – Wenn q /∈ A dann A := A ∪ {q}.

(78)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

(79)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W,

(80)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

(81)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

(82)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

(83)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal

(84)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

(85)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

(86)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

• Beste Wahl: Fibbonacci Heaps

(87)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

• Beste Wahl: Fibbonacci Heaps

• 1) in O(1),

(88)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

• Beste Wahl: Fibbonacci Heaps

• 1) in O(1), 2) in O(log n),

(89)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

• Beste Wahl: Fibbonacci Heaps

• 1) in O(1), 2) in O(log n), 3) in O(1)

(90)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

• Beste Wahl: Fibbonacci Heaps

• 1) in O(1), 2) in O(log n), 3) in O(1)

• Laufzeit: O(n log n + m),

(91)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

• Beste Wahl: Fibbonacci Heaps

• 1) in O(1), 2) in O(log n), 3) in O(1)

• Laufzeit: O(n log n + m), Optimal?

(92)

Dijkstra auf (V, E ), |E | = m ∈ O(n

2

), |V | = n)

• Welle W, Ausl¨aufer A

• Priority-Queue f¨ur A mit |A| ∈ O(n)

• DS f¨ur A:

1. Entnahme Min: n − mal 2. Entferne Min: n − mal

3. Anpassen Schl¨ussel: m − mal

• Beste Wahl: Fibbonacci Heaps

• 1) in O(1), 2) in O(log n), 3) in O(1)

• Laufzeit: O(n log n + m), Optimal?

• Andere DS, z.B. Baum: O((n + m) log n), 3) in O(log n)

(93)

Ergebnis!!

(94)

Ergebnis!!

Theorem: K¨urzester Weg in polygonaler Szene P mit |P| = n von s nach t kann in Zeit O(n2) berechnet werden.

(95)

Ergebnis!!

Theorem: K¨urzester Weg in polygonaler Szene P mit |P| = n von s nach t kann in Zeit O(n2) berechnet werden.

Beweis:

(96)

Ergebnis!!

Theorem: K¨urzester Weg in polygonaler Szene P mit |P| = n von s nach t kann in Zeit O(n2) berechnet werden.

Beweis: Sichtbarbeitsgraph O(n2), Dijkstra: O(n log n + n2) ∈ O(n2)

(97)

Untere Schranke!

(98)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

(99)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

(100)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

• Ω(n log n)

x3x2 x1 x5 x4

(101)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

• Ω(n log n)

x3x2 x1 x5 x4

(xi, xi)

(102)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

• Ω(n log n)

x3x2 x1 x5 x4

(xi, xi)

(103)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

• Ω(n log n)

x3x2 x1 x5 x4

(xi, xi)

s

(104)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

• Ω(n log n)

x3x2 x1 x5 x4

(xi, xi)

s t

(105)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

• Ω(n log n)

x3x2 x1 x5 x4

(xi, xi)

s t

L = (x3, x2, x1, x5, x4)

(106)

Untere Schranke!

• Sortieren reduzieren auf k¨urzesten Weg berechnen!

• x1, x2, . . . , xn in O(n) auf polygonale Szene

• Ω(n log n)

x3x2 x1 x5 x4

(xi, xi)

s t

L = (x3, x2, x1, x5, x4)

(107)

Andere Ans¨ atze

(108)

Andere Ans¨ atze

1. Sichtbarkeitsgraph, output-sensitiv: O(n log n + k)

(109)

Andere Ans¨ atze

1. Sichtbarkeitsgraph, output-sensitiv: O(n log n + k) 2. Shortest Path Map Verfahren

(110)

Andere Ans¨ atze

1. Sichtbarkeitsgraph, output-sensitiv: O(n log n + k) 2. Shortest Path Map Verfahren

• Locus approach:

(111)

Andere Ans¨ atze

1. Sichtbarkeitsgraph, output-sensitiv: O(n log n + k) 2. Shortest Path Map Verfahren

• Locus approach: Klassen gleicher Antwort!

(112)

Andere Ans¨ atze

1. Sichtbarkeitsgraph, output-sensitiv: O(n log n + k) 2. Shortest Path Map Verfahren

• Locus approach: Klassen gleicher Antwort!

• Fester Startpunkt s

(113)

Andere Ans¨ atze

1. Sichtbarkeitsgraph, output-sensitiv: O(n log n + k) 2. Shortest Path Map Verfahren

• Locus approach: Klassen gleicher Antwort!

• Fester Startpunkt s

• Ebene einteilen: Zellen kombinatorisch gleich k¨urzeste Wege

(114)

Andere Ans¨ atze

1. Sichtbarkeitsgraph, output-sensitiv: O(n log n + k) 2. Shortest Path Map Verfahren

• Locus approach: Klassen gleicher Antwort!

• Fester Startpunkt s

• Ebene einteilen: Zellen kombinatorisch gleich k¨urzeste Wege

• Zelle ist Klasse mit gleicher Antwort

(115)

Shortest Path Map Theorem 1.9

(116)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

(117)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra,

(118)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

(119)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n),

(120)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

(121)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

s

(122)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

s

(123)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

s t1

(124)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

s t2

(125)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

t3 s

(126)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

s

t4

(127)

Shortest Path Map Theorem 1.9

• Bisektoren: Hyperbelst¨ucke, Geraden

• Berechnung: Continous Dijkstra, Simultan wachsende Kreise

• Laufzeit: Ber. O(n log n), Query O(log n)/O(log n + k)

s

t5

(128)

Shortest Path in einfachen Polygonen

(129)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P,

(130)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P, DS: Seq. Knoten/Kanten, CCW-order

p[1]

p[2]

p[0]

(131)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P, DS: Seq. Knoten/Kanten, CCW-order

• Start A

p[1]

p[2]

p[0] A

(132)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P, DS: Seq. Knoten/Kanten, CCW-order

• Start A und Ziel B

p[1]

p[2]

p[0] A

B

(133)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P, DS: Seq. Knoten/Kanten, CCW-order

• Start A und Ziel B

• Berechne k¨urzesten Weg von A nach B innerhalb P

p[1]

p[2]

p[0] A

B

(134)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P, DS: Seq. Knoten/Kanten, CCW-order

• Start A und Ziel B

• Berechne k¨urzesten Weg von A nach B innerhalb P

• Polygonale Kette mit Knoten aus P

p[1]

p[2]

p[0] A

B

(135)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P, DS: Seq. Knoten/Kanten, CCW-order

• Start A und Ziel B

• Berechne k¨urzesten Weg von A nach B innerhalb P

• Polygonale Kette mit Knoten aus P/L¨ange des Pfades

p[1]

p[2]

p[0] A

B

Length: 42

(136)

Shortest Path in einfachen Polygonen

• Einfaches Polygon P, DS: Seq. Knoten/Kanten, CCW-order

• Start A und Ziel B

• Berechne k¨urzesten Weg von A nach B innerhalb P

• Polygonale Kette mit Knoten aus P/L¨ange des Pfades

• Algorithmus: Ω(n), |P| = n

p[1]

p[2]

p[0] A

B

Length: 42

(137)

Einfache, effiziente L¨ osung (Lee/Preparata)

(138)

Einfache, effiziente L¨ osung (Lee/Preparata)

A B

(139)

Einfache, effiziente L¨ osung (Lee/Preparata)

• Triangulation von P: Graph T, DS: DCEL, Adjacency list

A B

(140)

Einfache, effiziente L¨ osung (Lee/Preparata)

• Triangulation von P: Graph T, DS: DCEL, Adjacency list

• Dualer Graph: D(T) (Tree),

A B

(141)

Einfache, effiziente L¨ osung (Lee/Preparata)

• Triangulation von P: Graph T, DS: DCEL, Adjacency list

• Dualer Graph: D(T) (Tree), Depth First Search (DFS) on D(T)

A B

(142)

Einfache, effiziente L¨ osung (Lee/Preparata)

• Triangulation von P: Graph T, DS: DCEL, Adjacency list

• Dualer Graph: D(T) (Tree), Depth First Search (DFS) on D(T)

• Subpolygon P 0, Kette von Dreiecken/Diagonalen

A B

A B

(143)

Einfache, effiziente L¨ osung (Lee/Preparata)

• Triangulation von P: Graph T, DS: DCEL, Adjacency list

• Dualer Graph: D(T) (Tree), Depth First Search (DFS) on D(T)

• Subpolygon P 0, Kette von Dreiecken/Diagonalen

A B

(144)

Shortest Path in P

0

(145)

Shortest Path in P

0

A B

(146)

Shortest Path in P

0

• Kette von of Dreiecken/Diagonalen (Data structure)

A B

(147)

Shortest Path in P

0

• Kette von of Dreiecken/Diagonalen (Data structure)

• Induktiv: Shortest paths zu den Endpunkten der Diagonalen

A B

(148)

Shortest Path in P

0

• Kette von of Dreiecken/Diagonalen (Data structure)

• Induktiv: Shortest paths zu den Endpunkten der Diagonalen

• Ind. Anf,

r1

l1

d1

A B

(149)

Shortest Path in P

0

• Kette von of Dreiecken/Diagonalen (Data structure)

• Induktiv: Shortest paths zu den Endpunkten der Diagonalen

• Ind. Anf, Ind. Schritt,

d10 l10

A B

(150)

Shortest Path in P

0

• Kette von of Dreiecken/Diagonalen (Data structure)

• Induktiv: Shortest paths zu den Endpunkten der Diagonalen

• Ind. Anf, Ind. Schritt,

d11 l11

r11

A B

(151)

Shortest Path in P

0

• Kette von of Dreiecken/Diagonalen (Data structure)

• Induktiv: Shortest paths zu den Endpunkten der Diagonalen

• Ind. Anf, Ind. Schritt, Letzte Diagonale⇒ Ergebnis,

d16

A B

(152)

Shortest Path in P

0

• Kette von of Dreiecken/Diagonalen (Data structure)

• Induktiv: Shortest paths zu den Endpunkten der Diagonalen

• Ind. Anf, Ind. Schritt, Letzte Diagonale⇒ Ergebnis, Laufzeit?

d16

A B

(153)

Zusammenfassung: Alg. 1.4

(154)

Zusammenfassung: Alg. 1.4

• Triangulation von P:

(155)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

(156)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation:

(157)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

(158)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen:

(159)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

(160)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

• Berechne P0:

(161)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

• Berechne P0: O(n) Zeit und Platz

(162)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

• Berechne P0: O(n) Zeit und Platz

• Berechne Shortest Path zu End-Diagonale, induktiv:

(163)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

• Berechne P0: O(n) Zeit und Platz

• Berechne Shortest Path zu End-Diagonale, induktiv: O(n)??

(164)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

• Berechne P0: O(n) Zeit und Platz

• Berechne Shortest Path zu End-Diagonale, induktiv: O(n)??

• Shortest Path von A nach B innerhalb P in O(n) Zeit und Platz!

(165)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

• Berechne P0: O(n) Zeit und Platz

• Berechne Shortest Path zu End-Diagonale, induktiv: O(n)??

• Shortest Path von A nach B innerhalb P in O(n) Zeit und Platz!

optimal!!

(166)

Zusammenfassung: Alg. 1.4

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS auf Dualen Graphen: O(n) Zeit

• Berechne P0: O(n) Zeit und Platz

• Berechne Shortest Path zu End-Diagonale, induktiv: O(n)??

• Shortest Path von A nach B innerhalb P in O(n) Zeit und Platz!

optimal!!

• Theorem 1.11

(167)

Verbleibt: Indukiver Schritt!

(168)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(169)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(170)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(171)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(172)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(173)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(174)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(175)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(176)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(177)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(178)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(179)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(180)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(181)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest!

r[2]

l[4]

l[5]

r[4]

s

r[3]

vr

l[1]

di

A l[3]

l[2]

di+1

(182)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest! N¨achster Trichter!

r[1]

s

vr

l[1]

di

A l[3]

l[2]

di+1

(183)

Verbleibt: Indukiver Schritt!

• Trichter Situation! DS: Zwei Ketten/Shortest Path!

• N¨achste Diagonale! Tangententest! N¨achster Trichter!

• Insgesamt, nicht mehr O(n) Tests!!

r[1]

s

vr

l[1]

di

A l[3]

l[2]

di+1

Rand von P

(184)

Zusammenfassung: Lee/Preparata: Shortest Path innerhalb P

• Triangulation von P: O(n) Zeit und Platz

• Dualer Graph der Triangulation: O(n) Zeit und Platz

• DFS im Dualen Graphen: O(n) Zeit

• Berechnung P0: O(n) Zeit und Platz

• Berechnung Shortest Path f¨ur End-Diagonale, induktiv: O(n)

• Shortest Path von A nach B in P in O(n) Zeit und Platz

• Optimal f¨ur einzelne Anfrage!!

• Theorem 1.11

Referenzen

ÄHNLICHE DOKUMENTE

 läuft, wenn die Reduktion und die Oxidation räumlich getrennt stattfinden.  läuft, wenn die e- von der Anode zu der Kathode

Für die Beurteilung von abweichenden Situationen wird angenommen, dass sich die Störwirkung in Abhängigkeit der Anzahl Stop &amp; Go Ereignisse verändert. Bei einer minimal

Hätte die 5 nicht gleich beim ersten Mal die &#34;28&#34; einfach weiterleiten sollen, so dass Knoten 28 die Nachricht nicht erneut über die Strecke 28 → 5 senden muss..

Knoten 5 weiss nicht, ob die 28 die gegenwärtige Phase tatsächlich überlebt - dann wäre die Nachricht &#34;28&#34; fälschlicherweise weitergeleitet worden.. Zeitkomplexität

„ Siehe Bild: Für jeden Knoten sind alle Daten links kleiner und alle Daten rechts größer als die Daten des

Es wird gezeigt werden, dass stets durch die extrafokale Korrelation eine Verringe- rung der Standardabweichung bei der Bestimmung der Kantenpositionen – immer ver- glichen

● Je positiver Standardpotential, umso höher Tendenz zur Elektronenaufnahme. Z

[r]