15.09.2014 Aufrufe

Effizienz von Algorithmen - Technische Fakultät - Universität Bielefeld

Effizienz von Algorithmen - Technische Fakultät - Universität Bielefeld

Effizienz von Algorithmen - Technische Fakultät - Universität Bielefeld

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.

<strong>Effizienz</strong> <strong>von</strong> <strong>Algorithmen</strong> Asymptotische <strong>Effizienz</strong>-Analyse Exkurs Beispiel zur Effizienanalyse Ausn<br />

Zusammenfassung<br />

build :: [a] -> Tree a<br />

build [] = Nil<br />

build [a] = Leaf a<br />

build (as) = Br (build (take k as)) (build (drop k as))<br />

where k = length as ’div’ 2<br />

Die Neuberechnung der Listenlänge (length) kostet Θ(n log n)<br />

Schritte!<br />

87 / 130<br />

<strong>Effizienz</strong> <strong>von</strong> <strong>Algorithmen</strong> Asymptotische <strong>Effizienz</strong>-Analyse Exkurs Beispiel zur Effizienanalyse Ausn<br />

Zusammenfassung<br />

Eine Funktion mit zusätzlichem Parameter (⇒ Einbettung) hilft, die<br />

Neuberechnung der Länge vermeiden:<br />

build’’ :: [a] -> Tree a<br />

build’’ as = buildn (length as) as<br />

where buildn :: Int -> [a] -> Tree a<br />

buildn 1 (a:as) = Leaf a<br />

buildn n as = Br (buildn k (take k as))<br />

(buildn (n-k) (drop k as))<br />

where k = n ‘div‘ 2<br />

Jedoch: auch take und drop erzeugen Aufwand der Ordnung<br />

Θ(n · log n).<br />

88 / 130

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!