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

Ü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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!