Aufgabenblatt 4 - Hamilton-Pfad

Werbung
Matrikelnummer
Name
Aufgabenblatt 4 - Hamilton-Pfad
Theoretische Informatik 1, SS14
Ausgabe: 4.4.2014
Abgabe: 23.5.2014
Implementieren Sie eine nichtdeterministische mehr-Band Turingmaschine zur Entscheidung des Problems HAMILTONPATH.
1
2
3
Gegeben sei ein gerichteter Graph G = (E, V ), |V | = n. Eine Hamilton-Pfad
zwischen Knoten 1 und n ist eine Permutation x1 , x2 , . . . , xn der Knoten V ,
mit x1 = 1 und xn = n, sodass für jedes 1 ≤ i < n gilt (xi , xi+1 ) ∈ E
(siehe Abbildung links).
Das Entscheidungsproblem HAMILTON-PATH sei gegeben als
HAMILTON-PATH = {hGi | G = (E, V ) : ein Hamilton-Pfad
4
führt von Knoten 1 zu Knoten n},
Die Kodierung hGi erfolgt in der Form A(v1 )#A(v2 )# . . . A(vn ), wobei A(vi ) die Liste der Knoten, die direkt von
einem Knoten vi erreicht werden können, darstellt. Diese werden für einen Knoten vi ∈ V , mit direkt erreichbaren
Knoten q1 . . . qm ∈ V in der Form A(vi ) = bin(vi )-bin(q1 )-bin(q2 )- . . . -bin(qm ) dargestellt. bin(v) beschreibt
ein eindeutiges binäres Muster für den Knoten v.
z.B:
1-10-11#10-1-11-100#11-1-100#100
wäre eine gültige Eingabe, die den Graphen in der Abbildung representiert. Die Knoten-Listen der Eingabe sind
sortier. Sie können davon ausgehen, dass der Knoten n keine ausgehenden Kanten hat, d.h. eine Senke darstellt.
Weiters dürfen Sie annehmen, dass die Eingabe einen gültigen gerichteten Graphen kodiert. Die Gültigkeit dieser
Bedingungen muss nicht überprüft werden. Eingaben, die diese Bedingungen nicht erfüllen, können aber müssen
nicht verworfen werden.
1. Implementieren Sie eine nichtdeterministische Turingmaschine in JFLAP, die das Problem HAMILTON-PATH
entscheidet und beschreiben Sie ihre Implementierung in Stichworten mit Bezug auf einzelne Zustände. Legen
Sie bei der Beschreibung besonderen Wert auf die Verwendung des Nichtdeterminismus (Welche Teile sind
deterministisch?, welche nicht?, warum?, etc.). Geben Sie die implementierte Turingmaschine zusätzlich in
elektronischer Form (wie auf der Vorlesungshomepage beschrieben) ab.
Ihre Implementierung muss polynomielle Laufzeit haben (siehe Punkt 2). Sie können so viele Bänder verwenden, wie Sie wollen. Die Maschine muss bei jeder beliebigen Eingabe halten. Wenn die Maschine akzeptiert
soll ein gültiger Hamilton-Pfad für die Eingabe als Ausgabe auf Band 1 in der Form
bin(x1 )#bin(x2 )#bin(x3 )# . . . bin(xn )
(z.B. 1#10#11#100, für den Graph in der Abbildung) dargestellt werden. (10 Punkte)
2. Beschreiben Sie die Funktionsweise der Turingmaschine als Pseudocode, mit Hinweis auf die jeweiligen Zustandsnamen. Analysieren Sie die Zeit- und Platzkomplexität Ihrer Implementierung. (5 Punkte)
Herunterladen