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 />
Überlegung: Die n Elemente der Eingabe werden dauernd in immer<br />
kleinere Listen gepackt, um am Ende in den Baum gehängt zu<br />
werden.<br />
Können wir diese Listen vermeiden, und jedes Element der Eingabe<br />
nur einmal “anfassen”, wenn es in den Baum gehängt wird?<br />
89 / 130<br />
<strong>Effizienz</strong> <strong>von</strong> <strong>Algorithmen</strong> Asymptotische <strong>Effizienz</strong>-Analyse Exkurs Beispiel zur Effizienanalyse Ausn<br />
Zusammenfassung<br />
Idee: Jeder Aufruf <strong>von</strong> build nimmt <strong>von</strong> der Liste was er braucht,<br />
und reicht den Rest unbesehen weiter:<br />
build’ :: [a] -> Tree a<br />
build’ as = fst (buildSplit (length as) as)<br />
buildSplit 1 (a:as) = (Leaf a, as)<br />
buildSplit n as = (Br l r, as’’)<br />
where k = n ‘div‘ 2<br />
(l,as’) = buildSplit k as<br />
(r,as’’) = buildSplit (n-k) as’<br />
90 / 130