8 Digitalbäume, Tries, Suffixbäume 8.0 Anwendungen Internet

Werbung
8 Digitalbäume, Tries,
Tries, Suffixbäume
8.0 Anwendungen
Internet-Router
Gegeben Zieladresse, finde Nachbarknoten, an den
Paket zu senden ist ("Routing-Tabelle")
31
0
network addr
Map
Host id
1010 0000 0010 1101 0110 1110 0000 0011
jefe.inf.fu.berlin.de
Suchmaschine
Finden aller Web-Seiten mit bestimmte
Suche in
Texten
Stichworte enthalten
Bio-Informatik
Finde Positionen in einem Gen, dass die Sequenz
AGCTAAGTACCTTCT enthält
hs / fub – alp3-28-Digitalbaum 1
Siehe z.B. Tamassia: Data Structures...
8.1 Digitalbäume
Theo
A
E
B
Artur Bodo
B
R
Abel Arndt
Egon
D
Edgar
R
Erwin
M
Mögliche Einfügereihenfolge:
1. Theo
2. Artur
3. Bodo
4. Arndt
5. Egon
6. Edgar
7. Erwin
8. Edmund
9. Abel
Edmund
Suchbaum mit Schlüsseln über Alphabet {x1,...,xm}
Verzweigung in Knoten der Tiefe k: k-tes Zeichen
des Suchschlüssels s0,s1,...,sn-1
Schlüsselwerte in den Knoten (wie binärer SB)
Baum abhängig von Einfügefolge
1
Suchen
Theo
A
B
Artur Bodo
B
class Node{
String key;
Node nachfolger[]
= new Node[alphasize];
}
E
Egon
R
R
D
Abel Arndt
Edgar
Erwin
M
Für jedes Zeichen des
Alphabets ein Nachfolger
Edmund
private boolean search2 (String key, int pos, Node n){
if (node.key == key) return true;
if (node.nachfolger[pos] == null)return false;
else return search2(key,pos+1,n.nachfolger[pos]);
}
Fast wie binärer Suchbaum....
hs / fub – alp3-28-Digitalbaum 3
Einfügen
Theo
A
E
B
Artur Bodo
B
R
Abel Arndt
N
Nora
Egon
D
Einfügen: Nora
Elise
Edmiranda
R
L
Erwin
Edgar
Elise
M
Edmund
I
Wie binärer Suchbaum:
Edmiranda
- suchen des Schlüssel
- wenn gefunden, "duplicate key"
sonst einfügen als Blatt
gemäß sk+1 , wenn Suchpfad die
Länge k hatte.
Nachteile:
-Im Gegensatz zu
binärem Suchbaum
keine Ordnung!
- großes Alphabet =>
großer Speicheraufwand für Knoten.
hs / fub – alp3-28-Digitalbaum 4
2
Digitalbäume mit binärem Alphabet
Theo
0
Artur
0
0
1
0
Tanja
Nora Rosi
Bodo
1
Arndt
1
1
Egon
0
Abel Edgar
1
0
Erwin
Edmund
Mögliche Einfügereihenfolge:
1. Theo
2. Artur
3. Bodo
4. Arndt
5. Edgar
6. Edgar
7. Erwin
8. Edmund
9. Abel
10. Nora
11. Tanja
A=00001
B=00010
D=00100
E=00101
G=00111
L=01100
M=01101
N=01110
Q=10001
R=10010
T=10100
U=10101
Codierung der
Zeichen: 5-Bit
Binärwert der
Position im
Alphabet, A=1
hs / fub – alp3-28-Digitalbaum 5
Eigenschaften
Schlüssel
binär, eindeutig, feste Schlüssellänge und
N << 2k Schlüssel
dann
maximal k Vergleiche ( im Vergleich zu N bei
binären Suchbäumen).
Zufällige Verteilung der Schlüssel-Bits:
log N Vergleiche im Durchschnitt,
2* log N im schlechtesten Fall.
Sortierte
Verarbeitung?
hs / fub – alp3-28-Digitalbaum 6
3
Frequenzsortierter Digitalbaum
Position
im Baum durch Schlüsselposition und
Einfügereihenfolge bestimmt
Idee:
häufigster Schlüssel als Wurzel seines
Unterbaums
Arndt
Theo,10
A
A
E
B
Artur Bodo Edgar
Artur,3 Bodo Egon, 4
B
5
R
D
Abel Arndt, 11
2
T
E
B
B
Edgar, 9
Abel
Theo
G
Egon
Minimieren: Σ freq(k)* hight(k)
k
hs / fub – alp3-28-Digitalbaum 7
Beispiel
Symboltabelle,
Wörterbuch (z.B. Rechtschreibprüfung) u.a.
Sorted frequency tree
THE
15568
OF
9767
AND
7638
TO
5739
A
5074
IN
4312
THAT 3017
IS
2509
FOR
1869
AS
1853
zitiert nach Bayer, TUM, 2000
- einfügen nach absteigender
Häufigkeit
- Knoten-Inhalt bestimmt
Such- und Einfügepfad
hs / fub – alp3-28-Digitalbaum 8
4
Beispiel: Frequenzsortierter Digitalbaum
0
0
1
1
0
1
Die 31 häufigsten Wörter
des Englischen, eingefügt
nach Häufigkeit.
(Beachte: andere Kodierung
der Zeichen als oben!)
nach Bayer, TUM, 2000
hs / fub – alp3-28-Digitalbaum 9
8.2 Tries
Knotensortierung
in digitalem Suchbaum?
Idee: Schlüsselwerte nur in Blattknoten, innere
Knoten haben nur Wegweiserfunktion.
(hohler Baum, siehe B+-Bäume)
Theo
A
E
B
Artur Bodo
B
R
Abel Arndt
T
A
Egon
D
B
Bodo
R
B
Edgar
M
Theo
E
Erwin
D
R
Abel N
Arndt
R
T
G
G
Egon Erwin
M
Edgar
Artur
Edmund
Edmund
Trie: abgeleitet von "Retrieval", Aussprache wie "try"
hs / fub – alp3-28-Digitalbaum 10
5
Trie:
Trie: Definition
Ein
Trie T ist ein
Positionsbaum über einem Alphabet A
(binärer Trie, wenn A = {0,1} )
Wenn T N Schlüssel enthält, besitzt T N Blätter.
Jedes Blatt enthält einen Schlüssel.
Der Pfad von der Wurzel bis zum Blatt für den Schlüssel
s1s2...sn hat die Länge k <= n. Die Kanten des
Pfades sind implizit mit s1, s2,...,sk markiert.
(Implizit, weil Markierung bereits durch PositionsbaumEigenschaft).
Für alle Schlüssel s, s' gilt: es gibt ein 1<= k <= m mit
si = s'i und sk != s'k
Kein Schlüssel ist Präfix eines anderen (wenn Schlüssel
variabel lang)
Eigenschaft: Die zu den Schlüsseln führenden
Wurzelpfade sind geordnet (per Konstruktion).
hs / fub – alp3-28-Digitalbaum 11
Einfügen
T
A
B
R
Bodo
B
N
R
D
G
M
G
Abel
Egon
Erwin
H
Edgar
N
T
Arndt
Theo
E
Artur
Edmund Erhard
W
Erwin
V
Arved
public void insert(String k){
node n = searchKey(k);
int d = n.depth();
if (isLeaf(n)) splitNodeAndInsert(d,n.key, k)
else n.insert(d,k); //"null leaf"
}
hs / fub – alp3-28-Digitalbaum 12
6
Trie:
Trie: Eigenschaften
Ein
Trie ist nach Schlüsseln sortiert.
Ein
Trie ist unabhängig von Einfügereihenfolge der
Schlüssel:
Oder: Ein Trie ist eindeutig durch die Menge der
einzufügenden Schlüssel bestimmt.
Suche
und Einfügen in einen binären Trie mit N
zufälligen Schlüsseln der Länge m
benötigt im Mittel O(log N) Vergleiche.
Im schlechtesten Fall werden m Vergleiche benötigt.
Folgerung:
Wegen N <= 2m , also m <= log N , gilt:
Suche von Schlüssel s linear in der Länge von s
hs / fub – alp3-28-Digitalbaum 13
PräfixPräfix-Suche
Neben
Standardoperationen von Mengen
Präfixsuche offenbar sehr einfach.
public Set hasPrefix (String pref);
//pre: true
//res: {s| s ∈ self & pref is prefix of s}
T
A
B
R
Bodo
B
N
R
D
G
M
G
Abel
Egon
H
Edgar
N
T
Arndt
Theo
E
Artur
Edmund Erhard
W
Erwin
V
Arved
hs / fub – alp3-28-Digitalbaum 14
7
Alternative Definition
Wurzelpfade haben jeweils Schlüssellänge
auch hier
Pfade mit je
einem Nachfolger sind
redundant, und
lassen sich verkürzen.
Voraussetzung:
Schlüssel in Blättern
vorhanden.
length = 4 +1
BIGGER$
Grafik von David Breton, David Huynh & Denis Ricard, McGill Univ.
hs / fub – alp3-28-Digitalbaum 15
8.3 Patricia – Bäume
Pfadkompression
$
BI
G
L
GO
O
S
.....
Aber wie markiert
man die Kanten mit
variabel langen Zeichenketten??
BIGGER$
"Practical Algorithm To Retrieve Information Coded In Alphanumeric",
Morrison, 1968
hs / fub – alp3-28-Digitalbaum 16
8
Implementierung der Pfadkomprimierung
Komprimierte Pfadstücke sind redundant,
search(key k) muss nur jeweils 1. Zeichen prüfen.
[1]
$
BI
GGE
L
GO
O
BILL
R
S
BIGGER
[3]
S
....
BIGGEST
[6]
BIGGER
[3]
BILL
$
....
BIGGEST
search("BIGGEST" )muss drei Zeichen prüfen: BIGGEST"
[1 3 6 ]
hs / fub – alp3-28-Digitalbaum 17
PatriciaPatricia-Tries
Ein
Patricia-Trie (compressedTrie) ist ein
pfadkomprimierter Trie
Eigenschaften
Ein
Baum mit N Schlüsseln hat N Blätter
Jeder
Knoten hat
- mindestens 2 Nachfolger
- höchstens m Nachfolger bei Alphabet der Größe m
Gesamtspeicheraufwand
Suche
O(N)
eines Schlüssels s in O(s.length())
hs / fub – alp3-28-Digitalbaum 18
9
PatricialPatricial-Trie und Zeichenketten
[1]
B
G
[3]
G
R
S
$
....
[27,7]
[20,6],
AMERICA ...BIGGER
1
[3]
M
[35,4]
[6]
$
7..20
BIGGEST
25 27
BILL ...
ZERO
33 35 38
72 76
hs / fub – alp3-28-Digitalbaum 19
PatricialPatricial-Trie und Zeichenketten
[1]
[3]
[6]
[20,6],
[40,45]
[3]
[35,4]
$
....
[27,7]
AMERICA ...BIGGER
1
Im allgemeinen kein vollständiger
Schlüsselvergleich, wenn Blatt
erreicht (Überspringen von von
Schlüsselpositionen)
Deshalb Schlüssel (oder Präfix)
im Blatt unerlässlich, evtl. als
Verweis (wie in Abb.).
7..20
BIGGEST
25 27
BILL ... BIGGER
33 35 38
40
45
ZERO
72 76
Bei Verzicht auf Eindeutigkeit der „Schlüssel"
problemlos: Mehrere Verweise in Blatt
hs / fub – alp3-28-Digitalbaum 20
10
"IP Präfix Lookup"
Lookup"
[1]
Adresspräfix Nachbarknoten
0
1
[3]
[3]
0
$
0
1
n3
[4]
1
0
1
n4
....n5
4
001 n3
0001 n4
111 n4
1100 n5
...
n4
n3
Gesucht: nächster Netzknoten auf dem Weg zur
Zieladresse 11011011011...01
Finde Eintrag (adr, nachbar) so, dass adr Präfix
der Zieladresse mit maximaler Länge.
2. Beispiel: 01011011011...01
Suche endet in innerem Knoten, wähle eines der Blätter des
Unterbaums.
Einfügen, Ändern?
hs / fub – alp3-28-Digitalbaum 21
Änderungsoperationen
[1]
[1]
[3]
[6]
[20,6],
[3]
[35,4]
[3]
$
[4]
....
[35,4]
$
....
[38,6]
[6]
[27,7]
[20,6],
AMERICA ...BIGGER
1
[3]
7..20
[27,7]
BIGGEST BIGMAC BILL ...
25 2733 35
38
ZERO
72 76
Einfügen: Pfad suchen, in den eingefügt wird. Fehlstelle zwischen
einzufügendem Wert und in Blatt gefundenen Wert bestimmen,
übersprungenen Teilpfad auftrennen.
hs / fub – alp3-28-Digitalbaum 22
11
Alternative Darstellung
[20,21]
Kanten mit Position
des ersten / letzten
Zeichen der Teilzeichenkette markiert.
[1,1]
[1,2]
[22,24]
[35,4]
[25,25]
[32,32]
....
[27,7]
[20,6],
AMERICA ...BIGGER
1
$
[37,38]
7..20
BIGGEST
25 27
BILL ...
33 35
38
ZERO
72 76
hs / fub – alp3-28-Digitalbaum 23
PatriciaPatricia-Tries:
Tries: Alternative für Binäre Suchbäume ?
Empirische
Untersuchung (nach Sedgewick)
Einfügen
Suche
N
RB
Trie
Pat
RB
Trie
Pat
5000
4
7
7
1
2
1
25000
40
44
41
20
20
17
100000
176
269
242 103
101
92
200000
411
544
448 228
211
182
Zufällig erzeugte 32-Bit-Zahlen als Schlüssel
hs / fub – alp3-28-Digitalbaum 24
12
Herunterladen