09. Kürzeste Wege und Sichtbarkeitsgraphen
09. Kürzeste Wege und Sichtbarkeitsgraphen
09. Kürzeste Wege und Sichtbarkeitsgraphen
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