Institut für Computergraphik und Algorithmen Arbeitsgruppe für

Werbung
Institut für
Computergraphik und
Algorithmen
Arbeitsgruppe für
Algorithmen und
Datenstrukturen
Übungen zu
Effiziente Algorithmen
186.144 VU 2.0 - WS 2007/08
Übungsblatt 2
4. Dezember 2007
Die hier angeführten Aufgaben sind für die Übungsstunde am 22. Jänner 2008 vorzubereiten.
Aufgabe 1 Huffman Kodierung
Angenommen die Häufigkeit aller Zeichen in einem Text sind paarweise verschieden, ist der HuffmanKodierungsbaum immer eindeutig?
Aufgabe 2 Zip-Bombe
Welches der vorgestellten Textkompressionsverfahren eignet sich am besten für das Basteln von Zip-Bomben?
(Zip-Bombe: Text, der komprimiert möglichst wenig Speicherplatz benötigt, entpackt aber aus fast beliebig
vielen Zeichen besteht.)
Aufgabe 3 Suffix-Trees: Suffix-Links
Erstellen Sie einen Suffix-Tree für eine beliebige, selbst gewählte Zeichenkette S (S nicht schon in der Vorlesung behandelt), die zumindest 10 Zeichen lang ist. Der resultierende Suffix-Tree soll dabei am Ende mindestens 3 Suffix-Links enthalten. Die Erstellung des Trees muss nicht mit dem Algorithmus von Ukkonen
erfolgen.
Aufgabe 4 Suffix-Trees: Longest Common Substring
Veranschaulichen Sie mit zwei selbst gewählten Strings Sa (|Sa | = ma ) und Sb (|Sb | = mb ), wie mit Hilfe von
Suffix-Trees der längste gemeinsame Substring in O(ma + mb ) gefunden werden kann.
Aufgabe 5 Suffix-Trees: Zirkuläre Strings
Zeigen Sie anhand eines selbst gewählten Beispiels, wie ein zirkulärer String S (S hat keine definierte Anfangsund Endposition) mittels eines Suffix-Trees so ,,aufgeschnitten” werden kann, dass der lexikalisch kleinste aller
möglichen Strings daraus resultiert.
Aufgabe 6 Suffix-Trees: DNA Kontaminierung
Ein großes Problem im Bereich der DNA-Sequenzierung ist die Verschmutzung (Kontaminierung) einer DNASequenz mit Stücken fremder DNA. Um Ergebnisse zu sichern, sollte eine Überprüfung auf Verschmutzung
erfolgen.
Gegeben sind zwei Strings: Sa (|Sa | = ma ) , die zu überprüfende DNA-Sequenz, und Sb (|Sb | = mb ), eine
Sequenz von einzelnen, aneinandergefügten DNA-Stücken, die zu einer Kontaminierung von Sa geführt haben
können.
Gesucht sind nun alle Substrings von Sb in Sa , die eine bestimmte Länge l überschreiten und damit Kandidaten für eine Verunreinigung darstellen.
Demonstrieren Sie anhand eines selbst gewählten, kleinen Beispiels, wie dieses Problem in O(ma + mb ) gelöst
werden kann.
1
Aufgabe 7 Suffix-Trees: Textkompression
Das Ziv-Lempel-Kompressionsverfahren auf Basis von LZSS kann mit Hilfe von Suffix-Trees effizient implementiert werden. Beschreiben Sie den LZ-Algorithmus unter Verwendung von Suffix-Trees. Wie würden Sie
das Problem des sich ,,bewegenden” Textfensters lösen?
Aufgabe 8 Suffix-Arrays
Geben Sie das Suffix-Array für den String S =wendende an und berechnen Sie den Inhalt der beiden Arrays
Llcp und Rlcp.
Aufgabe 9 Suffix-Trees und -Arrays: Recherche
Recherchieren Sie mindestens drei Einsatzgebiete von Suffix-Trees bzw. Suffix-Arrays und stellen Sie diese
kurz vor.
Aufgabe 10 Fibonacci Heaps – Maximale Höhe
Nach der Vorlesung “Effiziente Algorithmen” gibt es einen Riesen-Hype um die Fibonacci Heaps. Viele
eingefleischte Fans schwören sogar darauf, dass die Höhe eines Fibonacci Heaps mit n Knoten durch O(log n)
beschränkt sei.
Widerlegen Sie diese radikale Behauptung, indem Sie ein Schema angeben, das für jedes n ∈ N einen Fibonacci
Heap mittels einer Sequenz von Operationen konstruiert, der nur aus einem einzigen entarteten Baum in Form
einer linearen Liste mit n Knoten besteht.
Aufgabe 11 Fibonacci Heaps – Anregung
Bei increaseKey werden Knoten angeregt, wenn sie ein Kind verlieren. Verliert ein angeregter Knoten ein
weiteres Kind, wird er abgespaltet. In Summe wird ein Knoten abgespaltet, wenn er 2 Kinder verloren hat.
Erläutern Sie das Verhalten von verschiedenen Varianten, wo ein Knoten abgespaltet wird, nachdem er k
(= 1, 3, 4, . . . ) Kinder verloren hat.
Aufgabe 12 Amortisierte Analyse – Fit-Arrays
Stellen Sie sich vor, dass positive Integer-Zahlen als Summe von Fibonacci-Zahlen repräsentiert werden. Um
eine Zahl x darzustellen, benutzen wir statt den herkömmlichen Bit-Arrays sogenannte Fit-Arrays, in denen
das i-te Fit von rechts angibt, ob die i-te Fibonacci-Zahl als Summand in der Zahl vorkommt. Beispiel:
101110F steht für die Zahl F6 + F4 + F3 + F2 = 8 + 3 + 2 + 1 = 14.
Sind damit alle positive Integer-Zahlen codierbar? Beschreiben und analysieren Sie Operationen, die den
Wert einers Fit-Arrays in amortisiert konstanter Zeit in- bzw. dekrementieren.
Aufgabe 13 Quantenmechanischer Zustand und Messung
(a) Gegeben seien zwei Zustände:
1
|φi = √ |00i +
3
r
2
|11i,
3
|ψi = |11i.
Wie lautet die Wahrscheinlichkeit |φi im Zustand |ψi zu finden?
(b) Ein System befindet sich im Zustand
|ψi = const × (5i|0i + 4|1i) .
Berechnen Sie die Wahrscheinlichkeiten der Messwerte in der Standardbasis.
Aufgabe 14 Bell-Zustand
Zeigen Sie, dass es sich bei dem Zustand |ψi =
√1
2
(|01i − |10i) um einen verschränkten Zustand handelt.
2
Aufgabe 15 Operatoren
Der 1-Qubit NOT-Operator bewirkt folgende Transformation:
|0i → |1i,
|1i → |0i.
Der 1-Qubit Hadamard-Operator bewirkt folgende Transformation:
1
|1i → √ (|0i − |1i).
2
1
|0i → √ (|0i + |1i),
2
Geben Sie die zugehörigen unitären Operatoren bezüglich der Basis {|0i, |1i} an.
Sie weiters
die
Geben
1
1
1
1
konkrete Darstellung in der Standardbasis und in der Hadamardbasis |0i = √2
, |1i = √2
1
−1
an.
Aufgabe 16 Bell-Ungleichung
Alice und Bob messen die Spinkomponenten verschränkter Teilchen im Zustand
1
|ψi = √ (|0iA |1iB − |1iA |0iB ) .
2
Alice misst dabei die Spin-Komponenten a = σ3 und a0 = σ1 , Bob b = − √12 (σ3 + σ1 ) und b0 = √12 (σ3 − σ1 ).
Zeigen Sie die Verletzung der Bell-CHSH Ungleichung (d.h. rechnen Sie das Beispiel aus der Vorlesung genau
nach).
Aufgabe 17 No-Cloning
Beweisen Sie das No-Cloning Theorem, d.h. für kein ψ existiert ein unitäres Mapping U |ψ, 0i = |ψ, ψi.
Hinweis: Verwenden Sie die Linearität des Operators U um die Behauptung zu beweisen.
Aufgabe 18 Grover’s Search Algorithm
Führen Sie Grover’s Algorithmus auf einem Suchraum der Größe N = 4 durch, um ein bestimmtes Element
zu suchen (M = 1). Die Orakel-Funktion f sei gegeben durch f (0) = 0, f (1) = 1, f (2) = 0, f (3) = 0.
3
Herunterladen