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)