11.10.2013 Aufrufe

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

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.

}<br />

double w = ((y3 + y4)/2 - (dx/2 * tanphi));<br />

if ((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) >2 ) {<br />

paintTree (g,x3,y3,v,w);<br />

paintTree (g,v,w,x4,y4);<br />

}<br />

5.3.2. Divide and Conquer<br />

Quick-Sort <strong>und</strong> Merge-Sort als typische Vertreter<br />

Teile <strong>und</strong> Herrsche; divide et impera<br />

Prinzip:<br />

5.3. Rekursive <strong>Algorithmen</strong><br />

rekursive Rückführung auf identisches Problem mit kleinerer Eingabemenge<br />

Divide-and-Conquer-<strong>Algorithmen</strong><br />

Gr<strong>und</strong>idee: Teile das gebene Problem in mehrere getrennte Teilprobleme auf, löse<br />

dese einzeln <strong>und</strong> setze die Lösungen des ursprünglchen Problems aus den Teillösungen<br />

zusammen.<br />

Wende dieselbe Technik auf jedes der Teilprobleme an, dann auf deren Teilprobleme<br />

usw., bis die Teilprobleme klein genug sind, daß man eine Lösung explizit<br />

angeben kann.<br />

Trachte danach, daß jedes Teilproblem von derselben Art ist wie das ursprüngliche<br />

Problem, so daß es mit demselben Algorithmus gelöst werden kann.<br />

Divide-and-Conquer-Muster<br />

procedure DIVANDCONQ (P: problem)<br />

begin<br />

...<br />

if [ P klein ]<br />

then [ explizite Lösung ]<br />

else [ Teile P auf in P1, ... Pk ];<br />

DIVANDCONQ ( P1 );<br />

...;<br />

DIVANDCONQ ( Pk );<br />

[ Setze Lösung für P aus Lösungen<br />

für P1,.., Pk zusammen ]<br />

fi<br />

end<br />

109

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!