diff --git a/sol/thinf/f23t1/a4.tex b/sol/thinf/f23t1/a4.tex new file mode 100644 index 0000000..ed56c48 --- /dev/null +++ b/sol/thinf/f23t1/a4.tex @@ -0,0 +1,69 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 4: Komplexität} + +\paragraph{(a)}m + Die NP-Härte von $SC$ wird durch eine polynomielle Reduktion auf das bereits als NP-vollständig deklarierte Problem $2VDP$ nachgewiesen. Dazu wird eine totale und berechenbare Funktion $f$ benötigt, die Probleme aus $2VDP$ als kodierte Wörter auf Probleme aus $SC$ abbildet: + + Sei $f:\Sigma^*\rightarrow \Sigma^*$ definiert über + + $f(w)=\begin{cases} + c(V,E\cup \{(s_2,t_1),(t_2,s_1)\},(s_2,t_1),(t_2,s_1))&, falls\ w=c(V,E,s_1,s_2,t_1,t_2)\\ + &mit\ einem\ Graph\ G=(V,E)\\ + &und\ s_1,s_2,t_1,t_2 \in V\\ + \varepsilon &, sonst + \end{cases}$ + + Die hinter der Konstruktion liegende Idee wird durch folgende Grafik veranschaulicht: + + \includegraphics[width=0.5\textwidth]{./sol/thinf/f23t1/skizze_reduktion.png} + + $f$ ist offensichtlich total. Außerdem lässt sich eine DTM konstruieren, die $f$ in polynomieller Laufzeit berechnet: + \begin{itemize} + \item Syntaxcheck, ob $w=c(V,E,s_1,s_2,t_1,t_2)$ mit einem Graph $G=(V,E)$ und $s_1,s_2,t_1,t_2 \in V$ (in $O(|V|+|E|)=O(n)$) + \item Passendes zusammensetzen der Ausgabe zu $c(V,E\cup \{(s_2,t_1),(t_2,s_1)\},(s_2,t_1),(t_2,s_1))$ (in $O(1)$) + \end{itemize} + + Es bleibt noch zu zeigen, dass $w \in 2VDP \Leftrightarrow f(w) \in SC$ gilt. Dies beweisen folgende Äquivalenzumformungen ($\forall w \in \Sigma^*$): + \begin{align*} + w \in 2VDP \Longleftrightarrow\ &w=c(V,E,s_1,s_2,t_1,t_2)\ mit\ Graph\ G=(V,E)\ und\ s_1,s_2,t_1,t_2 \in V\\ + &\wedge\ \exists\ Pfade\ p_1=s_1...s_2\ und\ p_2=t_1...t_2\ in\ G: \forall\ u \in p_1,\ v \in p_2: u\neq v\\ + \Leftrightarrow\ &f(w)=c(V,E\cup \{(s_2,t_1),(t_2,s_1)\}=E',(s_2,t_1),(t_2,s_1))\ mit\ Graph\\ + &\ G'=(V,E')\ und\ s_1,s_2,t_1,t_2 \in V\ \wedge\ \exists\ Pfade\ p_1=s_1...s_2\ und\ p_2=t_1...t_2\ in\ G':\\ + &\ \forall\ u \in p_1,\ v \in p_2: u\neq v\\ + \Leftrightarrow\ &f(w)=c(V,E',(s_2,t_1),(t_2,s_1))\ mit\ Graph\ G'=(V,E')\ und\ (s_2,t_1),(t_2,s_1) \in E'\\ + &\ \wedge\ \exists\ Pfad\ p=s_1...s_2t_1...t_2s_1\ in\ G':\ \forall\ n,m \leq k:=|p| : p_n\neq p_m,\ außer\ p_1=p_k \\ + \Leftrightarrow\ &f(w) \in SC + \end{align*} + \textit{Informelle Beschreibung: Zusammensetzen der zwei knoten-disjunkten Pfade über zwei neue Kanten, die jeweils die Endpunkte verbinden, zu einem einfachen Kreis.} + + Somit gilt $2VDP \leq_p SC$ und da $2VDP$ NP-vollständig ist, muss $SC$ NP-hart sein. + + Um noch zu zeigen, dass $SC$ in NP liegt, muss eine NTM skizziert werden, die $SC$ in polynomieller Zeit entscheidet: + \begin{enumerate} + \item Starte mit einem leeren Pfad durch den Graphen ($O(1)$). + \item Rate nun aus den vom letzten Knoten aus erreichbaren Knoten, die noch nicht im Pfad vorkommen (außer dem Startknoten), nichtdeterministisch den nächsten Knoten des Pfades, sodass am Ende (falls dieser existiert) ein Simple Circle gefunden wird ($O(n)$). + \item Wiederhole den vorherigen Schritt solange, bis der Startknoten wieder erreicht wird - in diesem Fall wurde eine Lösung gefunden $\Rightarrow$ halten und akzeptieren - oder keine weiteren Knoten hinzugefügt werden können - in diesem Fall gibt es keine Lösung $\Rightarrow$ halten und nicht akzeptieren ($O(n)$). + \end{enumerate} + + Es folgt, dass $SC$ in NP liegt und somit NP-vollständig ist. + +\paragraph{(b)}m + Folgender Algorithmus löst USC: + \begin{enumerate} + \item Überprüfe, ob $e_1 = e_2$. + \item Falls $e_1 = e_2$ und $e_1=(e_1',e_1''),\ e_2=(e_2',e_2'')$ starte A unter Eingabe $e_1',e_1'',e_2'',e_2'$ \begin{itemize} + \item Falls A eine Lösung ausgibt, ist der Pfad $p=p_1\circ p_2$ eine Lösung von USC + \item Falls A keine Lösung findet, gibt es auch für USC keine Lösung + \end{itemize} + \item Falls $e_1 \neq e_2$ und $e_1=(e_1',e_1''),\ e_2=(e_2',e_2'')$ starte A unter Eingabe $e_1'',e_2'',e_2',e_1'$ \begin{itemize} + \item Falls A eine Lösung ausgibt, ist der Pfad $p=p_1\circ e_2'e_2''\circ p_2\circ e_1'e_1''$ eine Lösung von USC + \item Falls A keine Lösung findet, gibt es auch für USC keine Lösung + \end{itemize} + \end{enumerate} + \textit{Anmerkung: $\circ $ meint hier die Aneinanderreihung oder Konkatenation von Pfaden. Dabei werden die Knoten in den Pfaden zusammen hintereinander geschrieben, wobei der letzte Knoten des ersten Pfades mit dem ersten Knoten des zweiten Pfades übereinstimmen muss und nur einmal nidergeschrieben wird. Bsp.: $abc\circ cde=abcde,\ \forall a,b,c,d,e \in V$.} + + \textbf{Laufzeitanalyse:}\\ + Die Überprüfung in Schritt 1, das Starten von A sowie die Überprüfung und Rückgabe in Schritt 2 und 3 laufen jeweils in $O(1)$. Der Durchlauf von A in Schritt 2 und 3 hat höchstens eine polynomielle Laufzeit in der Größe der Eingabe, da U2VDP in $\mathcal{P}$ liegt.\\ + Somit hat der beschriebene Algorithus insgesamt höchstens eine polynomielle Laufzeit in der Größe der Eingabe. + + Folglich liegt USC in $\mathcal{P}$. + diff --git a/sol/thinf/h23t1.tex b/sol/thinf/h23t1.tex new file mode 100644 index 0000000..9708f02 --- /dev/null +++ b/sol/thinf/h23t1.tex @@ -0,0 +1,5 @@ +\subsection{H23T1} +\input{sol/thinf/h23t1/a2} +\input{sol/thinf/h23t1/a3} +\input{sol/thinf/h23t1/a4} +\input{sol/thinf/h23t1/a5} diff --git a/sol/thinf/h23t1/Ableitungsbaum.png b/sol/thinf/h23t1/Ableitungsbaum.png new file mode 100644 index 0000000..0c55593 Binary files /dev/null and b/sol/thinf/h23t1/Ableitungsbaum.png differ diff --git a/sol/thinf/h23t1/CYK-Pyramide.png b/sol/thinf/h23t1/CYK-Pyramide.png new file mode 100644 index 0000000..2111443 Binary files /dev/null and b/sol/thinf/h23t1/CYK-Pyramide.png differ diff --git a/sol/thinf/h23t1/DEA zu Klammersprache.png b/sol/thinf/h23t1/DEA zu Klammersprache.png new file mode 100644 index 0000000..ffde41b Binary files /dev/null and b/sol/thinf/h23t1/DEA zu Klammersprache.png differ diff --git a/sol/thinf/h23t1/DEA_T1_A1.png b/sol/thinf/h23t1/DEA_T1_A1.png new file mode 100644 index 0000000..3302644 Binary files /dev/null and b/sol/thinf/h23t1/DEA_T1_A1.png differ diff --git "a/sol/thinf/h23t1/Tabellenf\303\274llverfahren.png" "b/sol/thinf/h23t1/Tabellenf\303\274llverfahren.png" new file mode 100644 index 0000000..31f7c71 Binary files /dev/null and "b/sol/thinf/h23t1/Tabellenf\303\274llverfahren.png" differ diff --git a/sol/thinf/h23t1/a1.tex b/sol/thinf/h23t1/a1.tex new file mode 100644 index 0000000..5d138b5 --- /dev/null +++ b/sol/thinf/h23t1/a1.tex @@ -0,0 +1,108 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 1: Reguläre Sprachen} +\paragraph{(a)} + $L_a = \{w \in \Sigma^* | \nexists u,u' \in \Sigma^*: w =u(ab)u'\} = ((b|c)^*(a^*c)^*(b|c)^*)^*a^*$ + + \textbf{Erklärung}: \\ + Alle Wörter in $L_a$ setzen sich aus Teilworten zusammen, die eine zusammenhängendes Teilwort beliebiger Länge aus $a$'s enthalten. Vor und nach dem $a$-Block dürfen beliebige Wörter aus $b$'s und $c$'s vorkommen (deshalb $(b|c)^*$ in regulären Ausdruck). Sobald ein $a$ erscheint, dürfen weitere $a$'s folgen (deshalb $a^*$ in regulären Ausdruck) oder ein $c$ (deshalb folgt auf $a^*$ immer das $c$, außer am Ende des Wortes). Es müssen auch gar keine $a$'s vorkommen (dehalb sind alle Bestandteile, in denen $a$'s vorkommen, mit $^*$ versehen). + +\paragraph{(b)} + $L_b = L(M) = a^*|(a^* ba^* ba^* ba^* ba^*)^*$. + + \textbf{Begründung}: \\ + Anfangs befinden wir uns in einem Endzustand, der beliebig viele weitere $a$'s zulässt (deshalb $a^*$ in regulären Ausdruck).\\ + Verlässt man diesen Endzustand über ein $b$, muss ein Zyklus mit genau vier $b$'s durchlaufen werden, zwischen denen jeweils beliebig viele $a$'s liegen dürfen, bevor wieder der Endzustand erreicht wird (deshalb $a^* ba^* ba^* ba^* ba^*$ in regulären Ausdruck). Dieser Zyklus kann beliebig oft durchlaufen werden (deshalb das $^*$ bei der rechten Klammer im regulären Ausdruck). + +\paragraph{(c)} + Zur besseren Übersicht wird zunächst die \textbf{Zustandsübergangs-Tabelle} des Automaten aufgestellt:\\ + \begin{tabular}{|c|c|c|} + \hline + \textbf{Zustand} & \textbf{0} & \textbf{1} \\ + \hline + 0 & 1 & 3 \\ + \hline + 1 & 0 & 6 \\ + \hline + 2 & 1 & 4 \\ + \hline + 3 & 4 & 4 \\ + \hline + 4 & 4 & 5 \\ + \hline + 5 & 0 & 5 \\ + \hline + 6 & 0 & 5 \\ + \hline + \end{tabular} + + Um die Erreichbarkeit aller Zustände zu überprüfen wird eine \textbf{Zeugentabelle} angefertigt:\\ + \begin{tabular}{l|ccccccc} + \textbf{Zustand} & 0 & 1 & 2 & 3 & 4 & 5 & 6 \\ + \hline + \textbf{Zeuge} & $\epsilon$ & 0 & - & 1 & 11 & 111 & 01 \\ + \end{tabular} + Zustand 2 ist also nicht erreichbar, deshalb entfällt er im minimierten Automaten. + + Nun wird das bekannte \textbf{Tabellenfüllverfahren} zur Bestimmung äquivalenter Zustände durchgeführt: + + \includegraphics[scale=0.7]{Tabellenfüllverfahren.png} + + Da Zusatnd 4 der einzige Endzustand ist, werden zunächst alle Zustandspaare in der Tabelle, die 4 und einen weiteren Zustand enthalten, mit $X_0$ markiert. + + Die weiteren Markierungen in der Tabelle gehen aus folgender Tabelle hervor, welche die Übergänge der Zustandspaare angibt: + + \begin{tabular}{c|c|c|l} + \textbf{Zustandspaar} & \textbf{0} & \textbf{1} & \textbf{Erläuterung} \\ + \hline + (0,1) & (0,1) & (3,6) & Eingabe 1: (3,6) führt zu X3. Ergänze X5. \\ + \hline + (0,3) & (1,4) & (3,4) & Eingabe 0: (1,4) führt zu X0. Ergänze X1. \\ + \hline + (1,3) & (0,4) & (4,6) & Eingabe 0: (0,4) führt zu X0. Ergänze X4. \\ + \hline + (0,5) & (0,1) & (3,5) & Eingabe 0: (3,5) führt zu X2. Ergänze X6. \\ + \hline + (1,5) & (0,0) & (5,6) & \\ + \hline + (3,5) & (0,4) & (4,5) & Eingabe 0: (0,4) führt zu X0. Ergänze X2. \\ + \hline + (0,6) & (0,1) & (3,5) & Eingabe 1: (3,5) führt zu X2. Ergänze X7. \\ + \hline + (1,6) & (0,0) & (5,6) & \\ + \hline + (3,6) & (0,4) & (4,5) & Eingabe 0: (0,4) führt zu X0. Ergänze X3. \\ + \hline + (6,5) & (0,0) & (5,5) & \\ + \end{tabular} + + Die Zuständspaare 1, 5 und 6 bleiben nach wiederholtem Durchlaufen und Überprüfen unmarkiert. Folglich liegen 1, 5 und 6 in der selben Äquivalentsklasse und bilden im minimietern Automaten den Zustand $[1,5,6]$. Insgesamt ergeben sich also folgende Äquivalenzklassen als Zustände für den minimierten Automaten: $[0],[1,5,6],[3],[4]$ + + Der minimierte Automat $A'$ sieht also folgendermaßen aus: \\ + $A' = (\{[0],[1,5,6],[3],[4] \},\{0,1\},\delta, [0], \{[4]\})$ + + \begin{figure}[ht] + \begin{minipage}[t]{.4\textwidth} + \hspace*{25pt} + mit $\delta$: + + \hspace*{25pt} + \begin{tabular}{|l|l|l|} + \hline + \textbf{Zustand} & \textbf{0} & \textbf{1} \\ + \hline + [0] & [1,5,6] & [3] \\ + \hline + [1,5,6] & [0] & [1,5,6] \\ + \hline + [3] & [4] & [4] \\ + \hline + [4] & [4] & [1,5,6] \\ + \hline + \end{tabular} + \end{minipage} + \begin{minipage}[t]{.57\textwidth} + \vspace*{0pt} + \hspace*{20pt} + \includegraphics[scale=0.35]{DEA_T1_A1.png} + \end{minipage} + \end{figure} + \ No newline at end of file diff --git a/sol/thinf/h23t1/a2.tex b/sol/thinf/h23t1/a2.tex new file mode 100644 index 0000000..76a6423 --- /dev/null +++ b/sol/thinf/h23t1/a2.tex @@ -0,0 +1,35 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 2: Kontextfreie Sprachen} + +\paragraph{(a)} + Ja, das Wort \glqq abba\grqq\ ist mit $G$ ableitbar und liegt somit in $L(G)$, wie mit dem CYK-Algorithmus nachgewiesen werden kann: + + \begin{center} + \includegraphics[scale=0.45]{CYK-Pyramide.png} + \end{center} + + Der Ableitungsbaum lässt sich aus der Tabelle ablesen: + + \begin{center} + \includegraphics[scale=0.7]{Ableitungsbaum.png} + \end{center} + +\paragraph{(b)} + \begin{enumerate}[label=\roman*.] + \item + Es gilt: $K\cdot R = \{k\circ r\ |\ \forall k \in K, r \in R\}$ + + Die regulären Sprachen sind eine Teilmenge der kontextfreien Sprachen. + Also ist auch $R$ kontextfrei. Kontextfreie Sprachen sind abgeschlossen unter \emph{Verkettung}: \\ + Sei $G_1 = (N_1, \Sigma_1, P_1, S_1)$ die kontextfreie Grammatik, welche $K$ erzeugt, und $G_2 = (N_2, \Sigma_2, P_2, S_2)$ die kontextfreie Grammatik, welche $R$ erzeugt. Dann kann eine kontextfreie Grammatik $G$ konstruiert werden, welche die Verkettung von $K$ und $R$ erzeugt:\\ + Man ergänze dafür ein neues Startsymbol $S$, sowie eine neue Produktionsregel $S \rightarrow S_1S_2$ und erhält $G = (N_1 \cup N_2 \cup \{S\}, \Sigma_1 \cup \Sigma_2, P_1 \cup P_2 \cup \{S \rightarrow S_1S_2\}, S)$.\\ + Da $L(G)=K\cdot R$ ist diese Sprache kontextfrei. + + Die Aussage ist also wahr. + + \item + $L'$ ist bekanntermaßen nicht kontextfrei. Die Sprache $K = \{a^n\ |\ n \in \mathbb{N}_0\}$ über dem Alphabet $\Sigma = \{a,b,c\}$ ist regulär - denn es gilt $K = a^*$, also gibt es einen regulären Ausdruck für $K$ - und somit auch kontextfrei.\\ + Allerdings gilt auch für $K \circ L' = \{a^nb^mc^m\ |\ n,m \in \mathbb{N}_0\}$, das die Sprache regulär, mit Ausdruck: $K \circ L'= a^*(bc)^*$, und somit kontextfrei ist. + + Dieses Gegenbeispiel beweist, dass die Aussage falsch ist. + + \end{enumerate} diff --git a/sol/thinf/h23t1/a3.tex b/sol/thinf/h23t1/a3.tex new file mode 100644 index 0000000..b0e4c1a --- /dev/null +++ b/sol/thinf/h23t1/a3.tex @@ -0,0 +1,48 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 3: Chomsky-Hierarchie} + +\paragraph{(a)} + $L_1 = \{ w \in L: vor\ jedem\ (\ stehen\ mehr\ [\ als\ ] \}$ + + \begin{quote} + \textbf{Pumpinglemma für kontextfreie Sprachen} \\ + Ist $L$ eine kontextfreie Sprache, so gilt: \\ + $\exists p \in \mathbb{N}: \forall z \in L, |z| \geq p:$ \\ + $\exists u,v,w,x,y \in \Sigma^*: z = uvwxy$ mit + \begin{enumerate} + \item $|vx| \geq 1$ + \item $|vwx| \leq p$ + \item $\forall i \in \mathbb{N} : uv^{i}wx^{i}y \in L$ + \end{enumerate} + \end{quote} + + Nehmen wir an $L_1$ sei kontextfrei, dann können wir das Pumpinglemma anwenden und folgern: + + Sei $p \in \mathbb{N}$ die Pumpingzahl. Wir wählen $z = [^p(]^p)] \in L_1$ mit $|z| = 2p+2 > p$.\\ + Aus $|vwx| \leq p$ und $|vx| \geq 1$ ergeben sich für die Form von $vwx$ folgende Fälle: + \begin{enumerate} + \item $v=[^k$ und $x=[^l$ mit $p \geq k+l \geq 1$ + \item $v=[^k$ und $x=[^l(]^m$ mit $p-1 \geq k+l+m \geq 0$ + \item $v=[^k(]^l$ und $x=]^m$ mit $p-1 \geq k+l+m \geq 0$ + \item $v=]^l$ und $x=]^m$ mit $p \geq l+m \geq 1$ + \item $v=]^l$ und $x=]^m)$ mit $p-1 \geq l+m \geq 0$ + \end{enumerate} + + In Fall 1 ist $uv^2wx^2y=[^{p+k+l}(]^{p}) \notin L_1$, da $p+k+l > p$ und somit liegt keine korrekte Klammerung mehr vor.\\ + In Fall 2 ist $uv^2wx^2y=[^{p+k}(]^{m}[^{l}(]^{p}) \notin L_1$, da zwei $($ und nur eine $)$ vorkommen. Somit liegt keine korrekte Klammerung vor.\\ + In Fall 3 ist $uv^2wx^2y=[^{p}(]^{l}[^{k}(]^{p+m}) \notin L_1$, da zwei $($ und nur eine $)$ vorkommen. Somit liegt keine korrekte Klammerung vor.\\ + In Fall 4 ist $uv^2wx^2y=[^{p}(]^{p+l+m}) \notin L_1$, da $p+l+m > p$ und somit liegt keine korrekte Klammerung mehr vor.\\ + In Fall 5 ist $uv^2wx^2y=[^{p}(]^{p+l})]^{m}) \notin L_1$, da zwei $)$ und nur eine $($ vorkommen. Somit liegt keine korrekte Klammerung vor. + + Das ist ein Widerspruch zur Annahme $L_1$ sei kontextfrei. $\Rightarrow L_1$ ist nicht kontextfrei $\Rightarrow L_1$ ist nicht regulär, da die regulären Sprachen eine Teilmenge der kontextfreien Sprachen bilden. + + \vspace{0.3cm} +\paragraph{(b)} + $L_2 = \{ w \in L: auf\ jede\ \ddot{o}ffnende\ Klammer\ folgt\ direkt\ eine\ schließende\ Klammer \}$ + + Zu $L_2$ lässt sich folgender DEA bauen, der sie akzeptiert: + \begin{center} + \includegraphics[scale=0.5]{DEA zu Klammersprache.png} + \end{center} + + Somit ist $L_2$ regulär und damit auch kontextfrei, denn die regulären Sprachen sind eine Teilmenge der kontextfreien Sprachen. + \ No newline at end of file diff --git a/sol/thinf/h23t1/a4.tex b/sol/thinf/h23t1/a4.tex new file mode 100644 index 0000000..30b58c8 --- /dev/null +++ b/sol/thinf/h23t1/a4.tex @@ -0,0 +1,68 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 4: Entscheidbarkeit} + + +\paragraph{(a)} + $L_{1}$ ist nicht entscheidbar. + + Die Nicht-Entscheidbarkeit von $L_1$ wird durch eine Reduktion auf das bereits als unentscheidbar bekannte allgemeine Halteproblem $L_2$ nachgewiesen (siehe (b)). Dazu wird eine totale und berechenbare Funktion $f$ benötigt, für die $f(w) \in L_1 \Leftrightarrow w \in L_2$ gilt. Sei $f:\Sigma^*\rightarrow \Sigma^*$ definiert über: + + $f(w)=\begin{cases} + \langle M' \rangle &\text{falls $w=\langle M \rangle$ für TM $M$}\\ + 0 &\text{sonst} + \end{cases}$ + + Dabei ist $M'$ eine TM, die $2^{|\langle N \rangle|}$ Schritte vollführt, ohne irgendetwas zu berechnen, und dann $M$ auf der Eingabe $\langle N \rangle$ simuliert. + + Die Funktion $f$ ist offensichtlich total. Außerdem lässt sich $f$ berechnen: + \begin{itemize} + \item Syntaxcheck der Eingabe auf $\langle M \rangle$ + \item $2^{|\langle N \rangle|}$ Übergänge ohne irgendetwas zu verändern (außer den Zuständen zum zählen) + \item Simulieren von $M$ auf $\langle N \rangle$ (universelle Turingmaschine). + \end{itemize} + + Es bleibt noch zu zeigen, dass $w \in L_2 \Leftrightarrow f(w) \in L_1$ gilt. Dies beweisen folgende Äquivalenzumformungen ($\forall w \in \Sigma^*$): + \begin{align*} + w \in L_2 \Longleftrightarrow\ &w = \langle M \rangle \text{ mit TM } M \text{ hält auf } \langle N \rangle \\ + \Leftrightarrow\ &f(w) = \langle M' \rangle \text{ mit TM } M' \text{ hält auf } \langle N \rangle \text{ nach mindestens } 2^{|\langle N \rangle|} \text{ Schritten}\\ + \Leftrightarrow\ &f(w) \in L_1 + \end{align*} + Somit gilt $L_2 \leq L_1$ und da $L_2$ unentscheidbar ist, muss auch $L_1$ unentscheidbar sein. + + +\paragraph{(b)} + $L_{2}$ ist nicht entscheidbar. + + Die Nicht-Entscheidbarkeit von $L_2$ wird durch eine Reduktion auf das bereits als unentscheidbar bekannte Halteproblem $L_{halt}=\{\langle M \rangle w | M \text{ ist TM, die auf } w \text{ hält} \}$ nachgewiesen. Dazu wird eine totale und berechenbare Funktion $f$ benötigt, für die $f(w) \in L_2 \Leftrightarrow w \in L_{halt}$ gilt. Sei $f:\Sigma^*\rightarrow \Sigma^*$ definiert über: + + $f(w)=\begin{cases} + \langle M' \rangle &\text{falls $w=\langle M \rangle v$ für TM $M$ und $v \in \Sigma^*$}\\ + 0 &\text{sonst} + \end{cases}$ + + Dabei ist $M'$ eine TM, die auf $\langle N \rangle$ hält, genau dann wenn $M$ auf $v$ hält. $M'$ lässt sich wie folgt konstruieren: + \begin{itemize} + \item Überprüfung der Eingabe $u$. Falls $u \neq \langle N \rangle$ in Endlosschleife laufen. + \item Ansonsten löschen der Eingabe und schreiben von $v$ aufs Band. + \item Simulieren von $M$ auf $v$. Falls $M$ auf $v$ hält, hält auch $M'$. + \end{itemize} + + Die Funktion $f$ ist offensichtlich total. Außerdem kann $f$ ihr Bild $M'$ nach dem eben beschriebenen Vorgehen berechnen und ist somit berechenbar (löschen von $\langle M \rangle v$ und schreiben von $\langle M' \rangle$ aufs Band). + + Es bleibt noch zu zeigen, dass $w \in L_{halt} \Leftrightarrow f(w) \in L_2$ gilt. Dies beweisen folgende Äquivalenzumformungen ($\forall w \in \Sigma^*$): + \begin{align*} + w \in L_{halt} \Longleftrightarrow\ &w = \langle M \rangle v \text{ mit TM } M \text{ hält auf } v \\ + \Leftrightarrow\ &f(w) = \langle M' \rangle \text{ mit TM } M' \text{ hält auf } \langle N \rangle \\ + \Leftrightarrow\ &f(w) \in L_2 + \end{align*} + + Somit gilt $L_{halt} \leq L_2$ und da $L_{halt}$ unentscheidbar ist, muss auch $L_2$ unentscheidbar sein. + + +\paragraph{(c)} + $L_3$ ist entscheidbar. + + Da $L(N)=\Sigma^*$ muss $N$ auf jedem $w \in \Sigma^*$ halten, um dieses zu akzeptieren. Folglich ist die Menge der Worte über $\Sigma$, auf denen $N$ nicht hält, die leere Menge. Man kann $L_3$ also umschreiben zu:\\ + $L_3= \{\langle M\rangle | M\ h\ddot{a}lt\ auf\ mindestens\ einem\ w \in \varnothing \}$ + + Da es kein solches $w$ gibt, kann es auch kein $M$ geben, welches auf $w$ hält. Folglich ist $L_3 = \varnothing$ und somit regulär und auch entscheidbar. + diff --git a/sol/thinf/h23t1/a5.tex b/sol/thinf/h23t1/a5.tex new file mode 100644 index 0000000..058b391 --- /dev/null +++ b/sol/thinf/h23t1/a5.tex @@ -0,0 +1,53 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 5: Komplexitätstheorie} +\begin{teile} + + \item + Ein Minimalbeispiel für einen Graphen, der eine Beinahe-3-Färbung aber keine 3-Färbung besitzt, sieht wie folgt aus: + + \includegraphics[scale=0.6]{minimal_graph_beinahe-drei-faerbung} + + Der Graph besitzt keine 3-Färbung, da Knoten $1,2,3$ und $4$ alle jeweils paarweise durch Kanten verbunden sind. Wenn also Knoten $1,2$ und $3$ mit drei verschiedenen Farben belegt werden, muss für $4$ ebenfalls eine dieser drei Farben gewählt werden und es entsteht eine Kante, die zwei Knoten mit gleicher Farbe verbindet. Folglich besitzt der Graph aber eine Beinahe-3-Färbung. + + \item + Zunächst werden die genannten Entscheidungsprobleme in formale Sprachen übersetzt: + + $L_{B3F} = \{c(G)\ |\ G=(V,E) \text{ ist Graph, für den eine Beinahe-3-Färbung existiert}\}$ + + $L_{3F} = \{c(G)\ |\ G=(V,E) \text{ ist Graph, für den eine 3-Färbung existiert}\}$ + + Um zu zeigen, dass das Problem $B3F$ in $\mathcal{NP}$ liegt, wird eine NTM beschrieben, welche $L_{B3F}$ in polynomieller Zeit entscheidet: + \begin{enumerate} + \item Durchlaufe den Graphen Knoten für Knoten. ($O(n)$) + \item Wähle jeweils nichtdeterministisch die passende Farbe, sodass am Ende möglichst wenige Kanten aus zwei gleichfarbigen Knoten entstehen. ($O(1)$) + \item Gehe alle Kanten durch und überprüfe, ob höchstens eine Kante aus zwei gleichfarbigen Knoten gebildet wird. Wenn das der Fall ist akzeptiere, ansonsten halte und akzeptiere nicht. ($O(n)$) + \end{enumerate} + + Nun wird eine polynomielle Komplexitäts-Reduktion von $B3F$ auf $3F$ durchgeführt. Dazu wird eine totale und in polynomieller Zeit berechenbare Funktion $f$ benötigt, die Probleme aus $3F$ auf Probleme aus $B3F$ abbildet: + + Sei $f:\Sigma^*\rightarrow \Sigma^*$ definiert über + + $f(w)= \begin{cases} + c(V\cup \{v_1,v_2,v_3,v_4\}, E\ \cup \{(v_1,v_2),(v_1,v_3), &, falls\ w=c(V,E)\ mit\\ + (v_1,v_4),(v_2,v_3),(v_2,v_4),(v_3,v_4)\}) &\ G = (V,E)\ ist\ Graph\\ + 0 &, sonst + \end{cases}$ + + $f$ ist offensichtlich total. Außerdem lässt sich eine DTM konstruieren, die $f$ in polynomieller Laufzeit berechnet: + \begin{itemize} + \item Syntaxcheck, ob $w=c(V,E)$ mit $e_1,e_2 \in E$ und $G = (V,E)$ ist Graph ($O(n)$). + \item Passendes anhängen der entsprechenden Knoten und Kanten an Eingabe zu $c(V \cup \{v_1,v_2,v_3,v_4\}, E \cup \{(v_1,v_2),(v_1,v_3),(v_1,v_4),(v_2,v_3),(v_2,v_4),(v_3,v_4)\})$ ($O(n^2)$) + \end{itemize} + + Es bleibt noch zu zeigen, dass $w \in L_{3F} \Leftrightarrow f(w) \in L_{B3F}$ gilt. Dies beweisen folgende Äquivalenzumformungen ($\forall w \in \Sigma^*$): + \begin{align*} + w \in L_{3F} \Longleftrightarrow\ & w=c(V,E)\ mit\ Graph\ G=(V,E)\ besitzt\ eine\ \text{3-Färbung}\\ + \Leftrightarrow\ & f(w)=c(V':=V \cup \{v_1,v_2,v_3,v_4\}, E':=E \cup \{(v_1,v_2),(v_1,v_3),(v_1,v_4),\\ + &\ (v_2,v_3),(v_2,v_4),(v_3,v_4)\})\ mit\ Graph\ G=(V,E)\ besitzt\ eine\ \text{3-Färbung}\\ + \Leftrightarrow\ & f(w)=c(V', E')\ mit\ Graph\ G'=(V',E')\ besitzt\ eine\ \text{Beinahe-3-Färbung}\\ + \Leftrightarrow\ & f(w) \in L_{B3F} + \end{align*} + \textit{Informelle Beschreibung: Minimalgraphen aus (a) zum Eingabegraphen hinzufügen. Somit wird eine 3-Färbung von $G$ zu einer Beinahe-3-Färbung von $G'$ und umgekehrt.} + + $B3F$ ist also $\mathcal{NP}$-hart und liegt in $\mathcal{NP}$. Somit ist $B3F$ $\mathcal{NP}$-vollständig. + +\end{teile \ No newline at end of file diff --git a/sol/thinf/h23t1/minimal_graph_beinahe-drei-faerbung.png b/sol/thinf/h23t1/minimal_graph_beinahe-drei-faerbung.png new file mode 100644 index 0000000..c66200c Binary files /dev/null and b/sol/thinf/h23t1/minimal_graph_beinahe-drei-faerbung.png differ diff --git a/sol/thinf/h23t2.tex b/sol/thinf/h23t2.tex new file mode 100644 index 0000000..486e5dd --- /dev/null +++ b/sol/thinf/h23t2.tex @@ -0,0 +1,6 @@ +\subsection{H23T2} +\input{sol/thinf/h23t2/a1} +\input{sol/thinf/h23t2/a2} +\input{sol/thinf/h23t2/a3} +\input{sol/thinf/h23t2/a4} +\input{sol/thinf/h23t2/a5} diff --git a/sol/thinf/h23t2/MiniDEA2.png b/sol/thinf/h23t2/MiniDEA2.png new file mode 100644 index 0000000..9ee5675 Binary files /dev/null and b/sol/thinf/h23t2/MiniDEA2.png differ diff --git a/sol/thinf/h23t2/MiniDEA3.png b/sol/thinf/h23t2/MiniDEA3.png new file mode 100644 index 0000000..0a5d31b Binary files /dev/null and b/sol/thinf/h23t2/MiniDEA3.png differ diff --git a/sol/thinf/h23t2/NEA-Konstruktion.png b/sol/thinf/h23t2/NEA-Konstruktion.png new file mode 100644 index 0000000..6788687 Binary files /dev/null and b/sol/thinf/h23t2/NEA-Konstruktion.png differ diff --git "a/sol/thinf/h23t2/Tabellenf\303\274llverfahren2.png" "b/sol/thinf/h23t2/Tabellenf\303\274llverfahren2.png" new file mode 100644 index 0000000..1371f11 Binary files /dev/null and "b/sol/thinf/h23t2/Tabellenf\303\274llverfahren2.png" differ diff --git "a/sol/thinf/h23t2/Tabellenf\303\274llverfahren3.png" "b/sol/thinf/h23t2/Tabellenf\303\274llverfahren3.png" new file mode 100644 index 0000000..a0412fb Binary files /dev/null and "b/sol/thinf/h23t2/Tabellenf\303\274llverfahren3.png" differ diff --git "a/sol/thinf/h23t2/Tabellenf\303\274llverfahren4.png" "b/sol/thinf/h23t2/Tabellenf\303\274llverfahren4.png" new file mode 100644 index 0000000..6d1f2f4 Binary files /dev/null and "b/sol/thinf/h23t2/Tabellenf\303\274llverfahren4.png" differ diff --git a/sol/thinf/h23t2/a1.tex b/sol/thinf/h23t2/a1.tex new file mode 100644 index 0000000..dcfb9b5 --- /dev/null +++ b/sol/thinf/h23t2/a1.tex @@ -0,0 +1,31 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 1: Konstruktion} + +\paragraph{(a)} + Sei $M = (Q, \Sigma, \delta, q_0, F)$ ein nichtdeterministischer endlicher Automat (NEA), sei $v \in \Sigma^*$ und sei $L = \{ w \in \Sigma^* \mid w \in L(M) \text{ und } w \text{ enthält } v \}$. Wir konstruieren einen NEA $M' = (Q', \Sigma, \delta', q_0', F')$, für den $L(M') = L$ gilt, wie folgt: + + \begin{itemize} + \item $Q' = Q \times \{0, 1, \ldots, k\}$, wobei $k$ die Länge von $v$ ist. + \item $\delta'$ ist definiert durch: + \begin{align*} + \delta'((q, i), \sigma) &= \begin{cases} + \{ (q', i) \mid q' \in \delta(q, \sigma) \} & \text{falls } \sigma \neq v_{i+1}\text{ oder } i = k \\ + \{ (q', i+1) \mid q' \in \delta(q, \sigma) \} & \text{falls } \sigma = v_{i+1} \text{ und } i < k + \end{cases} + \end{align*} + \item $q_0' = (q_0, 0)$ + \item $F' = \{ (q, k) \mid q \in F \}$ + \end{itemize} + + \textbf{Erklärung:}\\ + Die Zustände von $M'$ sind Paare $(q, i)$, wobei $q$ ein Zustand von $M$ ist und $i$ die Position im Wort $v$ darstellt. Wenn der Automat ein Zeichen $\sigma$ liest, das nicht das nächste erwartete Zeichen von $v$ ist, bleibt $i$ unverändert. Wenn $\sigma$ das nächste erwartete Zeichen von $v$ ist, wird $i$ inkrementiert. Sobald $i$ die Länge von $v$ erreicht hat (d.h. $i = k$), bleibt der Automat im Zustand $k$ und simuliert weiterhin $M$. + + Der Startzustand von $M'$ ist $(q_0, 0)$, und die akzeptierenden Zustände sind die Paare $(q, k)$, wobei $q$ ein akzeptierender Zustand von $M$ ist. Dies stellt sicher, dass das Wort $v$ in $w$ enthalten ist und dass $w$ von $M$ akzeptiert wird. + +\paragraph{(b)} + Der Resultierende NFA sieht wie folgt aus (wobei $(q_0,1), (q_1,1)$ und $(q_2,0)$ nicht erreichbar sind und nur der Vollständigkeit des Verfahrens halber mit aufgenommen wurden): + + \includegraphics[scale=0.75]{NEA-Konstruktion} + + + +\newpage \ No newline at end of file diff --git a/sol/thinf/h23t2/a2.tex b/sol/thinf/h23t2/a2.tex new file mode 100644 index 0000000..22a00f9 --- /dev/null +++ b/sol/thinf/h23t2/a2.tex @@ -0,0 +1,62 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 2: Minimale DEAs} + + +\paragraph{(a)} + Allgemein eignet sich für die Prüfung der Minimalität eines DEA das sogenannte \glqq Tabellenfüllverfahren\grqq (im Englischen \textit{table filling algorithm} oder \textit{table filling method}). Dabei wird eine Tabelle (mit allen erreichbaren Zuständen) aufgestellt, in der nicht äquivalente Zustandspaare gekennzeichnet werden. In dieser Tabelle wird zunächst in allen Zellen, deren zugehöriges Zustandspaar einen Endzustand und einen Nicht-Endzustand enthält, ein $X_0$ notiert - diese Paare können sicher nicht äquivalent sein.\\ + Nun wird versucht, von den übrigen Zellen aus die bereits gefüllten Zellen durch Über- gänge aus dem Automaten zu erreichen. Dies wird so lange wiederholt, bis sich keine Änderungen in der treppenförmigen Tabelle mehr ergeben. Wenn dann noch Zellen ungefüllt bleiben, bedeutet das, dass die Zustände des entsprechenden Zustandspaares äquivalent sind.\\ + Alle zueinander äquivalenten Zustände liegen dann in einer Äquivalenzklasse, die nicht äquivalenten Zustände bilden jeweils eine eigene Äquivalenzklasse. Diese Äquivalenz- klassen bilden die Zustände des minimierten DEA. + + Für den ersten DEA bleibt keine Zelle der Tabelle ungefüllt, was bedeutet, dass hier keine äquivalenten Zustände vorliegen. Da jeder Zustand erreichbar ist, ist der Automat also bereits minimal: + + \includegraphics[scale=0.75]{Tabellenfüllverfahren2.png} + + \begin{tabular}{c|c|c|l} + \textbf{Zustandspaar} & \textbf{a} & \textbf{b} & \textbf{Erläuterung} \\ + \hline + (2,1) & (0,1) & (3,3) & Eingabe b: (3,3) führt zu X0. Ergänze X1. \\ + \hline + (2,0) & (0,1) & (2,1) & Eingabe b: (2,1) führt zu X1. Ergänze X2. \\ + \hline + (1,0) & (1,1) & (2,3) & Eingabe b: (2,3) führt zu X0. Ergänze X3. \\ + \end{tabular} \\ + +\paragraph{(b)} + Eine Zeugentabelle zum Automaten zeigt, dass der Zustand 1 nicht erreichbar ist: + + \begin{tabular}{l|c|c|c|c} + \textbf{Zustand} & \textbf{0} & \textbf{1} & \textbf{2} & \textbf{3} \\ + \hline + \textbf{Zeuge} & $\epsilon$ & $-$ & $a$ & $aa$ \\ + \end{tabular} + + Die übrigen Zustände sind wieder nicht äquivalent: + + \includegraphics[scale=0.75]{Tabellenfüllverfahren3.png} + + \begin{tabular}{c|c|c|l} + \textbf{Zustandspaar} & \textbf{a} & \textbf{b} & \textbf{Erläuterung} \\ + \hline + (2,0) & (2,3) & (2,3) & Eingabe b: (2,3) führt zu X0. Ergänze X1. \\ + \end{tabular}\\ + + Der minimierte DEA sieht dann folgendermaßen aus: + + \includegraphics[scale=0.75]{MiniDEA2} + +\paragraph{(c)} + Für diesen Automaten bleibt nach Durchführung des beschriebenen Tabellenfüllverfahrens eine Zelle ungefüllt. Dies ist der Nachweis, dass die Zustände 1 und 3 äquivalent zueinander sind und damit in der selben Äquivalenzklasse liegen. + + \includegraphics[scale=0.75]{Tabellenfüllverfahren4.png} + + \begin{tabular}{c|c|c|l} + \textbf{Zustandspaar} & \textbf{a} & \textbf{b} & \textbf{Erläuterung} \\ + \hline + (2,0) & (1,3) & (2,3) & Eingabe b: (2,3) führt zu X0. Ergänze X1. \\ + \hline + (3,1) & (3,3) & (1,1) & Kein Kreuz. \\ + \end{tabular} + + Der minimierte DEA besitzt nun noch einen Endzustand und kann folgendermaßen zusammengefasst werden: + + \includegraphics[scale=0.75]{MiniDEA3} + diff --git a/sol/thinf/h23t2/a3.tex b/sol/thinf/h23t2/a3.tex new file mode 100644 index 0000000..c040e5f --- /dev/null +++ b/sol/thinf/h23t2/a3.tex @@ -0,0 +1,135 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 3: Kontextfreie Grammatiken} + +\paragraph{(a)} + Die Umwandlung von G in H erfolgt in vier Schritten: + + \textbf{1) Beseitigung von $\epsilon$-Regeln} + + Alle Regeln der Form $A \rightarrow \epsilon$ werden beseitigt. Alle Produktionsregeln, die rechts ein Nichtterminal enthalten, das zuvor zu $\epsilon$ abgeleitet werden konnte, werden dafür ergänzt um eine Kopie \textit{ohne} dieses Nichtterminalsymbol.\\ + Da das leere Wort nicht in der von H erzeugten Sprache liegen soll, muss keine weitere Regel hinzugefügt werden. + + \begin{tabular}{l|l} + \textbf{Vorher} & \textbf{Nachher} \\ + \hline + \begin{tabular}{lcl} + S & $\rightarrow$ & aXY \\ + X & $\rightarrow$ & Y $\mid$ \textcolor{red}{$\epsilon$} \\ + Y & $\rightarrow$ & aS $\mid$ b \\ + \end{tabular} & + \begin{tabular}{lcl} + S & $\rightarrow$ & aXY $\mid$ \textcolor{green}{aY} \\ + X & $\rightarrow$ & Y \\ + Y & $\rightarrow$ & aS $\mid$ b \\ + \end{tabular} + \end{tabular} + + \textbf{2) Beseitigung von Kettenregeln} + + Jede Produktionsregel der Form A $\rightarrow$ B mit A, B $\in$ V wird als \glqq Kettenregel\grqq bezeichnet. + Dabei werden ggf. zunächst Zykel entfernt. Da hier keine Zykel vorliegen, muss nur noch die Regel X $\rightarrow$ Y angepasst werden. Dazu wird diese Regel entfernt und alle Regeln, deren linke Seite ein Y ist, um eine neue Regel mit X als linker Seite ergänzt. + + \begin{tabular}{l|l} + \textbf{Vorher} & \textbf{Nachher} \\ + \hline + \begin{tabular}{lcl} + S & $\rightarrow$ & aXY \\ + \textcolor{red}{X} & \textcolor{red}{$\rightarrow$} & \textcolor{red}{Y} \\ + \textcolor{blue}{Y} & $\rightarrow$ & aS $\mid$ b \\ + \end{tabular} & + \begin{tabular}{lcl} + S & $\rightarrow$ & aXY \\ + Y & $\rightarrow$ & aS $\mid$ b \\ + \textcolor{green}{X} & \textcolor{green}{$\rightarrow$} & \textcolor{green}{aS $\mid$ b} \\ + \end{tabular} + \end{tabular} + + + \textbf{3) Ersetzen von Terminalzeichen} + + Jedes Terminalzeichen $\theta$, das in Kombination mit anderen Symbolen auftritt, wird durch ein neues Nichtterminalzeichen $\Theta$ ersetzt. Zusätzlich wird die Produktionsregel $\Theta \rightarrow \theta$ ergänzt. + + \begin{tabular}{l|l} + \textbf{Vorher} & \textbf{Nachher} \\ + \hline + \begin{tabular}{lcl} + S & $\rightarrow$ & \textcolor{blue}{a}XY \\ + Y & $\rightarrow$ & \textcolor{blue}{a}S $\mid$ b \\ + X & $\rightarrow$ & \textcolor{blue}{a}S $\mid$ b \\ + \end{tabular} & + \begin{tabular}{lcl} + S & $\rightarrow$ & \textcolor{green}{A}XY \\ + Y & $\rightarrow$ & \textcolor{green}{A}S $\mid$ b \\ + X & $\rightarrow$ & \textcolor{green}{A}S $\mid$ b \\ + \textcolor{green}{A} & \textcolor{green}{$\rightarrow$} & \textcolor{green}{a} \\ + \end{tabular} + \end{tabular} + + \newpage + \textbf{4) Beseitigung von Nichtterminalketten} + + Alle Produktionsregeln, die in der rechten Seite mehr als zwei Nichtterminalzeichen aufweisen, werden durch einfügen zusätzlicher Nichtterminale in mehrere neue Regeln mit passender Form aufgeteilt. + + \begin{tabular}{l|l} + \textbf{Vorher} & \textbf{Nachher} \\ + \hline + \begin{tabular}{lcl} + S & $\rightarrow$ & \textcolor{blue}{AXY} \\ + Y & $\rightarrow$ & AS $\mid$ b \\ + X & $\rightarrow$ & AS $\mid$ b \\ + A & $\rightarrow$ & a \\ + \end{tabular} & + \begin{tabular}{lcl} + S & $\rightarrow$ & \textcolor{green}{AZ} \\ + \textcolor{green}{Z} & \textcolor{green}{$\rightarrow$} & \textcolor{green}{XY} \\ + Y & $\rightarrow$ & AS $\mid$ b \\ + X & $\rightarrow$ & AS $\mid$ b \\ + A & $\rightarrow$ & a \\ + \end{tabular} + \end{tabular} + + Die fertige Grammatik H in CNF, für die gilt $L(H)=L(G)\backslash \{\varepsilon \}$, sieht also folgendermaßen aus: + + H = (V, $\Sigma$, P, S) mit V = \{S, X, Y, Z, A\}, $\Sigma$ = \{a, b\} und P: + + \begin{tabular}{lcl} + S & $\rightarrow$ & AZ \\ + Z & $\rightarrow$ & XY \\ + Y & $\rightarrow$ & AS $\mid$ b \\ + X & $\rightarrow$ & AS $\mid$ b \\ + A & $\rightarrow$ & a \\ + \end{tabular} \\ + +\paragraph{(b)} + \textbf{Erklärung} \\ + Zwei Einschränkungen gilt es zu beachten: CNF und $|V| \leq 5$. Außerdem darf die Grammatik einzig und allein das Wort \glqq aaaaaaaaaaaa\grqq\ erzeugen. \\ + Eine Nichtterminal wird benötigt, um mittels der Regel $E\rightarrow a$ letztendlich die Terminale zu erzeugen. + Würden alle vier übrigen Variablen die Anzahl der erzeugten $a$'s mit Regeln der Form $A\rightarrow BB$ verdoppeln, würde man $2^4=16\ a$'s erhalten. Um die Anzahl zu reduzieren wird im dritten Ableitungsschritt eine Regel der Form $C\rightarrow DE$ eingebaut. So werden im vorletzten Ableitungsschritt nur die $D$'s erneut verdoppelt, während die $E$'s direkt auf Terminalsymbole abgeleitet werden. Somit werden, wie erwünscht, nur $2^3 + 2^2 = 8 + 4 = 12\ a$'s erzeugt. + + Die gesuchte Grammatik ist also $G = (V, \Sigma, P, A)$ mit $V = \{A, B, C, D, E\}$ und $P$: + + \begin{tabular}{lcl} + A & $\rightarrow$ & BB \\ + B & $\rightarrow$ & CC \\ + C & $\rightarrow$ & DE \\ + D & $\rightarrow$ & EE \\ + E & $\rightarrow$ & a \\ + \end{tabular} + +\paragraph{(c)} + Sei $G = (\Sigma, V, S, P)$ eine kontextfreie Grammatik. Wir konstruieren eine kontextfreie Grammatik $H = (\Sigma, V', S', P')$, für die $L(H) = \{ w \in L(M) \mid |w| \text{ ist gerade }\}$ gilt, wie folgt: + + \begin{itemize} + \item $V' = \{X_g, X_u | X \in V\}$ + \item $S' = S_g$ + \item $P'$ enthält für alle $X\rightarrow YZ \in P$ und $X\rightarrow a \in P$ mit $X, Y, Z\in V$ und $a \in \Sigma$: + \begin{align*} + &X_g\rightarrow Y_gZ_g\\ + &X_g\rightarrow Y_uZ_u\\ + &X_u\rightarrow Y_gZ_u\\ + &X_u\rightarrow Y_uZ_g\\ + &X_u\rightarrow a + \end{align*} + \end{itemize} + + \textbf{Erklärung:}\\ + Die Variablen von $G$ werden zu je zwei Variablen in $H$, von denen jeweils eine ($X_g$) Wörter gerader Länge, und die andere ($X_u$) Wörter ungerader Länge erzeugt. Deshalb wurden auch die Regeln $X_g\rightarrow a$ weggelassen, da $|a|=1$ ungerade ist. Durch die Wahl von $S_g$ als Startvariable und die mathematischen Rechenregeln (ungerade und gerade ergibt ungerade, ungerade und ungerade ergibt gerade,\ldots) wird gewährleistet, dass von $H$ nur gerade Wörter erzeugt werden können. diff --git a/sol/thinf/h23t2/a4.tex b/sol/thinf/h23t2/a4.tex new file mode 100644 index 0000000..cf6b0a5 --- /dev/null +++ b/sol/thinf/h23t2/a4.tex @@ -0,0 +1,30 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 4: Berechenbarkeit} + +\paragraph{(a)} + Falsch, $L$ kann auch nicht semi-entscheidbar sein.\\ + Seien $L(M_1)=\{\}$ und $L(M_2)=\Sigma^*$ zwei von trivialen TM $M_1$ und $M_2$ entschiedene Sprachen. Dann gilt für alle formalen Sprachen $L(M_1)=\{\}\subseteq L\subseteq \Sigma^*=L(M_2)$, also z.B. auch für $L=\{c(M) |\ M \text{ ist TM und hält nicht auf } c(M)\}$. Diese Sprache ist als das Komplement zum Halteproblem jedoch bekanntermaßen nicht semi-entscheidbar. + +\paragraph{(b)} + Falsch, $L_1 \ L_2$ ist nicht semi-entscheidbar.\\ + Mit der Wahl $L_1=\{c(M) |\ M \text{ ist TM}\}$ und $L_2=\{c(M) |\ M \text{ ist TM und hält auf } c(M)\}$ erhält man für $L_1 \ L_2 = \{c(M) |\ M \text{ ist TM und hält auf } c(M)\}$. Dabei sind $L_1$ (reiner Synthax-Check) und $L_2$ (Selbstanwendungsproblem, Variante des klassischen Haltproblems) semi-entscheidbar, $L_1 \ L_2$ ist aber das Komplement des Selbstanwendungsproblems und kann somit nicht semi-entscheidbar sein. Sonst wäre nämlich das Selbstanwendungsproblem entscheidbar, was bekanntermaßen nicht der Fall ist. + +\paragraph{(c)} + Wahr, $L'$ ist entscheidbar.\\ + Eine Turing-Maschine $M'$, die $L'$ entscheidet, kann folgendermaßen konstruiert werden: + \begin{itemize} + \item Die TM erhält als Eingabe $w = w_1w_2...w_n$ (wobei $n=|w|$). + \item $M'$ simuliert als universelle TM die TM $M$, welche $L$ entscheidet, auf der Eingabe. Dabei werden der Reihe nach die Teilwörter $\varepsilon,w_1,w_1w_2,...$ untersucht, bis ein $u:=w_1...w_k$ mit $k \in \{0,1,2,...,n\}$ gefunden wurde, das von $M$ akzeptiert wird. + \item $M'$ simuliert nun $M$ auf der Eingabe $v:=w_{k+1}...w_n$, sodass $w=uv$ gilt. Falls $v$ von $M$ akzeotiert wird, hält $M'$ und akzeptiert. Ansonsten wird mit dem vorherigen Schritt fortgefahren. Wurden alle möglichen Zerlegungen von $w$ in $uv$ erfolglos getestet, hält $M'$ und akzeptiert nicht. + \end{itemize} + So eine TM $M$ gibt es, da $L$ entscheidbar ist. Nach dem beschriebenen Verfahren entscheidet $M'$ die Sprache $L'$ in endlicher Zeit und es gilt $L(M')=L'$. Daher ist auch $L'$ entscheidbar. + +\paragraph{(d)} + Wahr, $L'$ muss unentscheidbar sein.\\ + Angenommen $L'$ wäre entscheidbar. Dann gibt es eine TM $M'$, welche $L'$ entscheidet. Daraus lässt sich eine TM $M$ konstruieren, die $L$ entscheidet: + \begin{itemize} + \item Die TM erhält als Eingabe $w = w_1w_2...w_n$ (wobei $n=|w|$). + \item $M$ simuliert als universelle TM die TM $M'$, welche $L'$ entscheidet, auf der Eingabe. Dabei werden der Reihe nach die Teilwörter $\varepsilon,w_1,w_1w_2,...$ untersucht. Sobald ein $u:=w_1...w_k$ mit $k \in \{0,1,2,...,n\}$ gefunden wurde, das von $M'$ akzeptiert wird, hält $M$ und akzeptiert. + \item Wurden alle möglichen Zerlegungen von $w$ in $uv$ erfolglos getestet, hält $M$ und akzeptiert nicht. + \end{itemize} + Diese TM $M$ entscheidet $L$, was einen Widerspruch zu der Vorraussetzung darstellt, das $L$ unentscheidbar ist. Folglich muss die Annahme falsch gewesen sein und auch $L'$ ist unentscheidbar. + diff --git a/sol/thinf/h23t2/a5.tex b/sol/thinf/h23t2/a5.tex new file mode 100644 index 0000000..b3e6608 --- /dev/null +++ b/sol/thinf/h23t2/a5.tex @@ -0,0 +1,51 @@ +\subsubsectionwithauthor[author={Mika Landeck},email={mika.landeck@fau.de}]{Aufgabe 5: Reduktion} +Wir geben einen deterministischen Algorithmus an, der Negierte-KNF-SAT in polynomieller Zeit entscheidet: +\begin{enumerate} + \item \textbf{Eingabe}: Eine KNF-Formel \( F = \bigwedge_{i=1}^m C_i \), wobei jede Klausel \( C_i \) eine Disjunktion von Literalen ist. + + \item \textbf{Formelnegation}: Negiere die gesamte KNF-Formel \( F \) nach De Morgan (in \( O(m) \) für \( m \) Klauseln): + \[ + \neg F = \neg \left( \bigwedge_{i=1}^m C_i \right) = \bigvee_{i=1}^m \neg C_i + \] + Jede negierte Klausel \( \neg C_i \) wird zu einer Konjunktion von negierten Literalen (in \( O(n) \) für \( n \) Literale in der Klausel). Somit ist \( \neg F \) eine DNF-Formel. + + \item \textbf{Erfüllbarkeit der DNF-Formel}: Man überprüfe, ob die resultierende DNF-Formel \( \neg F \) erfüllbar ist (in \( O(n) \) für \( n \) Literale in der Klausel), indem man über jede Konjunktion in der DNF-Formel iteriert (in \( O(m) \) für \( m \) Klauseln). Eine Konjunktion ist genau dann erfüllbar, wenn sie keine widersprüchlichen Literale enthält (z.B., sowohl \( x \) als auch \( \neg x \)). + + \item \textbf{Entscheidung}: Wenn mindestens eine Konjunktion in der DNF-Formel \( \neg F \) erfüllbar ist, dann ist \( \neg F \) erfüllbar. Andernfalls ist \( \neg F \) nicht erfüllbar. +\end{enumerate} + +Da sowohl die Negation als auch die Erfüllbarkeitsprüfung in polynomialer Zeit durchgeführt werden können, löst dieser deterministische Algorithmus das Problem Negierte-KNF-SAT in polynomieller Zeit. Damit ist nachgewiesen, dass \underline{Negierte-KNF-SAT in P} liegt.\\ + +Für das andere Problem wird zunächst ein NP-vollständiges Problem gewählt, auf das reduziert werden kann. Der Satz von Cook (bzw. Levin) sagt aus, dass SAT (Erfüllbarkeit allgemeiner aussagenlogischer Formeln) NP-vollständig ist. Da jede SAT-Formel in polynomialer Zeit in eine äquivalente KNF-Formel umgewandelt werden kann, ist somit auch KNF-SAT NP-vollständig. + +Nun wird eine polynomielle Komplexitäts-Reduktion von KNF-SAT auf KNF-Nicht-Äquivalenz durchgeführt. Dazu wird eine totale und in polynomieller Zeit berechenbare Funktion $f$ benötigt, die Probleme aus KNF-SAT auf Probleme aus KNF-Nicht-Äquivalenz abbildet: + +Sei $f:$ KNF-SAT $\rightarrow$ KNF-Nicht-Äquivalenz definiert über $F\mapsto f(F)=(F,F\wedge (false))$. + +$f$ ist offensichtlich total, da für alle F in KNF-SAT definiert. Außerdem lässt sich eine DTM konstruieren, die $f$ in polynomieller Laufzeit berechnet: Kopieren von F und Ergänzen der Konjugation mit $(false)$ (in \( O(n) \) bei Länge \( n \) der Eingabe). + +Es bleibt noch zu zeigen, dass $F \in $ KNF-SAT $ \Leftrightarrow f(F) \in$ KNF-Nicht-Äquivalenz gilt. Dies beweisen folgende Äquivalenzumformungen ($\forall F \in$ KNF-SAT): +\begin{align*} + F \in \text{KNF-SAT} \Longleftrightarrow\ & F\text{ ist aussagenlogische Formel in KNF mit einer erfüllenden Belegung}\\ + \Leftrightarrow\ & f(F)=(F,F\wedge (false))\text{ ist ein Paar aussagenlogischer Formeln in KNF }\\ + & \text{und } F \text{ besitzt eine erfüllende Belegung}\\ + \Leftrightarrow\ & f(F)=(F,F\wedge (false))\text{ ist ein Paar aussagenlogischer Formeln in KNF }\\ + & \text{und es gibt eine Belegung, die } F \text{ erfüllt und } F\wedge (false) \text{ nicht erfüllt}\\ + \Leftrightarrow\ & f(F)=(F,F\wedge (false))\text{ ist ein Paar aussagenlogischer Formeln in KNF }\\ + & \text{und } F \text{ und } F\wedge (false) \text{ sind nicht äquivalent}\\ + \Leftrightarrow\ & f(F) \in \text{KNF-Nicht-Äquivalenz} +\end{align*} +Da KNF-SAT NP-vollständig ist, ist also KNF-Nicht-Äquivalenz NP-hart. + +Um nachzuweisen, dass KNF-Nicht-Äquivalenz in NP liegt, wird ein entsprechender nichtdeterministischer Entscheider konstruiert: +\begin{itemize} + \item Die NTM M' rät nichtdeterministisch eine Belegung B - falls eine Belegung existiert, welche genau eine der Formeln F und G erfüllt und die andere nicht, dann wird diese gewählt (in $O(m)$ mit m ist Anzahl der Literale). + \item M' überprüft, ob B die Formel F erfüllt (in $O(n)$ mit n Länge der Eingabe). + \item Falls JA, überprüft M', ob B die Formel G nicht erfüllt (in $O(n)$ mit n Länge der Eingabe). Andernfalls überprüft M', ob B die Formel G erfüllt (in $O(n)$ mit n Länge der Eingabe). + \item Falls JA, hält M' und akzeptiert. Andernfalls hält M' und akzeptiert nicht (in $O(1)$). +\end{itemize} + +Der Entscheider arbeitet in polynomieller Zeit. Somit liegt \underline{KNF-Nicht-Äquivalenz} in NP und zusammen mit der NP-Härte folgt, dass das Problem \underline{NP-vollständig} ist.\\ + +Da nach Angabe $P\neq NP$ gilt, kann \underline{Negierte-KNF-SAT nicht NP-vollständig} sein und \underline{KNF-Nicht-} +\underline{Äquivalenz nicht in P} liegen. \ No newline at end of file