HWS 07/08
HWS 07/08
HWS 07/08
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
AUFGABE K.5: Bei dem folgenden Problem besteht die Eingabe aus einer Menge von m<br />
Klauseln der Länge drei (wie bei 3-SAT) und einer Zahl k. Zu entscheiden ist, ob es eine<br />
Belegung der Variablen gibt, die mindestens k Klauseln erfüllt. In jedem der folgenden Fälle<br />
beschreibe einen polynomiellen Algorithmus für dieses Problem oder zeige, dass (falls N P ̸= P)<br />
es einen solchen Algorithmus nicht geben kann.<br />
a) k ist beliebig.<br />
Mit einem solchen Algorithmus könnte man 3-SAT in polynomieller Zeit entscheiden,<br />
indem man k = m wählt; was N P = P zur Folge hätte.<br />
b) k ist eine Konstante.<br />
Es ist festzustellen, ob es k Klauseln gibt, die gleichzeitig erfüllt werden können; dafür<br />
gibt es ( m<br />
k)<br />
∈ O(m k ) (also polynomiell viele) Wahlen. In jeder Auswahl kommen maximal<br />
3k (also konstant viele) Variablen vor, womit alle deren Belegungen in konstanter Zeit<br />
getestet werden können. Insgesamt brauchen wir also nur polynomielle Zeit.<br />
AUFGABE K.6: Zeige, dass das folgende Problem N P-vollständig ist: Gegeben ist ein System<br />
C von Teilmengen einer endlichen Menge S. Gesucht ist eine möglichst kleine Teilmenge<br />
S ′ ⊆ S, so dass aus jeder Menge in C mindestens ein Element in S ′ vorkommt. Bei der Entscheidungsvariante<br />
ist zusätzlich eine Schranke L ∈ {1, . . .,|S|} gegeben; es soll entschieden<br />
werden, ob ein solches S ′ mit |S ′ | ≤L existiert.<br />
Offensichtlich gehört dieses Problem zu N P.<br />
Das Problem ist N P-schwer, weil VERTEX COVER ein Spezialfall davon ist; nämlich wenn<br />
jede Menge in C genau zwei Elemente besitzt. (Siehe die Übungsaufgabe 10.2, auch für eine<br />
Reduktion von CLIQUE oder INDEPENDENT SET auf dieses Problem.)<br />
AUFGABE K.7: In dieser Aufgabe betrachten wir die Sprache aller Wörter über {0, 1}, die<br />
mit 111 enden.<br />
a) Gib einen möglichst einfachen NFA an, der diese Sprache entscheidet.<br />
0,1<br />
q<br />
1 1 1<br />
0<br />
q 1<br />
q2 q3<br />
b) Benutze die Potenzmengenkonstruktion unter Vermeidung überflüssiger Zustände, um<br />
einen äquivalenten DFA zu konstruieren.<br />
Als Datenstrukturen benutzen wir eine Queue Q und ein Dictionary D.<br />
In jedem Schritt wird genau ein neuer Zustand in Q und D eingefügt, der im darauffolgenden<br />
Schritt aus Q entnommen wird, und zwar (in dieser Reihenfolge): {q 0 },{q 0 , q 1 },<br />
{q 0 , q 1 , q 2 },{q 0 , q 1 , q 2 , q 3 }. Danach findet kein Einfügen statt, womit Q leer und die Konstruktion<br />
beendet ist.<br />
0<br />
0<br />
0 0<br />
1 1 1<br />
{ q 0 } { q , q 1}<br />
{ q , q , q 2<br />
}{ q , q , q , q 3<br />
}<br />
1 1<br />
0 0 0<br />
2<br />
1<br />
c) Kann man den DFA aus (b) weiter minimieren Begründe deine Antwort.<br />
Nein. Der Automat hat vier Zustände, was auch der Index der Nerode-Relation ist.<br />
(Die Wörter ǫ, 1, 11, 111 sind paarweise nicht Nerode-äquivalent.)