65
1 Timo Bingmann, Dennis Luxen 7. Übung – Algorithmen I Fakultät für Informatik Institut für Theoretische Informatik I NSTITUT FÜR THEORETISCHE I NFORMATIK,PROF .SANDERS 7. Übung – Algorithmen I Timo Bingmann, Dennis Luxen KIT – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

1 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

7. Übung – Algorithmen ITimo Bingmann, Dennis Luxen

KIT – Universität des Landes Baden-Württemberg undnationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Page 2: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

2 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Balancierte binäre Suchbäume:Red-Black-Trees

Page 3: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 4: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 5: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

3

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 6: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

3

4

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 7: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

5

3

4

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 8: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

5

3

4

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 9: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

5

3

4

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 10: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

5

3

4

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 11: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Warum balancierte Bäume?

3 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

5

3

4

Höhe: h ∈ O(n)Suchen: WC O(n)Löschen: WC O(n)Einfügen: WC O(n)Geht das besser?

Alle möglichen Pfade etwa gleich lang.Idee 1:

An jedem Knoten Entscheidung möglich,also idealerweise nutzen.

Idee 2:

Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe

Page 12: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Rot-Schwarz-Bäume

4 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Eigenschaften eines Rot-Schwarz-Baums:1 Jeder Knoten ist entweder rot oder schwarz.2 Die Wurzel ist schwarz.3 Jedes Blatt (NIL) ist schwarz.4 Ist ein Knoten rot, so sind beide Kinder schwarz.5 Für jeden Knoten v gilt, alle Pfade von v zu einem Blatt enthalten

dieselbe Zahl schwarzer Knoten, sog. Schwarzhöhe bh(v).

Page 13: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Rot-Schwarz-Bäume

4 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Eigenschaften eines Rot-Schwarz-Baums:1 Jeder Knoten ist entweder rot oder schwarz.2 Die Wurzel ist schwarz.3 Jedes Blatt (NIL) ist schwarz.4 Ist ein Knoten rot, so sind beide Kinder schwarz.5 Für jeden Knoten v gilt, alle Pfade von v zu einem Blatt enthalten

dieselbe Zahl schwarzer Knoten, sog. Schwarzhöhe bh(v).

Page 14: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)

Betrachte Knoten x und den darunter liegenden Teilbaum.

Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 15: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)Betrachte Knoten x und den darunter liegenden Teilbaum.

Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 16: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)Betrachte Knoten x und den darunter liegenden Teilbaum.Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.

Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.√

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 17: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)Betrachte Knoten x und den darunter liegenden Teilbaum.Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 18: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)Betrachte Knoten x und den darunter liegenden Teilbaum.Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.

Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 19: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)Betrachte Knoten x und den darunter liegenden Teilbaum.Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 20: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)Betrachte Knoten x und den darunter liegenden Teilbaum.Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.

Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 21: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - I

5 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1)Betrachte Knoten x und den darunter liegenden Teilbaum.Hilfssatz: Teilbaum unter x hat wenigstens 2bh(x) − 1 innere Knoten.Beweis(-skizze) per Induktion. bh(x) := 0→ 20 − 1 = 0.

Annahme: Aussage gilt für x1, x2, und x1, x2 Kinder von x mith(x) > 0.Wir bemerken:

bh(x1) ≤ bh(x) , und bh(x1) ≥ bh(x)− 1bh(x2) ≤ bh(x) , und bh(x2) ≥ bh(x)− 1

x1 x2

x

Nach Annahme haben x1, x2 wenigstens 2bh(x)−1 − 1 innere Knoten.Baum unterhalb von x hat also 2bh(x) − 1 innere Knoten.

Page 22: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - II

6 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1) - FortsetzungNach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzelmindestens die Hälfte der Knoten schwarz.

Einsetzen in vorheriges Ergebnis: n ≥ 2h/2 − 1⇔ h ≤ 2 log(n + 1)⇒ h ∈ O(log n).

Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Knotenzahl.

Suchen offensichtlich in O(log n).Einfügen, Löschen auch in O(log n), wenn Aufwand nur von derHöhe des Baums abhängt.

Page 23: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - II

6 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1) - FortsetzungNach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzelmindestens die Hälfte der Knoten schwarz.Einsetzen in vorheriges Ergebnis: n ≥ 2h/2 − 1

⇔ h ≤ 2 log(n + 1)⇒ h ∈ O(log n).

Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Knotenzahl.

Suchen offensichtlich in O(log n).Einfügen, Löschen auch in O(log n), wenn Aufwand nur von derHöhe des Baums abhängt.

Page 24: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - II

6 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1) - FortsetzungNach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzelmindestens die Hälfte der Knoten schwarz.Einsetzen in vorheriges Ergebnis: n ≥ 2h/2 − 1⇔ h ≤ 2 log(n + 1)⇒ h ∈ O(log n).

Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Knotenzahl.

Suchen offensichtlich in O(log n).Einfügen, Löschen auch in O(log n), wenn Aufwand nur von derHöhe des Baums abhängt.

Page 25: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - II

6 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1) - FortsetzungNach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzelmindestens die Hälfte der Knoten schwarz.Einsetzen in vorheriges Ergebnis: n ≥ 2h/2 − 1⇔ h ≤ 2 log(n + 1)⇒ h ∈ O(log n).

Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Knotenzahl.

Suchen offensichtlich in O(log n).Einfügen, Löschen auch in O(log n), wenn Aufwand nur von derHöhe des Baums abhängt.

Page 26: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Höhe von Rot-Schwarz-Bäumen - II

6 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Behauptung: h ≤ 2 log(n + 1) - FortsetzungNach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzelmindestens die Hälfte der Knoten schwarz.Einsetzen in vorheriges Ergebnis: n ≥ 2h/2 − 1⇔ h ≤ 2 log(n + 1)⇒ h ∈ O(log n).

Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Knotenzahl.

Suchen offensichtlich in O(log n).Einfügen, Löschen auch in O(log n), wenn Aufwand nur von derHöhe des Baums abhängt.

Page 27: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Insert und Delete sind problematisch

7 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

EinfügenInsert wie in “normalen” binären SuchbaumEinfügen kann RB-Eigenschaften verletzen.Vorgehen: Roten Knoten in binären Suchbaum einfügen unddanach Eigenschaften reparieren

Reparatur durch zwei grundlegende Operationen:1 Umfärbung von Knoten2 Rotation von Teilbäumen

Page 28: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Insert und Delete sind problematisch

7 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

EinfügenInsert wie in “normalen” binären SuchbaumEinfügen kann RB-Eigenschaften verletzen.Vorgehen: Roten Knoten in binären Suchbaum einfügen unddanach Eigenschaften reparierenReparatur durch zwei grundlegende Operationen:

1 Umfärbung von Knoten2 Rotation von Teilbäumen

Page 29: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Was ist eine Rotation?

8 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Lokale Operation, die binäre Suchbaumeigenschaft erhält.“Umhängen” einer konstanten Zahl an Pointern pro Teilbaum

x

y

Linksrotation

Rechtsrotation

y

x

Page 30: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Was ist eine Rotation?

8 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Lokale Operation, die binäre Suchbaumeigenschaft erhält.“Umhängen” einer konstanten Zahl an Pointern pro Teilbaum

x

y

Linksrotation

Rechtsrotation

y

x

Page 31: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Pseudo-Code: Links-Rotation

9 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

leftrotate(T,x)

1: y ← right [x ]2: right [x ]← left [y ]3: p[left [y ]]← x4: p[y ]← p[x ]5: if p[x ] = nil [T ] then6: root [T ]← y7: else8: if x = left [p[x ]] then9: left [p[x ]]← y

10: else11: right [p[x ]]← y12: end if13: end if14: left [y ]← x15: p[x ]← y

x

y

Linksrotation y

x

Page 32: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 1:

Situation: Baum ist leerErzeugen neuer WurzelRB-Eigenschaft 2 verletzt

Lösung: Umfärben der Wurzel

N

Page 33: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 1:

Situation: Baum ist leerErzeugen neuer WurzelRB-Eigenschaft 2 verletztLösung: Umfärben der Wurzel

N N

Page 34: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 2:

Situation: Vaterknoten schwarzPfade haben gleiche black heightAlle RB-Eigenschaften OK N

P

Page 35: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 3:

Situation: Vater und Onkel rot

Lösung:1 Onkel und Vater schwärzen2 Großvater rot färben3 Rekursiv nach oben fortsetzen4 Großvater ist Wurzel? Dann wieder

schwärzen

P

G

U

N

Page 36: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 3:

Situation: Vater und Onkel rotLösung:

1 Onkel und Vater schwärzen2 Großvater rot färben3 Rekursiv nach oben fortsetzen4 Großvater ist Wurzel? Dann wieder

schwärzen

P

G

U

N

P

G

U

N

Page 37: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 4:Situation:

1 Keinen oder schwarzen Onkel2 Neuer Knoten rechts an rotem Vater3 Vater links an Großvater

Lösung:1 Linksrotation um Vater2 Problem: zwei rote Knoten auf Pfad

benachbart3 Lösung per Fall 5!

P

G

U

N

Page 38: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 4:Situation:

1 Keinen oder schwarzen Onkel2 Neuer Knoten rechts an rotem Vater3 Vater links an Großvater

Lösung:1 Linksrotation um Vater2 Problem: zwei rote Knoten auf Pfad

benachbart3 Lösung per Fall 5!

P

G

U N

G

U

PN

Page 39: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 5:Situation:

1 Keinen oder schwarzen Onkel2 Neuer Knoten links an rotem Vater3 Vater links an Großvater

Lösung:1 Rechtsrotation um Großvater

Andere Richtungen AnalogLöschen nur etwas komplizierter

P

G

U

N

Page 40: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Inserts in Rot-Schwarz-Bäumen

10 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fall 5:Situation:

1 Keinen oder schwarzen Onkel2 Neuer Knoten links an rotem Vater3 Vater links an Großvater

Lösung:1 Rechtsrotation um Großvater

Andere Richtungen AnalogLöschen nur etwas komplizierter

G

N

P

GP U

N U

Page 41: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Aufwandsabschätzung

11 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Speicher:1 Bit pro Knoten für Farbe

Zeit:Konstanter Aufwand pro Knoten Färben/RotierenMaximal O(log n) Rekursionstiefe

Ziel erreicht: O(n) Platz und Operationen alle in O(log n).

Page 42: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Aufwandsabschätzung

11 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Speicher:1 Bit pro Knoten für Farbe

Zeit:Konstanter Aufwand pro Knoten Färben/RotierenMaximal O(log n) Rekursionstiefe

Ziel erreicht: O(n) Platz und Operationen alle in O(log n).

Page 43: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

12 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Die Zahl binärer Suchbäume

Page 44: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Alle binäre Suchbäume mit n = 1,2,3:

13 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

n = 1:

1

n = 2:

1

2

2

1

n = 3:

1

2

3

1

3

2

2

1 3

3

1

2

3

2

1

Page 45: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Alle binäre Suchbäume mit n = 4:

14 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

3

4

1

2

4

3

1

2

3 4

1

4

2

3

1

4

3

2

2

1 3

4

2

1 4

3

3

1 4

2

3

2 4

1

4

1

2

3

4

1

3

2

4

3

21

4

3

1

2

4

3

2

1

Page 46: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Die Anzahl binärer Suchbäume Cn

15 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

x

< x > x

Bekannte Startwerte: C0 = 0, C1 = 1, C2 = 2, C3 = 5, C4 = 14.

Durch Partitionieren der sortieren Folge:

Cn = C0Cn−1 + C1Cn−2 + · · ·+ Cn−2C1 + Cn−1C0 , n > 0.

Wende erzeugende Funktionen an:

Cn heißen die Catalan-Zahlen.

C(z) =∞∑

n=0

Czzn = C(z) · zC(z) + 1 . =⇒wie in 2. Übung

Cn =1

n + 1

(2nn

).

Page 47: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Die Anzahl binärer Suchbäume Cn

15 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

x

< x > x

Bekannte Startwerte: C0 = 0, C1 = 1, C2 = 2, C3 = 5, C4 = 14.

Durch Partitionieren der sortieren Folge:

Cn = C0Cn−1 + C1Cn−2 + · · ·+ Cn−2C1 + Cn−1C0 , n > 0.

Wende erzeugende Funktionen an:

Cn heißen die Catalan-Zahlen.

C(z) =∞∑

n=0

Czzn = C(z) · zC(z) + 1 . =⇒wie in 2. Übung

Cn =1

n + 1

(2nn

).

Page 48: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Die Anzahl binärer Suchbäume Cn

15 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

x

< x > x

Bekannte Startwerte: C0 = 0, C1 = 1, C2 = 2, C3 = 5, C4 = 14.

Durch Partitionieren der sortieren Folge:

Cn = C0Cn−1 + C1Cn−2 + · · ·+ Cn−2C1 + Cn−1C0 , n > 0.

Wende erzeugende Funktionen an:

Cn heißen die Catalan-Zahlen.

C(z) =∞∑

n=0

Czzn = C(z) · zC(z) + 1 .

=⇒wie in 2. Übung

Cn =1

n + 1

(2nn

).

Page 49: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Die Anzahl binärer Suchbäume Cn

15 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

x

< x > x

Bekannte Startwerte: C0 = 0, C1 = 1, C2 = 2, C3 = 5, C4 = 14.

Durch Partitionieren der sortieren Folge:

Cn = C0Cn−1 + C1Cn−2 + · · ·+ Cn−2C1 + Cn−1C0 , n > 0.

Wende erzeugende Funktionen an: Cn heißen die Catalan-Zahlen.

C(z) =∞∑

n=0

Czzn = C(z) · zC(z) + 1 . =⇒wie in 2. Übung

Cn =1

n + 1

(2nn

).

Page 50: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Notizen zu (a,b)-Bäumen

16 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

B-Bäume sind fast (m2 ,m)-Bäume

mit m = B ein Festplatten-Block.

Page 51: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Insert-Geschwindigkeit (Integer, C++)

17 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

26 28 210 212 214 216 218 220 222 224 2260

0.5

1

1.5

Anzahl von Elementen

Mic

rose

kund

enpr

oIn

sert

Red-Black Treeverkettete Hashtabelle(2,4)-Baum(16,32)-Baum(32,64)-Baum(64,128)-Baum

Page 52: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Locate-Geschwindigkeit (Integer, C++)

18 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

26 28 210 212 214 216 218 220 222 224 226

0

0.5

1

1.5

Anzahl von Elementen

Mic

rose

kund

enpr

oLo

cate

Red-Black Treeverkettete Hashtabelle(2,4)-Baum(16,32)-Baum(32,64)-Baum(64,128)-Baum

Page 53: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Speicherverbrauch (Integer, C++)

19 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

0

50

100

150

200

250

300

350

0 2 4 6 8 10 12

Mem

ory

Usa

ge [

MiB

]

Program Execution Time [s]

Memory Usage Profile - Insertion of 8192000 Integer Pairs

std::multimap__gnu_cxx::hash_multimap

std::tr1::unordered_multimapstx::btree_multimap

std::vectorstd::deque

Page 54: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

20 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Programmier-Wettbewerb:Assemblierung von DNA-Fragmenten

Page 55: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Human Genome Project

21 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Photo: Steve Jurvetson (CC-BY via flickr)

Page 56: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Genom des Menschen: ≈ 3,3 G Basen

22 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

CGCAAATTTGCCGGATTTCCTTTGCTGTTCCTGCATGTAGTTTAAACGAGATTGCCAGCACCGGGTATCATTCACCATTTTTCTTTTCGTTAACTTGCCGTCAGCCTTTTCTTTGACCTCTTCTTTCTGTTCATGTGTATTTGCTGTCTCTTAGCCCAGACTTCCCGTGTCCTTTCCACCGGGCCTTTGAGAGGTCACAGGGTCTTGATGCTGTGGTCTTCATCTGCAGGTGTCTGACTTCCAGCAACTGCTGGCCTGTGCCAGGGTGCAAGCTGAGCACTGGAGTGGAGTTTTCCTGTGGAGAGGAGCCATGCCTAGAGTGGGATGGGCCATTGTTCATCTTCTGGCCCCTGTTGTCTGCATGTAACTTAATACCACAACCAGGCATAGGGGAAAGATTGGAGGAAAGATGAGTGAGAGCATCAACTTCTCTCACAACCTAGGCCAGTAAGTAGTGCTTGTGCTCATCTCCTTGGCTGTGATACGTGGCCGGCCCTCGCTCCAGCAGCTGGACCCCTACCTGCCGTCTGCTGCCATCGGAGCCCAAAGCCGGGCTGTGACTGCTCAGACCAGCCGGCTGGAGGGAGGGGCTCAGCAGGTCTGGCTTTGGCCCTGGGAGAGCAGGTGGAAGATCAGGCAGGCCATCGCTGCCACAGAACCCAGTGGATTGGCCTAGGTGGGATCTCTGAGCTCAACAAGCCCTCTCTG

Daten: Projekt Gutenberg, http://www.gutenberg.org/ebooks/11775oder UCSC Genome Browser, http://genome.ucsc.edu

Page 57: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Programmier-Wettbewerb

23 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

DNA-Assemblierung

Gegeben: Referenzgenom und Patientengenom.Patientengenom nur als kurze „Reads“ gegeben.Aufgabe: Assembliere das Patientengenome anhand der Referenz.

Unser Wettbewerb:Vereinfachte Instanz: erste 50 Mi1 Basenpaare desersten Chromosom des Menschen.Preise: Amazon Gutscheine (für Algorithmen-Bücher):64 Euro, 32 Euro und 16 Euro für die schnellsten drei Assemblierer.Programmiersprache: egal, aber: Test-Platform ist Ubuntu Linux!

1Erhöhung der Größe wird vorbehalten.

Page 58: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Programmier-Wettbewerb

24 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

DNA-Assemblierung

Spezifikation der Eingabe: im aktuellen Verzeichnis liegen

chr1.txt – 50 MiB des erste Chromosom des Referenz-Menschen.Datei enthält Zeichen {A, G, C, T, N}. Groß/klein und N ignorieren.reads.txt – „Reads“ von einem Patienten.Pro Zeile ein Read. Reads haben verschiedene Längen.

Spezifikation der Ausgabe:

Schreibe Datei patient.txt mit Chromosom DNA.

Auf der Vorlesungs-Website liegen:Ein Beispieldatensatz mit Lösung und ein kleinerer Test-Datensatz.Der Wettbewerb läuft auf einem anderen Datensatz.

Page 59: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Wettbewerb: DNA-Assemblierung

25 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Bewertung des Wettbewerbs:Erstes Kriterium: Abweichung von der korrekten Patienten-DNA.Bei Abweichung ≤ 100 Basen: Rechenzeit entscheidet64 Euro für beste/schnellste Lösung,32 Euro und 16 Euro für zweiten und dritten Rang.Zeitmessung auf unseren Rechnern:

Intel Xeon X5355 2.66 GHz (8 cores), 24 GiB RAMLinux Ubuntu 12.04 LTS Server

Abgabe als buildable Sourcecode, Java jar oder ähnliches.Maximale Laufzeit: drei Stunden.Schlusstermin: Mittwoch 10.7.2013.

Page 60: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Wettbewerb: DNA-Assemblierung

26 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Weitere bekannte Daten:Länge von Reads ungefähr 300 Basenpaare.Abweichung des Patienten vom Referenz-Genom circa 0,1 %.Reads sind fehlerbehaftet! Fehlerrate circa 2 %.Reads enthalten 10 Kopien der Patienten-DNA.

Page 61: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

27 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Hashing von Zeichenketten

Nicht: kryptographische Message Digests (MD5, SHA, etc)!

Page 62: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Hashing von Zeichenketten

28 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Gegeben Zeichenkette s = 〈x0, x1, . . . , xn−1〉.Ganz schlechte Hashfunktion:

h(s) =n−1∑i=0

xi mod 2k

Etwas weniger schlechte Hashfunktion:

h(s) = 1 · x0 + 3 · x1 + 5 · x2 + 7 · x3 + · · · mod 2k

Page 63: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Hashing von Zeichenketten

28 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Gegeben Zeichenkette s = 〈x0, x1, . . . , xn−1〉.Ganz schlechte Hashfunktion:

h(s) =n−1∑i=0

xi mod 2k

Etwas weniger schlechte Hashfunktion:

h(s) = 1 · x0 + 3 · x1 + 5 · x2 + 7 · x3 + · · · mod 2k

Page 64: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Hashing von Zeichenketten

29 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Hashfunktion aus frühen BerkeleyDB/SDBM:

uint32 hash(String str){

uint32 h = 0;for (int i = 0; i < str.size(); ++i)

h = h * 65599 + str[i];return h;

}

Als Bitoperationen:

h = (h << 6) + (h << 16) - h + str[i];

Page 65: 7. Übung – Algorithmen I - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/algo1-2013/uebung_07.pdf · Höhe vonRot-Schwarz-Bäumen - I 5 Timo Bingmann, Dennis Luxen 7. Übung

Moderne Hashfunktionen

30 Timo Bingmann, Dennis Luxen7. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fowler–Noll–Vo Hashfunktion (DNS-Server, Databases)

unsigned int hash(String str){

unsigned int h = offset;for (int i = 0; i < str.size(); ++i){

h = h * prime;h = h XOR str[i];

}return h;

}

Für 32-bit: offset = 2166136261, prime = 16777619.Für 64-bit: offset = 14695981039346656037, prime = 1099511628211.

Noch aktueller: MurmerHash (Perl, Hadoop, etc)