+1 Daumen
2k Aufrufe

man muss häufiger mal zeigen, dass ein entwickelter Algorithmus eine bestimmte Laufzeit hat, wobei ich im Allgemeinfall keine Probleme habe.


Problematisch wird es bei mir, sobald ich zeigen soll, dass die Laufzeit z.b. O(log n) oder ähnliches, was mit dem Logarithmus zu tun hat.


Ich soll z.B. zeigen, dass die Suche nach einem Element in einem beliebigen B-Baum der Ordnung t mit n Elementen mit binärer Suche eine Laufzeit von O(log t * log n) hat.

Wie gehe ich an so etwas heran? Bei quadratischer Laufzeit etc. ist es sinnvoll die Schleifendurchläufe zu betrachten. Hier macht das jedoch nicht so viel Sinn.


Liebe Grüße,
Marvin

Avatar von 8,7 k

Mir fällt beim Logarithmus als Erstes die harmonische Reihe ein. Habe aber keine Erfahrung mit Laufzeiten. Deshalb nur ein Kommentar.

1 Antwort

+1 Daumen

Durchschnittlicher Verzweigungsgrad bei Ordnung t ist 3/2 t. Mit binärer Suche (die Kinder eines Knotens sind sortiert mit wahlfreiem Zugriff) kann man in jedem Knoten in O(log2(3/2 t)) das passende Kind auswählen. Verwende Logarithmusgesetze um zu zeigen dass O(log2(3/2 t)) = O(log2(t)) ist.

Ein B-Baum der Ordnung t und Höhe h kann n = th Einträge speichern (mit jeder Ebene ver-t-facht sich die Anzahl der Knoten). Daraus ergibt sich h = logt(n). Um von der Wurzel zum Blatt zu gelangen müssen also logt(n) Ebenen durchwandert werden.

Da auf jeder Ebene log2(t) Vergleiche notwendig sind, und logt(n) Ebenen existieren, sind insgesamt log2(t)·logt(n) Vergleiche notwendig.

Also hat Suche in einem B-Baum die Komplexität O(log(t)·log(n)).

Bonusfrage 1. Wohin ist beim Übergang von log2(t)·logt(n) Vergleichen zur Komplexität O(log(t)·log(n)) die Basis der Logarithmen verschwunden?

Bonusfrage 2. Warum werden B-Bäume überhaupt betrachtet? log(t) wird umso größer, je größer t wird. Warum wird nicht einfach ein Binärbaum verwendet, um log(t) möglichst klein zu halten?

Avatar von 107 k 🚀

Dankesehr.

1.   log2(t)·logt(n)/ (log(t)·log(n) ) = log2(t)/log(t) = 1 / log(2) < unendlich  => Laufzeit O(log(t)·log(n))
Beim grün markierten weiß ich aber leider nicht,wie die Potenzgesetze dort angewendet werden. Ich denke mal das ist was simples, was ich gerade nicht sehe.

2. Das hat denke ich mal was mit dem Speicher zu tun. Wenn man viele Einträge pro Knoten hat und mit sehr großen Mengen arbeitet, liegt so immer nur ein Teil auf dem Hauptspeicher. Liege ich da richtig?

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community