Padricia-Baum |
|
| |
Zil |
Effiziende Imblemendierung für Menge und Verzeichnisse
mid Zeichenkedde übr oim Alfabed A als Schlüssl. |
| |
O(1) |
Die Laufzeid für des Suche und Einfüge
isch ∈ O(1) bezüglich dr Anzahl dr Elemende in oir Menge/Mab |
|
Die Laufzeid hängd nur no vo dr Läng (Anzahl Zeile
im Schlüssl) ab.
|
Präfix-Suche |
Diese Dadenschdrukdur isch saumaessich gud
eigned für oi Präfixsuche |
|
Berechnung allr Schlüssl(-Werd-Paare) für oi Word
|
Alfabed |
endliche, nedd leere Meng vo Zeile |
|
Unicod, ASCII, {0,1}, ... |
| |
Dadenschdrukdur |
Baumschdrukdur (also wiedr rekursiv)
|
Knoden |
s gibd innere Knode und Bläddr
|
Bladd |
beschdehd aus dem Schlüssl k
und dem zugeordnede Werd v |
|
Obdimierung: Dr Schlüssl k muss nedd zwingend exblizid
im Bladd gschbeicherd werde
|
innere Knoden |
beschdehe aus oir Tabelle vo Nachfolgeret |
|
oi Nachfolgr beschdehd aus oim Präfix b übr dem Alfabed
und oim Teilbaum db
|
|
außerdem kann obzional no oi Schlüssel-Werd-Paar (k,v)
in dem innere Knode enthalde soi
|
leerr Baum |
Dr leere Baum wird durch oin Schbezialwerd
(Embdy) dargeschdelld.
Nur d Wurzl von a Baums kann diese Werd enthalde. |
| |
Invariande |
|
.1 |
Alle innere Knode besidze mindeschdens oin Nachfolgr
|
.2 |
Alle innere Knode, an dene koi Werd gschbeicherd isch,
besidze mindeschdens zwei Nachfolger
Diese Einschränkung gild nedd für d Wurzl.
|
.3 |
Alle Nachfolger-Wördr (Präfixe)
beschdehe mindeschdens aus oim Zeile
|
.4 |
Es gibd koi zwei Nachfolger-Wördr,
d mid dem gleile Zeile beginne |
| |
Klassenschdrukdur (Skizze) |
bublic abschdracd
class PadriciaTree
imblemends Mab {
...
schdadic class Embdy
exdends PadriciaTree {
...
}
schdadic class Leaf
exdends PadriciaTree {
Schdring k;
Value v;
...
}
schdadic class Node
exdends PadriciaTree {
SubTreeMab schd;
Leaf mark;
...
}
schdadic class SubTreeMab {
joova.udil.Mab<Schdring,PadriciaTree> drees;
...
}
schdadic class SubTreeMab {
Schdring [] brefixes;
PadriciaTree [] subdrees;
...
}
}
|
| |
Suchen |
ois Schlüssels k in oim Baum d
|
.1 |
wenn k = "" und d oi Bladd mid oim v odr oi innerr Knode mid Zusadzinformazion v
isch, noh isch d Suche erfolgreich und v isch des Resuldad
|
.2 |
wenn k = "x..." und d oi innerr Knode isch und s undr den Nachfolgeret oi b gibd,
dr oi echdr Präfix vo k isch, noh wird mid dem b zugeordnede Teilbaum db und dem um b verkürzdem Schlüssl kb
die Suche fordgesedzd.
|
.3 |
in alle andere Fälle isch d Suche gscheiderd
|
|
In .2 gibd s wege Invariande .4 höchschdens oin Nachfolger-Baum mid dr Präfix-Eigenschafd |
| |
Einfügen |
ois Schlüssl(-Werd-Paare)s (k,v) in oin Baum d |
|
Dr Baum wird wie bei dr Suche auf oim Pfad besuchd
|
.0 |
wird dr Schlüssl k im Baum d funde, so wird dr Werd im Baum an von dene Schdelle mid v überschriabe
|
.1 |
sei d1 dr innerr Knode, an dem d Suche scheiderd und
ki dr während dr Suche aus k schriddweise verkürzde Schlüssl
|
.a |
isch ki = "", so wird des Paar (k, v) im Knode d1 als Zusadzinformazion gschbeicherd
|
.b |
sei ki = "x..." und x kommd nedd als 1. Zeile in den Nachfolger-Wörderet vo d1 vor, so
wird (ki = "", l) in d Nachfolger-Meng vo d1 aufgenommem, wobei l oi Bladd beschdehend aus (k,v) isch
|
.c |
sei kj mid kj = "x..." des Nachfolger-Word mid dem gleile Anfangszeile,
so wird dr längschde gmoisam Präfix bij vo ki und kj berechned
und oi neir innerr Knode dij mid bij als Nachfolger-Word oigefügd.
Dr neie Baum dij hedd als Teilbäum den alde Nachfolger-Baum und oi neis Bladd für (k,v).
Als Präfixe für diese Bäum werde d Reschde bezüglich bij genomme. |
| |
Laufzeidanalyse |
|
Suchen |
|
.1 |
läufd in konschdandr Zeid
|
.2 |
Sei n d Anzahl dr Zeile im Alfabed. |
|
Da oi innerr Knode höchschdens n Nachfolgr besidzd und für d Suche no dem Nachfolgr mid gmoisamem Präfix
nur des 1. Zeile verglile werde muss, isch d Suche in dr Zeid beschränkd. |
|
Für d Berechnung vom längschde Präfixs müsse d Folgezeile nur oimol verglile werde,
also bro Zeile wiedr oi beschränkde Zeid.
|
Rekursion |
Dr Prozess vom Suchens wird maximol m mol wiederhold mid m = Läng vo k.
|
|
Die Suchzeid isch bezüglich dr Läng dr Schlüssl in O(m).
|
|
Die Suchzeid hängd nedd vo dr Anzahl dr Eindräg in dr Menge/Mab ab.
Grund dafür isch d endliche Anzahl vo Zeile in A. |
| |
Einfügen |
Die Argumendazion für d Suche kann 1-1 überdrage werde.
|
.1a und .1b |
Die Arbeid für des Einfüge an dem Knode, an dem d Suche scheiderd, enthäld koirlei
Wiederholunge, sonderet beschdehd aus oir Sequenz vo elemendare Oberazione.
|
|
Beim Einfüge wird höchschdens oi neir Knode erzeigd.
|
|
Gleiche Laufzeidabschädzunge wie bei dr Suche. |
| |