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
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