28.06.2013 Aufrufe

09. Kürzeste Wege und Sichtbarkeitsgraphen

09. Kürzeste Wege und Sichtbarkeitsgraphen

09. Kürzeste Wege und Sichtbarkeitsgraphen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Vorlesung<br />

Geometrische Algorithmen<br />

<strong>Sichtbarkeitsgraphen</strong> <strong>und</strong><br />

kurzeste <strong>Wege</strong><br />

Sven Schuierer


Uberblick<br />

1. Kurzeste <strong>Wege</strong><br />

2. <strong>Sichtbarkeitsgraphen</strong><br />

3. Berechnung des <strong>Sichtbarkeitsgraphen</strong><br />

4. Kurzeste <strong>Wege</strong> fur polygonale Roboter<br />

1


1 Kurzeste <strong>Wege</strong><br />

Vorlesung Bewegungsplanung:<br />

Berechnung eines kollisionsfreien <strong>Wege</strong>s<br />

Andere Anforderungen:<br />

Geringe Lange<br />

Wenige Knicke<br />

Mindestkurvenradius<br />

Kurzeste <strong>Wege</strong> 2


Kurzeste <strong>Wege</strong> fur Punktroboter<br />

Gegeben:<br />

Menge H von disjunkten polygonalen<br />

oenen Hindernissen mit insgesamt n<br />

Kanten<br />

Startposition ps, Zielposition pe, beide in<br />

C free<br />

Gesucht:<br />

Der kurzeste Weg von ps nach pe in C free<br />

ps pe<br />

Kurzeste <strong>Wege</strong> 3<br />

ps<br />

pe


Eigenschaften kurzester <strong>Wege</strong><br />

Gummiband-Eigenschaft:<br />

ps<br />

Denition<br />

Sei W ein polygonaler Weg von ps nach pe.<br />

Dann heien die Ecken von W , die ungleich ps<br />

pe<br />

oder pe sind, innere Ecken von W .<br />

ps<br />

Kurzeste <strong>Wege</strong> 4<br />

pe


Eigenschaften kurzester <strong>Wege</strong><br />

Lemma<br />

Jeder kurzeste Weg W von ps nach pe<br />

zwischen einer Menge H von disjunkten<br />

polygonalen Hindernissen ist ein polygonaler<br />

Weg, dessen innere Ecken Ecken von H sind.<br />

Beweis: :<br />

Polygonalitat:<br />

Angenommen, W ist nicht polygonal<br />

Es gibt ein p 2 W im Inneren von C free ,<br />

so da kein Liniensegment in W p<br />

enthalt.<br />

Es gibt einen Kreis in C free , der p enthalt<br />

W<br />

Kurzeste <strong>Wege</strong> 5


Eigenschaften kurzester <strong>Wege</strong><br />

Beweis: : Fortsetzung<br />

Ecke v von W :<br />

Angenommen, v ist keine Ecke von H<br />

v ist nicht im Inneren von C free<br />

v ist im inneren einer Kante<br />

Es gibt einen Halbkreis in C free , der p<br />

enthalt<br />

W<br />

Kurzeste <strong>Wege</strong> 6


Eigenschaften kurzester <strong>Wege</strong><br />

Korollar<br />

Ein kurzester Weg von ps nach pe zwischen<br />

einer Menge H von disjunkten polygonalen<br />

Hindernissen besteht aus:<br />

1. Liniensegmenten von ps bzw. pe zu Ecken<br />

von H <strong>und</strong><br />

2. Liniensegmenten von einer Ecke von H zu<br />

einer anderen.<br />

Denition<br />

Zwei Punkte v1 <strong>und</strong> v2 heien gegenseitig<br />

sichtbar, falls das Liniensegment v1v2 nicht<br />

das Innere eines Hindernisses schneidet.<br />

Kurzeste <strong>Wege</strong> 7


2 <strong>Sichtbarkeitsgraphen</strong><br />

Sichtbarkeitsgraph G visH von H:<br />

Knoten V visH von G visH: Ecken von H<br />

Kanten E visH von G visH:<br />

v1;v22E visH, falls v1 <strong>und</strong> v2<br />

gegenseitig sichtbar<br />

sind.<br />

<strong>Sichtbarkeitsgraphen</strong> 8


<strong>Sichtbarkeitsgraphen</strong> <strong>und</strong> kurzeste<br />

<strong>Wege</strong><br />

Korollar<br />

Ein kurzester Weg von ps nach pe zwischen<br />

einer Menge H von disjunkten polygonalen<br />

Hindernissen besteht aus Kanten des<br />

<strong>Sichtbarkeitsgraphen</strong> G visH , wobei<br />

H = H fps;peg.<br />

ps<br />

<strong>Sichtbarkeitsgraphen</strong> 9<br />

pe


Berechnung kurzester <strong>Wege</strong><br />

Algorithmus kurzesterWeg<br />

Input: Eine Menge H von disjunkten<br />

polygonalen Hindernissen <strong>und</strong> zwei<br />

Punkte ps <strong>und</strong> pe in C free<br />

Output: Der kurzeste kollisionsfreie Weg von<br />

ps nach pe<br />

1 G vis SichtbarkeitsgraphH fps;peg<br />

2 Gewichte jede Kante u; v in G vis mit der<br />

euklidischen Distanz von u nach v<br />

3 Berechne einen kurzesten Weg W von ps<br />

nach pe in G vis mit dem Algorithmus von<br />

Dijkstra<br />

4 Gebe W zuruck<br />

Analyse<br />

jEvisj n + 2<br />

2<br />

= On 2 <br />

<strong>Sichtbarkeitsgraphen</strong> 10


3 Berechnung des<br />

<strong>Sichtbarkeitsgraphen</strong><br />

Naives Verfahren:<br />

Algorithmus Sichtbarkeitsgraph1<br />

Input: Eine Menge H von disjunkten<br />

polygonalen Hindernissen<br />

Output: Der Sichtbarkeitsgraph G visH von<br />

H<br />

1 G vis V vis; E vis mit<br />

2 V vis die Menge der Eckpunkte<br />

von H<br />

3 E vis ;<br />

4 for all u; v 2 V vis V vis do<br />

5 if uv schneidet kein Hindernis<br />

6 then fuge u; v zu E vis hinzu<br />

7 Gebe G vis = V vis; E vis zuruck<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 11


Berechnung des<br />

<strong>Sichtbarkeitsgraphen</strong><br />

Besserer Algorithmus:<br />

Algorithmus Sichtbarkeitsgraph2<br />

Input: Eine Menge H von disjunkten<br />

polygonalen Hindernissen<br />

Output: Der Sichtbarkeitsgraph G visH von<br />

H<br />

1 G vis V vis; E vis mit<br />

2 V vis die Menge der Eckpunkte<br />

von H<br />

3 E vis ;<br />

4 for all v 2 V vis do<br />

5 W SichtbareEckenv;H<br />

6 for all w 2 W do<br />

7 fuge die Kante v; w zu E vis hinzu<br />

8 Gebe G vis = V vis; E vis zuruck<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 12


Sichtbarkeitspolygon<br />

Denition<br />

Die Menge der Punkte, die von einem Punkte<br />

p der Ebene aus sichtbar sind, heit das<br />

Sichtbarkeitspolygon von p.<br />

Hier: von p aus sichtbare Ecken<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 13


Berechnung der sichtbaren Ecken<br />

Idee:<br />

Sortiere die Ecken zyklisch um p<br />

Betrachte die Ecken in dieser Reihenfolge<br />

mit Hilfe eines Scanstrahls <br />

Verwalte die Kanten, die von geschnitten<br />

werden, in einer Suchstruktur<br />

p<br />

T<br />

e3<br />

e1<br />

e3 e2 e4 e8<br />

e2<br />

e7<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 14<br />

e8<br />

e4<br />

e6<br />

e7<br />

e5<br />

e6


Rotationsweep Events<br />

p<br />

p<br />

p<br />

e1<br />

v<br />

e2<br />

e2<br />

e2<br />

v<br />

e1<br />

v 0<br />

v<br />

e3<br />

e1<br />

sichtbarv<br />

deletee1<br />

inserte2<br />

sichtbarv<br />

sichtbarv<br />

inserte1<br />

0 inserte3<br />

sichtbarv<br />

deletee1<br />

deletee2<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 15


Sichtbare Ecken<br />

Algorithmus SichtbareEcken<br />

Input: Menge H von Polygonen <strong>und</strong> Punkt<br />

p nicht im Innern eines Polygons<br />

Output: Die von p aus sichtbaren Ecken in H<br />

1 Sortiere die Ecken v nach winkelp; v im<br />

Fall gleicher Winkel nach Abstand zu p<br />

v1;:::;vn sortierte Reihenfolge<br />

2 Sei der horizontale Strahl beginnend bei p<br />

3 Finde alle Kanten e die schneiden <strong>und</strong><br />

speichere sie in einem Suchbaum T<br />

4 W ;<br />

5 for i 1 to n do<br />

6 if sichtbarv i<br />

7 then W W fv ig<br />

8 fuge die zu v i inzidenten Kanten<br />

links von in T ein<br />

9 entferne die zu v i inzidenten<br />

Kanten rechts von aus T<br />

10 return W<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 16


Sichtbarkeit von Ecken<br />

Sichtbarkeit von v i ist abhangig von:<br />

Suchstruktur T<br />

Ecke v i1<br />

Verschiedene Falle: v i1 ist sichtbar<br />

p<br />

p<br />

v i1<br />

v i<br />

v i1 p<br />

v i<br />

p<br />

v i1<br />

v i1<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 17<br />

v i<br />

v i


Sichtbarkeit von Ecken<br />

Algorithmus sichtbar<br />

1 if pv i schneidet das Polygon von v i lokal<br />

bei v i<br />

2 then return false<br />

3 if i = 1 or v i1 62 pv i<br />

4 then e linkeste Kante in T<br />

5 if e existiert nicht or<br />

v i auf oder links von e<br />

6 then return true<br />

7 else return false<br />

= i 6= 1 and v i1 2 pv i =<br />

8 if v i1 ist nicht sichtbar<br />

9 then return false<br />

= v i1 ist sichtbar =<br />

10 Suche Kante e in T , die v i1v i schneidet<br />

11 if e existiert<br />

12 then return false<br />

13 else return true<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 18


Beispiel<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 19


Analyse von SichtbareEcken<br />

Sortieren:<br />

Aufbau von T :<br />

sichtbarv i:<br />

Update von T :<br />

Satz<br />

Der Sichtbarkeitsgraph einer Menge H von<br />

disjunkten polygonalen Hindernissen mit n<br />

Kanten kann in Zeit On 2 log n berechnet<br />

werden.<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> 20


4 Kurzeste <strong>Wege</strong> fur polygonale<br />

Roboter<br />

Vorlesung Bewegungsplanung:<br />

Translatorisches Bewegungsplanungproblem<br />

fur polygonalen Roboter R<br />

zwischen Hindernissen fP1;:::;P tg<br />

entspricht<br />

Bewegungsplanungsproblem fur Punkt-<br />

roboter zwischen Hindernissen<br />

fR P1;:::;R P tg.<br />

Kurzeste <strong>Wege</strong> fur polygonale Roboter 21


Kurzeste <strong>Wege</strong> fur polygonale<br />

Roboter<br />

Kurzeste <strong>Wege</strong> fur polygonale Roboter 22


Analyse<br />

Berechnung von C free :<br />

Komplexitat von C free :<br />

Berechnung des <strong>Sichtbarkeitsgraphen</strong> von<br />

C free :<br />

Satz<br />

Sei R ein konvexer Roboter mit konstant<br />

vielen Kanten, der translatorische Bewegungen<br />

zwischen einer Menge H von disjunkten<br />

Hindernissen mit insgesamt n Kanten ausfuhrt.<br />

Dann kann ein kurzester kollisionsfreier Weg<br />

von einer Startposition zu einer Endposition in<br />

Zeit On 2 log n berechnet werden.<br />

Kurzeste <strong>Wege</strong> fur polygonale Roboter 23

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!