28.02.2014 Aufrufe

Bahnplanungsframework für ein autonomes Fahrzeug - oops ...

Bahnplanungsframework für ein autonomes Fahrzeug - oops ...

Bahnplanungsframework für ein autonomes Fahrzeug - oops ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

72 Suchalgorithmen<br />

Das Ansehen des ersten Elements geschieht direkt in konstanter Zeit, denn es liegt an der Wurzel.<br />

Will man dieses Element gleichzeitig entfernen, so müssen die beiden Teilbäume gemischt (engl.<br />

merge) werden. Da<strong>für</strong> geht die rekursive Funktion bis zum tiefsten Element und mischt dabei jeweils<br />

die Teilbäume, was im middle case log 2 (n) Schritte braucht und im worst case, wenn der Baum<br />

entartet ist und als lineare Liste vorliegt, braucht dieser im Mittel n 2<br />

Schritte. Zum Einfügen wird das<br />

neue Element als Baum angesehen und muss mit dem bereits bestehenden Baum gemischt werden,<br />

was wiederum bis zum tiefsten Element rekursiv mischt und ähnlich zum Entfernen im middle case<br />

log 2 (n) Schritte braucht. Die Tabelle (Tab. 6.7) vergleicht die Komplexität <strong>ein</strong>es Skew Heaps mit der<br />

<strong>ein</strong>er naiven Liste.<br />

Skew Heap<br />

Naive Liste<br />

middle case worst case middle case worst case<br />

kl<strong>ein</strong>stes Element ansehen O(1) O(1) O(n) O(n)<br />

kl<strong>ein</strong>stes Element entfernen O(log 2 n) O(n) O(n) O(n)<br />

Element hinzufügen O(log 2 n) O(n) O(n) O(n)<br />

Beliebiges Element entfernen O(n) O(n) O(n) O(n)<br />

(Tab. 6.7): Vergleich Skew Heap mit <strong>ein</strong>er naiven Liste.<br />

6.3.2 SORTIERTE LISTE<br />

Eine weitere Möglichkeit bietet <strong>ein</strong>e Sortierte Liste. Dadurch dass nur <strong>ein</strong>zelne Elemente <strong>ein</strong>gefügt<br />

werden, kann <strong>ein</strong>e Liste leicht sortiert gehalten werden, wodurch sich das Entfernen des kl<strong>ein</strong>sten<br />

Elements auf <strong>ein</strong>en konstanten Zugriff minimiert. Es gibt verschiedene Möglichkeiten die Liste sortiert<br />

zu halten, neben dem naiven Ansatz den Einfügeplatz von Beginn der Liste iterativ zu suchen,<br />

kann das Prinzip „Devide & Conquer“ ausgenutzt werden. Man teilt die Liste in zwei Hälften und<br />

schaut sich das mittlere Element an, ist das <strong>ein</strong>zufügende Element größer als dieses, so kommt als<br />

Einfügestelle nur die hintere Hälfte in Frage, denn alle Elemente der ersten Hälfte sind kl<strong>ein</strong>er. Dies<br />

kann man rekursiv weiter fortführen, bis die zu untersuchende Liste k<strong>ein</strong> <strong>ein</strong>ziges Element mehr enthält,<br />

was die Einfügestelle <strong>für</strong> das Element ist. Der Vorteil zu dem zuvor genannten Skew Heap ist,<br />

dass die Binäre Suche immer ausgenutzt werden kann und es k<strong>ein</strong>en Baum gibt der entarten kann,<br />

sondern die Suche den Bereich immer teilt und somit auch im worst case die Suche log 2 (n) Schritte<br />

braucht (Tab. 6.8).<br />

Skew Heap<br />

Sortierte Liste<br />

middle case worst case middle case worst case<br />

kl<strong>ein</strong>stes Element ansehen O(1) O(1) O(1) O(1)<br />

kl<strong>ein</strong>stes Element entfernen O(log 2 n) O(n) O(1) O(1)<br />

Element hinzufügen O(log 2 n) O(n) O(log 2 n) O(log 2 n)<br />

Beliebiges Element entfernen O(n) O(n) O(log 2 n) O(log 2 n)<br />

(Tab. 6.8): Vergleich Skew Heap mit <strong>ein</strong>er sortierten Liste.<br />

Ein generischer Algorithmus zum Einfügen in <strong>ein</strong>e solche Liste könnte folgendermassen aussehen<br />

(Algorithmus 6.3):

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!