Definition: Eine k-Struktur T für S besteht aus:
- 1.
- der Zahl
- 2.
- einer doppelt verketteten Liste T.list, die die Elemente von S in aufsteigender Reihenfolge enthält
- 3.
- einem Bitvektor mit falls einem Zeiger (Pointer) Vektor . Falls , dann zeigt auf i in der Liste aus 2.
- 4.
- einer k'-Struktur T.top und einem Feld von k''-Strukturen. Falls m=1, dann T.top, T.bottom und die zugehörigen k''-Strukturen leer, . , der Bitvektor wird nicht benötigt. Falls m>1, dann ist T.top eine k'-Struktur für die durch gegebene Menge, und für jedes ist eine k''-Struktur für die Menge
Beispiel:
if k=1 or then naive Suche else if or then return( Succ(x) gibt's nicht) else ; ; if and then return(+ Succ() else z':= Succ(, return() fi fi fi
Insert Operation:
Insert(x',T.top) , Insert(x'',T.bottom[x']) (nur ein nicht trivialer rekursiver Aufruf)
Delete
Operation:
Komplexität von
Delete
in k-Struktur:
Kosten der Initialisierung: Größe der Datenstruktur
Platzbedarf für k-Struktur: Sei S(k) der Platzbedarf für eine k-Struktur.
Dann gilt:
S(1)=c
S für
Wir ersetzen zur Vereinfachung:
S
Lemma:
S
Beweis:
Setze: S (besser: Zeige S funktioniert)
Für k=1 klar
Rekursionsschritt: