p =q

Werbung
Gliederung
5. Compiler
1.
2.
3.
4.
Struktur eines Compilers
Syntaxanalyse durch rekursiven Abstieg
Ausnahmebehandlung
Arrays und Strings
6. Sortieren und Suchen
1. Grundlegende Datenstrukturen
2. Bäume
3. Streuspeicherung
7. Graphen
1. Darstellung und Topologisches Sortieren
2. Kürzeste Wege
3. Fluß- und Zuordnungsprobleme
Baumtransformationen (1)
• Ausgangssituation: Darstellung von Termen mit Bäumen
• Jeder Term und Faktor kann ein beliebig komplizierter Term
bzw. Baum sein
• Die Transformation von Termen als Zeichenketten ist
schwierig
+
Summand1 Summand2
( + Summand1 Summand2 )
( Summand1 + Summand2 )
2
Baumtransformationen (2)
• Baumtransformationen werden durch Transformationsregeln
beschrieben
• Solche Regeln können hintereinander ausgeführt werden
• Die Regeln können auf Teilbäume angewendet werden
t1
Originalbaum
Transformation
t2
transformierter Baum
3
Baumtransformationen (3)
Vereinfachung von Termen
• Der Baum besteht aus einem Operator, einem linken und
einem rechten Teilbaum
• Der linke Teilbaum 0 kann reduziert werden
+
Vereinfachung
0
t
t
4
Vereinfachungsregeln (1)
+
0
t
t
+
0
t
t
*
t
1
t
*
0
t
0
5
Vereinfachungsregeln (2)
+
Zahl
Zahl
Zahl + Zahl
+
+
Zahl
Variable
Zahl
+
+
Variable Zahl
Variable
Zahl
Variable
6
Vereinfachungsregeln (3)
+
+
Variable Variable
+
+
Variable2
Variable1
Variable Variable
Variable2
Variable1
+
Zahl1
+
+
Zahl2
t
Zahl1+Zahl2
t
7
Fragestellungen
• Sind die Regeln reihenfolgeabhängig?
• Terminieren die Regeln?
• Nimmt der Baum eine Normalform an?
+
+
Variable1
Variable2
Variable2
Variable1
Beispiel einer nicht terminierenden Regel
• Wird der Baum einfacher, spricht man von einem
Vereinfachungssystem
8
Positionen im Baum (1)
Baumdarstellung für Term t= f(e,f(x,i(x)))
f
e
ε
f
1
x
21
2
i
22
x
221
9
Positionen im Baum (2)
• Die Menge der Positionen im Baum b ist eine Menge Pos(b)
über den Alphabet der Zahlen:
– Ist der Wurzelknoten eine Variable, so ist Pos(b) ={ε}
– Ist der Wurzelknoten ein Operatorsymbol f mit den Unterbäumen
b1, ..,bn so gilt:
Pos ( b ) = { ε } ∪
n
U { ip
| p ∈ Pos ( b i )}
1
10
Positionen im Baum (2)
• Präfix-Ordnung: p ≤ q gdw
∃x.p '
So dass
pp ' = q
• p, q sind ‘‘parallel‘‘, falls weder p =q , p ≤ q oder q ≤ p
• p ist streng oberhalb von q, falls
p ≤ q und p‡q
• Größe des Baumes = Card(Pos(S))
11
Positionen im Baum (3)
• p ∈ Pos(b), Unterbaum von Baum b an position p
p
t
• p= ε
t
p
• p=iq
q
t
p
pq
t
q
t
12
Ersetzungen
• Ersetzung an Position ε
t1
t2
• Ersetzung an Position p=iq
p
t1
p
t2
13
Substitution
• Baumtransformation bei der endlich viele Variablen durch
Bäume ersetzt werden
σ
p
v
p
t
14
Reduktionsrelation
• Reduktionsrelation zwischen Bäumen
p
σ(e)
p
σ(r)
• Regel existiert:
e
r
15
Digitale Bäume
Ausgangssituation: Suche nach Worten über einem Alphabet
z.B. in Texten oder HTML-Seiten (z.B. Suchmaschinen )
• Jeder Knoten nimmt einen Wert bzw. Schlüssel vollständig
auf
• Probleme, wenn Worte als Werte von Knoten eines
Suchbaumes gespeichert werden
– Aufwendige Vergleiche (Worte müssen Buchstabe für Buchstabe
verglichen werden.
Beispiel: „Organisationslehre“ < „Organisationsmuster“
– Gleiche Wortanfänge werden mehrfach gespeichert
(Speicherplatzverbrauch)
– Vergleiche müssen mehrfach bis zum ersten unterschiedlichen
Buchstaben durchgeführt werden
16
Digitale Bäume
Lösungsprinzip: Suchbaum mit mehrwertigen Knoten, deren Werte
• den Buchstaben des Alphabets entsprechen und
• jeweils auf einen Kindknoten verweisen
Das Verfolgen von Verweisen bis zu einem Blatt ergibt dann die
gespeicherten Worte
• Die Verweise sind dabei prinzipiell unabhängig von den gespeicherten
Schlüsselwerten
• Das Verfahren ist geeignet für Datentypen, bei denen eine derartige feste
Verzweigung sinnvoll ist. Insbesondere: Zeichenketten über einem festen
Alphabet mit Verzweigung nach dem jeweils ersten bzw. nächsten
Buchstaben
• Bezeichnung digital entstammt der Interpretation von Zahlen eines
Zahlensystems als Worte über dem Alphabet der Ziffern (insb.
Binärzahlen über {0,1}) und deren Verwaltung in derartigen Bäumen
17
Tries (1)
• Tries sind Baumstrukturen zur Speicherung von
Zeichenketten und unterstützen das Suchen in Texten
• Das Wort Trie (gesprochen wie das engl. "try") entstammt
der Hauptanwendung der Struktur, dem Text-Retrieval
• Tries erlauben große Dokumentenbestände nach
Zeichenketten zu durchsuchen: der Trie bildet einen so
genannten Index zu diesen Dokumenten.
Wurzel: Alle Worte
Alle Worte, die mit A anfangen
Alle Worte, die mit AB anfangen
18
Tries (2)
Beispiel: Namensindex (Benjamin, Bennett, Bettina, Brigitte, ...)
Vorgehen bei der Suche in Tries: Für jedes Zeichen des
Suchschlüssels wird ausgehend der Wurzel der jeweilige
Verweis verfolgt, bis der Datensatz gefunden wird
19
Probleme bei der Verwendung von Tries
• Ungleichmäßig verteilte Daten führen zu unausgeglichenen
z.T. entarteten Suchbäumen:
– nicht vorkommende Buchstabenkombinationen ("QX„ "QXY" etc.)
führen zum Ende des Suchpfades bzw. zu Werten in Knoten ohne
Verweise
• Längere singuläre Worte führen zu Knoten, die nur einen
Nachfolger haben und entarten im weiteren Verlauf zu Listen
=> Dies erzeugt ein ungünstiges Verhältnis von inneren
Knoten zu Blättern
Beispiel: „Xylophonspielergewerkschaftsfunktionär“
20
Patricia-Bäume (1)
• Weiterentwicklung von Tries zur Vermeidung entarteter
Strukturen
• Patricia steht für Pracitical Algorithm to Retrieve
Information Coded in Alphanumeric
• Ursprüngliche Form bezieht sich auf Binärzahlen
• Grundidee: Teile von Zeichenketten, die im weiteren
Vergleich nicht zu Verzweigungen führen, werden
übersprungen
• Umsetzung
– Jeder Knoten enthält die Anzahl der zu überspringenden Zeichen
– Jeder Knoten enthält nur die Buchstaben, die für einen Vergleich
relevant sind
21
Patricia-Bäume (2)
Beispiel: Patricia-Baum zur Speicherung der Worte Programm,
Programmiersprache, Programmierung, Programmtest,
Prozedur, Prozess
22
Patricia-Bäume
• Vorteile von Patricia-Bäumen:
– Eine gegenüber Tries komprimierte Darstellung
– Reduzierung der bei der Suche zu „durchwandernden“ Knoten
insbesondere bei sehr langen seltenen Worten
• Variante des Patricia-Baumes: Präfix-Baume
– In Präfix-Bäumen wird zusätzlich zum Index des zu testenden
Zeichens auch der Wert des übersprungenen Teilwortes im Knoten
abgespeichert
23
Herunterladen