diff --git a/Automaten, Sprachen und Komplexität - Flashcards.pdf b/Automaten, Sprachen und Komplexität - Flashcards.pdf index a06a387..572d073 100644 Binary files a/Automaten, Sprachen und Komplexität - Flashcards.pdf and b/Automaten, Sprachen und Komplexität - Flashcards.pdf differ diff --git a/Automaten, Sprachen und Komplexität - Flashcards.tex b/Automaten, Sprachen und Komplexität - Flashcards.tex index 0b8d645..6f2ca80 100644 --- a/Automaten, Sprachen und Komplexität - Flashcards.tex +++ b/Automaten, Sprachen und Komplexität - Flashcards.tex @@ -14,7 +14,6 @@ \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Alphabet} Ein Alphabet ist eine endliche nichtleere Menge. @@ -22,7 +21,6 @@ Ein Alphabet ist eine endliche nichtleere Menge. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Menge der endlichen Folgen} Für eine Menge X ist X* die Menge der endlichen Folgen über X.\\ @@ -30,20 +28,17 @@ Ein Alphabet ist eine endliche nichtleere Menge. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Wort} Sind $u=(a_1, a_2, ...a_n)$ und $v=(b_1, b_2,...,b_n)$ Wörter, so ist $u*v$ das Wort $(a_1,a_2,...a_n,b_1,b_2,...,b_n)$; es wird als Verkettung/Konkatenation von u und v bezeichnet. An Stelle von $u*v$ schreibt man auch $uv$. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Induktiv $w^n$ definieren} -$$w^n = \begin{cases} \epsilon \quad\text{falls } n=0 \\ {w * w^{n-1}} \quad\textfalls } n>0 \end{cases}$$ +$w^n = \begin{cases} \epsilon \quad\text{falls } n=0 \\ {w * w^{n-1}} \quad\text{ falls } n>0 \end{cases}$ \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{y,w sind Wörter über $\sum$. Dann heißt y:} \begin{itemize} \item Präfix/Anfangsstück von w, wenn es $z\in\sum^*$ gibt mit $yz=w$ @@ -53,32 +48,27 @@ $$w^n = \begin{cases} \epsilon \quad\text{falls } n=0 \\ {w * w^{n-1}} \quad\tex \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Sprachen} f: Menge der möglichen Eingaben $\rightarrow$ Menge der möglichen Ausgaben\\ Spezialfall $A={0,1}$ heißt Entscheidungsproblem. Sie ist gegeben durch die Menge der Eingaben. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Präfix} Seien y,w Wörter über $\sum$. Dann heißt Präfix/Anfangsstück von w, wenn es $z\in\sum*$ gibt mit $yz=w$. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Infix} Seien y,w Wörter über $\sum$. Dann heißt Infix/Faktor von w, wenn es $x,z \in \sum*$ gibt mit $xyz=w$. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Suffix} Seien y,w Wörter über $\sum$. Dann heißt Suffix/Endstück von w, wenn es $x\in \sum*$ gibt mit $xy=w$. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{formale Sprachen} Sei $\sum$ ein Alphabet. Teilmengen von $\sum*$ werden formale Sprachen über $\sum$ genannt. @@ -91,14 +81,12 @@ Sind $L_1$ und $L_2$ Sprachen, so heißt die Sprache $L_1L_2=\{w|\exists w_1\in \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Kleene Abschluss} Sei L eine Sprache. Dann ist $L*=\bigcup_{n\geq 0} L^n$ der Kleene-Abschluss oder die Kleene-Iteration von L. Weiter ist $L^{+} = \bigcup_{n\geq 0} L^n$\\ ($L^{+} = L*L = L^* *L$) \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Prioritätsregeln für Operationen auf Sprachen} \begin{itemize} \item Potenz/Iteration binden stärker als Konkatenation @@ -183,7 +171,7 @@ Die Sprache $L(G)={w\in \sum^* | S\Rightarrow_G^* w}$ aller Satzformen aus $\sum \item $Z$ eine endliche Menge von Zuständen \item $\sum$ das Eingabealphabet (mit $Z\cap\sum = \emptyset$) \item $z_0\in Z$ der Start/Anfangszustand (max Einer) - \item $\delta: Z \times \sum \rightarrow Z$ die Überführungs/Übergangsfunktion + \item $\delta: Z \times \sum \rightarrow Z$ die Übergangsfunktion \item $E\subseteq Z$ die Menge der Endzustände \end{itemize} Abkürzung: DFA (deterministic finite automaton) @@ -200,26 +188,850 @@ Abkürzung: DFA (deterministic finite automaton) \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{von einem DFA akzeptierte Sprache} die von einem DFA akzeptierte Sprache ist: $L(M)={w\in\sum^* | \hat{\delta}(z_0,w)\in E}$\\ Mit anderen Worten: Ein Wort w wird genau dann akzeptiert, wenn derjenige Pfad, der im Anfangszustand beginnt und dessen Übergänge mit den Zeichen von w markiert sind, in einem Endzustand endet. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{flashcard}[Definition]{Wann ist eine Sprache regulär?} Eine Sprache $L \supseteq \sum^*$ ist regulär, wenn es einen DFA mit $L(M)=L$ gibt ( bzw. wird von einem DFA akzeptiert). Jede reguläre Sprache ist rechtslinear. \end{flashcard} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%V3-10 +\begin{flashcard}[Definition]{ ein nichtdeterministischer endlicher Automat M} ist ein 5-Tupel $M=(Z,\sum,S,\delta,E)$ mit +- $Z$ ist eine endliche Menge von Zuständen +- $\sum$ ist das Eingabealphabet +- $S\subseteq Z$ die Menge der Startzustände (können mehrere sein) +- $\delta: Z \times \sum \rightarrow P(Z)$ ist die (Menge der) Überführungs/Übergangsfunktion +- $E\subseteq Z$ die Menge der Endzustände +\end{flashcard} + + +\begin{flashcard}[Definition]{ Zu einem gegebenen NFA M definieren wir die Funktion $\hat{\delta}:P(Z)\times \sum^* \rightarrow P(Z)$} + induktiv wie folgt, woebei $Y \subseteq Z$, $w\in \sum^*$ und $a\in\sum$: $\hat{\delta}(Y,\epsilon)=Y$, $\hat{\delta}(Y,aw)=\hat{delta}(\bigcup \delta(z,a),w)$ + \end{flashcard} + +\begin{flashcard}[Definition]{ die von einem NFA M akzeptierte Sprache ist} $L(M)={w\in \sum^* | \hat{\delta}(S,w)\cap E \not = \emptyset}$ +( Das Wort wird akzeptiert wenn es mindestens einen Pfad vom anfangs in den endzustand gibt) +\end{flashcard} + +\begin{flashcard}[Satz]{ Sei $\sum$ ein Alphabet und $L\subseteq \sum^*$ eine Sprache. Dann sind äquivalent} +> 1. L ist regulär (d.h. von einem DFA akzeptiert) +> 2. L wird von einem NFA akzeptiert +> 3. L ist rechtslinear (d.h. von einer Typ-3 Grammatik erzeugt) +\end{flashcard} + +\begin{flashcard}[Definition]{ Gegeben sei eine Klasse K und ein n-stelliger Operator $\otimes : K^n \rightarrow K$.} + Man sagt, eine Klasse $K'\subseteq K$ ist unter $\otimes$ abgeschlossen, wenn für beliebige Elemente $k_1,k_2,...,k_n\in K'$ gilt $\otimes (k_1,k_2,...,k_n)\in K'$ +\end{flashcard} + +\begin{flashcard}[Satz]{ Wenn $L\subseteq \sum^*$ eine reguläre Sprache ist,} dann ist auch $\sum^* \backslash L$ regulär +\end{flashcard} + +\begin{flashcard}[Satz]{ Wenn $L_1$ und $L_2$ reguläre Sprachen sind,} dann ist auch $L_1 \cup L_2$ regulär. +\end{flashcard} + +\begin{flashcard}[Satz]{ Wenn $L_1$ und $L_2$ reguläre Sprachen sind,} dann ist auch $L_1 \cap L_2$ regulär. +\end{flashcard} + +\begin{flashcard}[Satz]{ Wenn $L_1$ und $L_2$ reguläre Sprachen sind,} dann ist auch $L_1L_2$ regulär +\end{flashcard} + +\begin{flashcard}[Satz]{ Wenn L eine reguläre Sprache ist,} dann ist auch $L^+$ regulär +\end{flashcard} + +\begin{flashcard}[Satz]{ Wenn L eine reguläre Sprache ist,} dann ist auch $L^*$ regulär. +\end{flashcard} + +\begin{flashcard}[Definition]{ Die Menge $Reg(\sum)$ der regulären Ausdrücke über dem Alphabet $\sum$} ist die kleinste Menge mit folgenden Eigenschaften:\begin{itemize} +\item $\varnothing \in Reg(\sum), \lambda \in Reg(\sum), \sum \subseteq Reg(\sum)$ +\item Wenn $\alpha, \beta \in Reg(\sum)$, dann auch $(\alpha * \beta), (\alpha + \beta), (\alpha^*)\in Reg(\sum)$ + \end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ Für einen regulären Ausdruck $\alpha \in Reg(\sum)$ ist die Sprache $L(\alpha)\subseteq \sum^*$} induktiv definiert +$$L(\alpha)=\begin{cases} +\varnothing &\text{ falls } alpha=\not O \\ +{\epsilon} &\text{ falls } \alpha = \lambda \\ +{a} &\text{ falls } \alpha=a\in \sum \\ +L(\beta)\cup L(\gamma) &\text{ falls } \alpha =(\beta + \gamma)\\ +L(\beta)L(\gamma) &\text{ falls } \alpha=(\beta*\gamma)\\ +(L(\beta))^* &\text{ falls } \alpha=(\beta^*) +\end{cases}$$ +\end{flashcard} + + +\begin{flashcard}[Satz]{ Für jedes Alphabet $\sum$ ist die Menge $P(\sum^*)={L|L \text{Sprache über} \sum}$ überabzählbar} +, d.h. es gibt keine bijektive Funktion $F:\mathbb{N} \rightarrow P(\sum^*)$. +\end{flashcard} + +\begin{flashcard}[]{Pumping Lemma} +Wenn L eine reguläre Sprache ist, dann gibt es $n\leq 1$ derart, dass für alle $x\in L$ mit $|x|\geq n$ gilt: es gibt Wörter $u,v,w \in \sum^*$ mit: +1. $x=uvw$ +2. $|uv|\leq n$ +3. $|v|\geq 1$ +4. $uv^i w\in L$ für alle $i\geq 0$ +Dieses Lemma spricht nicht über Automaten, sondern nur über die Eigenschaften der Sprache. Es ist geeignet, Aussagen über Nicht-Regularität zu machen. Dabei ist es aber nur eine notwendige Bedingung. Es kann nicht genutzt werden, um die Regularität einer Sprache L zu zeigen. +\end{flashcard} + + +\begin{flashcard}[Definition]{Myhill-Nerode-Äquivalenz} Für eine Sprache $L\subseteq \sum^*$ definieren wir eine binäre Relation $R_L \subseteq \sum^* \times \sum^*$ wie folgt: Für alle $x,y\in \sum^*$ setze $(x,y)\in R_L$ genau dann, wenn $\forall z \in \sum^* :(xy\in L \leftrightarrow yz \in L)$ gilt. Wir schreiben hierfür auch $x R_L y$. +\end{flashcard} + +\begin{flashcard}[Definition]{ Für eine Sprache L und ein Wort $x\in \sum^*$ ist $[x]_L=\{y\in\sum^* | x R_L y \}$ }die Äquivalenzklasse von x. Ist L klar, so schreiben wir einfacher $[x]$. +\end{flashcard} + +\begin{flashcard}[Satz]{ Satz von Myhill-Nerode} Sei L eine Sprache. L ist regulär $\leftrightarrow index(R_L)< \infty$ +(d.h. nur wenn die Myhill-Nerode-Äquivalenz endliche Klassen hat) +\end{flashcard} + +\begin{flashcard}[Definition]{ Ein DFA M heißt reduziert,} wenn es für jeden Zustand $z \in Z$ ein Wort $x_z\in \sum^*$ gibt mit $\hat{\sigma}(l, x_z)=z$ +\end{flashcard} + +\begin{flashcard}[Definition]{ Sei M ein DFA. Zwei Zustände $z,z'\in Z$ heißen erkennungsäquivalent }(in Zeichen $z\equiv z'$) wenn für jedes Wort $w\in \sum^*$ gilt: $\hat{\sigma}(z,w)\in E \leftrightarrow \hat{\sigma}(z',w)\in E$ +\end{flashcard} + +\begin{flashcard}[Definition]{ Sei M ein DFA. Dann ist $M'=(Z_{\equiv},\sum, [z_0],\sigma', E')$ mit}\begin{itemize} +\item $\sigma'([z],a)=[\sigma (z,a)]$ für $z\in Z$ und $a\in \sum$ und +\item $E'=\{[z]|z\in E\}$ +\end{itemize} +der Quotient von M bzgl $\equiv$ +\end{flashcard} + + +\begin{flashcard}[Definition]{Homomorphismus} + Seien $M_i$ DFAs (für $i\in\{1,2\}$) und $f:Z_1 \rightarrow Z_2$ eine Funktion. Dann ist f ein Homomorphismus von $M_1$ auf $M_2$, falls gilt: +\begin{itemize} +\item $f(l_1)=l_2$ +\item $f(\sigma_1(z,a))=\sigma_2(f(z),a)$ für alle $z\in Z_1$ und $a\in \sum$ +\item $z\in E_1 \leftrightarrow f(z)\in E_2$ für alle $z\in Z_1$ (bildet Endzustände aufeinander ab) +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Satz]{surjektiver Homomorphismus} + Seien $M_i$ reduzierte DFAs mit $L(M_1)=L(M_2)$. Sei weiter $M_2'$ der Quotient von $M_2$ bzgl $\equiv$. Dann existiert ein surjektiver Homomorphismus von $M_1$ auf $M_2'$ +- die Abbildung f ist surjektiv (auf $M_2$). Und damit ist $M_2 < M_1$ +- die Abbildung f ist ein Homomorphismus +\end{flashcard} + +\begin{flashcard}[Satz]{ Seien $M_1$ und $M_2$ reduzierte DFAs mit $L(M_1)=L(M_2)$. Sei $M_1'$ der Quotient von M bzgl $\equiv$}\begin{itemize} +\item $M_2$ hat wenigstens so viele Zustände wie $M_1'$ +\item Hat $M_2$ genauso viele Zustände wie $M_1'$, so sind $M_2$ und $M_1'$ bis auf Umbennenung der Zustände identisch (sie sind Isomorph) +\end{itemize} + +Folgerung: Seien $M_1$ und $M_2$ reduzierte DFAs mit $L(M_1)=L(M_2)$. Seien $M_1'$ und $M_2'$ die Quotienten bzgl $\equiv$. Dann sind $M_1'$ und $M_2'$ isomorph, d.h. für jede reguläre Sprache gibt es (bis auf Umbenennung der Zustände) genau einen minimalen DFA + +Um den minimalen DFA zu erhalten bildet man den Quotienten eines beliebigen zur Sprache passenden DFA. +\end{flashcard} + +\begin{flashcard}[Satz]{Markierungsalgorithmus} Für einen reduzierten DFA M wird ein Paar ${z,z'}\subseteq Z$ mit $z\not = z'$ genau dann durch den Markierungsalgorithmus markiert werden, wenn $z\not \equiv z'$ +\end{flashcard} + +\begin{flashcard}{Algorithmus Minimalautomat} +Eingabe: reduzierter DFA M\\ +Ausgabe: Menge der Paare erkennungsäquivalenter Zustände +1. Stelle eine Tabelle aller ungeordneten Zustandspaare $\{z,z'\}$ mit $z\not = z'$ auf +2. Markiere alle Paare $\{z,z'\}$ mit $z\in E$ und $z'\not\in E$ +3. Markiere ein beliebiges unmarkiertes Paar $\{z,z'\}$, für das es ein $a\in\sum$ gibt, sodass $\{\sigma(z,a),\sigma(z',a)\}$ bereits markiert ist (falls möglich) +4. Wiederhole den vorherigen Schritt, bis sich keine Änderung in der Tabelle mehr ergibt +\end{flashcard} + +\begin{flashcard}[Satz]{Minimierungsalgorithmus} Für einen gegebenen reduzierten DFA M markiert der Minimierungsalgorithmus ein $\{z,z'\}(z,z'\in Z, z\not=z')$ genau dann, wenn $z\not\equiv z'$ +\end{flashcard} + + +\begin{flashcard}{Wortproblem} +Gilt $w\in L$ für eine gegebene reguläre Sprache L und $w\in\sum^*$? + +Eingabe: DFA M und $w\in\sum^*$ + +Verfahren: Verfolge die Zustandsübergänge von M, die durch die Symbole $a_1,...,a_n$ vorgegeben sind. +\end{flashcard} + + +\begin{flashcard}{Leerheitsproblem} +Gilt $L=\varnothing$ für eine gegebene reguläre Sprache L? + +Eingabe: NFA M + +Verfahren: Sei $G=(Z,\rightarrow)$ der gerichtete Graph mit $z\rightarrow z' \leftrightarrow \exists a \in \sum: z'\in\sigma(z,a)$. Dann gilt $L(M)\not =\varnothing$ genau dann, wenn es in dem Graphen G einen Pfad von einem Knoten aus S zu einem Knoten aus E gibt. Dies kann zB mit dem Algorithmus von Dijkstra entschieden werden. +\end{flashcard} + +\begin{flashcard}{Endlichkeitsproblem} +Ist eine gegebene reguläre Sprache L endlich? + +Eingabe: NFA M + +Verfahren: Sei $G=(Z,\rightarrow)$ wieder der gerichtete Graph mit $z\rightarrow z' \leftrightarrow \exists a \in\sum:z'\in\sigma(z,a)$. Dann gilt L(M) ist genau dann unendlich, wenn es $z\in Z,z_0\in S$ und $z_1\in E$ gibt mit $z_0\rightarrow^* z \rightarrow^+ z \rightarrow^* z_1$. D.h. z liegt auf einem Zyklus, ist von einem Startzustand aus erreichbar und von z kann ein Endzustand erreicht werden. Dies kann wieder mit dem Algorithmus von Dijkstra entschieden werden. +\end{flashcard} + +\begin{flashcard}{Schnittproblem} +Gilt $L_1\cap L_2=\varnothing$ für gegebene reguläre $L_1,L_2$? + +Eingabe: NFAs $M_1$ und $M_2$ + +Verfahren: Konstruiere aus $M_1$ und $M_2$ einen NFA M mit $L(M)=L(M_1)\cap L(M_2)$. Teste ob $L(M)=\varnothing$ +\end{flashcard} + +\begin{flashcard}{Inklusionsproblem} +Gilt $L_1 \subseteq L_2$ für gegebene reguläre $L_1,L_2$? + +Eingabe: NFAs $M_1$ und $M_2$ + +Verfahren: Aus $M_1$ und $M_2$ kann ein NFA M mit $L(M)=\bar{L(M_2)}\cap L(M_1)$ konstruieren. Es gilt $L(M_1)\subseteq L(M_2)$ genau dann, wenn $L(M)=\varnothing$. +\end{flashcard} + +\begin{flashcard}{Äquivalenzproblem} +Gilt $L_1=L_2$ für gegebene reguläre $L_1,L_2$? + +Eingabe: NFAs $M_1$ und $M_2$ + +Verfahren 1: es gilt $L(M_1)=L(M_2)$ genau dann, wenn $L(M_1)\subseteq L(M_2)$ und $L(M_2)\subseteq L(M_1)$. + +Verfahren 2: bestimme zu $M_i (i\in\{1,2\})$ den äquivalenten minimalen DFA $N_i$. Dann gilt $L(M_1)=L(M_2)$ genau dann, wenn $N_1$ und $N_2$ isomorph sind (d.h. sie können durch Umbennenung der Zustände ineinander überführt werden). +\end{flashcard} + +\begin{flashcard}{Kontextfreie Sprachen} +bei Kontext-freien Grammatiken haben alle Produktionen die Form $A\rightarrow w$ mit $A\in V$ und $w\in (V\cup \sum)^*$. +\end{flashcard} + + +\begin{flashcard}[Definition]{Ableitungsbaum} Sei G eine kontext-freie Grammatik und $X\in V\cup \sum$. Ein X-Ableitungsbaum ist ein gerichteter, geordneter Baum T mit Wurzel, dessen Knoten mit Elementen von $V\cup\sum\cup\{\epsilon\}$ beschriftet sind, wobei:\begin{itemize} +\item die Wurzel mit X beschriftet ist +\item Knoten $v$ mit $a\in\sum\cup\{\epsilon\}$ beschriftet $\Rightarrow$ v ist ein Blatt +\item Knoten $v$ mit $A\in V$ beschriftet und kein Blatt $\Rightarrow$ + \begin{itemize} +\item es gibt eine Produktion $A\rightarrow X_1...X_r$ mit $X_1...X_r\in\sum\cup V$ $(r\geq 1)$ sodass die Nachfolgerknoten von $v$ mit $X_1,X_2,...,X_r$ beschriftet sind +\item oder es gibt Produktion $A\rightarrow \epsilon$ und $v$ hat genau einen Nachfolger; dieser ist mit $\epsilon$ beschriftet +\end{itemize} +\item Das Blattwort $\alpha(T)$ des X-Ableitungsbaumes T erhält man, indem man die Beschriftungen der Blätter von links nach rechts betrachtet. Ein Ableitungsbaum ist ein S-Ableitungsbaum. +\item ein X-Ableitungsbaum ist vollständig, wenn seine Blätter mit Elementen von $\sum\cup\{\epsilon\}$ beschriftet sind. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{Linksableitung} Eine Ableitung heißt Linksableitung wenn in jedem Schritt das am weitesten links stehende Nichtterminal ersetzt wird. +\end{flashcard} + +\begin{flashcard}[Definition]{kontextfreie Grammatik} + Eine Kontextfreie Grammatik G heißt mehrdeutig, wenn es zwei verschiedene vollständige Ableitungsbäume $T$ und $T'$ gibt mit $\alpha(T)=\alpha(T')$. + Sonst heißt G eindeutig, d.h. G ist eindeutig wenn jedes Wort $w\in L(G)$ genau eine Ableitung besitzt. + Eine Kontextfreie Sprache heißt inhärent mehrdeutig, wenn jede kontextfreie Grammatik mit $L=L(G)$ mehrdeutig ist +\end{flashcard} + +\begin{flashcard}[Definition]{Chomsky Normalform} Eine kontextfreie Grammatik g ist in Chomsky Normalform, falls\begin{itemize} +\item alle Produktionen von G die Form $A\rightarrow AB$ oder $A\rightarrow a$ haben +\item oder alle Produktionen von G die Form $A\rightarrow BC$ oder $A\rightarrow a$ oder $S\rightarrow\epsilon$ haben und S nie auf der rechten Seite einer Produktion vorkommt. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Satz]{ Zu jeder kontextfreien Grammatik gibt es eine Grammatik G' in Chomsky Normalform mit} $L(G)=L(G')$ +\end{flashcard} + +\begin{flashcard}{Der Cocke-Younger-Kasami- oder CYK-Algorithmus} +Sei G kontextfreie Grammatik. Gesucht ist ein Algorithmus mit dessen Hilfe wir entscheiden können, ob ein gegebenes Wort zu L(G) gehört. +\end{flashcard} + +\begin{flashcard}[Definition]{ Ein Kellerautomat} M ist ein 6-Tupel $M=(Z,\sum,\Gamma, z_0, \delta, \#)$, wobei\begin{itemize} +\item Z die endliche Menge der Zustände +\item $\sum$ das Eingabealphabet +\item $\Gamma$ das Kelleralphabet +\item $z_o\in Z$ der Startzustand +\item $\delta: Z \times (\sum \cup \{\epsilon\})\times \Gamma \rightarrow P_{\epsilon}Z\times\Gamma^*)$ die Überführungsfunktion +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ Ein Konfiguration eines PDA} ist ein Tripel $k\in Z \times \sum^* \times \Gamma^*$ +- $z\in Z$ ist der aktuelle Zustand +- $w\in\sum$ ist der noch zu lesende Teil der Eingabe +- $\gamma \in \Gamma^*$ ist der aktuelle Kellerinhalt. Dabei steht das oberste Kellerzeichen ganz links + +Übergänge zwischen Konfigurationen ergeben sich aus der Überführungsfunktion $\delta$ +\end{flashcard} + +\begin{flashcard}[Definition]{ Seien $\gamma\in\Gamma^*, A_1B_1,...,B_k\in\Gamma, w, w'\in\sum^*$ und $z,z'\in Z$. Dann gilt $(z,w,A\gamma)\rightarrow (z',w', B_1...B_{k\gamma})$ genau dann, wenn} es $a\in\sum \cup\{\epsilon\}$ gibt mit $w=aw'$ und $(z',B_1...B_k)\in\delta(z,a,A)$ +\end{flashcard} + +\begin{flashcard}[Definition]{ Sei M ein PDA. Dann ist die von M akzeptierte Sprache:} $L(M)=\{x\in\sum^* | \text{es gibt } z\in Z \text{mit} (z_0, x, \#) [...] ^*(z,\epsilon, \epsilon)\}$ +\end{flashcard} + + +\begin{flashcard}[Definition]{ Sei M ein PDA. Dann ist die von M akzeptierte Sprache} + $L(M)=\{x\in\sum^* | \text{ es gibt } z\in Z \text{ mit } (z_0,x,\#)\vdash^* (z,\epsilon,\epsilon)\}$ + \end{flashcard} + +\begin{flashcard}[Definition]{ eine kontextfreie Grammatik G ist in Greibach Normalform} falls alle Produktionen aus P folgende Form haben: $A\rightarrow aB_1B_2...B_k$, mit $k\in \mathbb{N}$, $A,B_1,...,B_k\in V$ und $a\in \sum$ +Die Greibach Normalform garantiert, dass bei jedem Ableitungsschritt genau ein Alphabetsymbol entsteht. +\end{flashcard} + +\begin{flashcard}[Satz]{ aus einer kontextfreien Grammatik G kann eine kontextfreie Grammatik G' in Greibach Normalform berechnet werden mit} + $L(G')=L(G)\ \{\epsilon\}$. + +> Jede kontextfreie Sprache L ist Sprache eines PDA M mit nur einem Zustand. Gilt $\epsilon\not\in L$, so werden keine $\epsilon$-Transitionen benötigt + +> Ist M ein PDA, so ist L(M) kontextfrei +\end{flashcard} + +\begin{flashcard}[Satz]{ Sei L eine Sprache. Dann sind äquivalent}\begin{itemize} +\item L ist kontextfrei +\item es gibt einen PDA M mit $L(M)=L$ +\item es gibt einen PDA M mit nur einem Zustand und $L(M)=L$. Gilt $\epsilon\not\in L$, so sind diese Aussagen äquivalent zu +\item es gibt einen PDA M mit nur einem Zustand und ohne eine $\epsilon$-Transitionen, so dass $L(M)=L$ gilt +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{PDAs mit Endzuständen} Ein Kellerautomat mit Endzuständen oder PDAE ist ein 7-Tupel M, wobei $(Z,\sum,\Gamma, \iota, \delta, \#)$ ein PDa und $E\subseteq Z$ eine Menge von Endzuständen ist +\end{flashcard} + +\begin{flashcard}[Definition]{ Sei M ein PDAE. Die von M akzeptierte Sprache ist} $L(M)=\{w\in\sum^* | \text{es gibt } e\in E \text{ und } \gamma\in\Gamma^* \text{ mit } (\iota, w,\#)\vdash^* (e,\epsilon,\gamma)\}$ +\end{flashcard} + +\begin{flashcard}[Definition]{ ein deterministischer Kellerautomat oder DPDA ist ein PDAE M,} so dass für alle $z\in Z, a\in\sum, A\in\Gamma$ gilt: $|\delta(z,a,A)|+|\delta(z,\epsilon,A)|\leq 1$. +\end{flashcard} + +\begin{flashcard}[Definition]{ eine Sprache L ist deterministisch kontextfrei,} wenn es einen deterministischen Kellerautomaten M gibt mit $L(M)=L$ +\end{flashcard} + +\begin{flashcard}[Satz]{ Ist $L\subseteq \sum^*$ deterministisch kontextfrei, }so auch $\sum^*\backslash L$ +\end{flashcard} + +\begin{flashcard}[Satz]{} aus einem DPDA M kann ein DPDA M' berechnet werden mit $L/M')=\sum^*\backslash L(M)$ +\end{flashcard} + +\begin{flashcard}[Definition]{das Lemma von Ogden (William Ogden)} +Wenn L eine kontextfreie Sprache ist, dann gibt es $n\geq 1$ derart, dass für alle $z\in L$, in denen n Positionen markiert sind, gilt: es gibt Wörter $u,v,w,x,y\in\sum^*$ mit +\begin{itemize} +\item $z=uvwxy$ +\item v oder x enthält wenigstens eine der Markierungen oder +\item $uv^i wx^i y \in L$ für alle $i\geq 0$ + \end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ Wortproblem für eine kontextfreie Sprache $L$} + Gegeben $w\in\sum^*$. Gilt $w\in L$? +Ist die kontextfreie Sprache L durch eine kontextfreie Grammatik in Chomsky-Normalform gegeben, so kann das Wortproblem mit dem CYK-Algorithmus in Zeit $O(|w|^3)$ gelöst werden. +Ist L durch einen deterministischen PDA gegeben, so kann das Wortproblem für L sogar in Zeit $O(n)$ gelöst werden. +\end{flashcard} + +\begin{flashcard}[Definition]{ Uniformes Wortproblem für kontextfreie Sprachen} Gegeben kontextfreie Grammatik G und Wort $w\in\sum^*$. Gilt $w\in L(G)$? +Lösung:\begin{itemize} +\item berechne kontextfreie Grammatik G' in Chomsky Normalform mit $L(G)=L(G')$ +\item Wende CYK-Algorithmus auf die Frage $w\in L(G')$ an +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ Leerheitsproblem für kontextfreie Sprachen} Gegeben eine kontextfreie Grammatik $G=(V,\sum,P,S)$. Gilt $L(G)=\varnothing$ +Lösung: Sei $W=\{A\in V | \exists w\in\sum^*: A\Rightarrow_G^* w\}$ die Menge aller produktiven Nichtterminale. Dann gilt $L(G)\not= \varnothing \leftrightarrow S\in W$. Berechnung von W: +$W_0:=\{A\in V | \exists w\in\sum^*:(A\rightarrow w)\in P\}$ +\end{flashcard} + +\begin{flashcard}[Definition]{ Endlichkeitsproblem für kontextfreie Sprachen} Gegeben eine kontextfreie Grammatik G. Ist $L(G)$ endlich? +O.E. können wir annehmen, daß G in Chomsky-Normalform ist. Wir definieren einen Graphen $(W , E )$ auf der Menge der produktiven Nichtterminale mit folgender Kantenrelation: $E=\{(A,B)\in W\times W | \exists C \in W: (A\rightarrow BC)\in P \text{ oder } (A\rightarrow CB)\in P\}$ +Beobachtung: $(A,B)\in E$ gilt genau dann, wenn es einen vollständigen A-Ableitungsbaum gibt, so daß B ein Kind der Wurzel beschriftet. +\end{flashcard} + +\begin{flashcard}[Definition]{ Intuitiver Berechenbarkeitsbegriff} Eine Funktion $f:\mathbb{N}^k\rightarrow\mathbb{N}$ ist intuitiv berechenbar, wenn es einen Algorithmus gibt, der f berechnet, d.h.\begin{itemize} +\item das Verfahren erhält $(n_1,..., n_k)$ als Eingabe, +\item terminiert nach endlich vielen Schritten +\item und gibt $f(n_1,...,n_k )$ aus. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ Ein Loop-Programm ist von der Form}\begin{itemize} +\item $x_i := c, x_i := x_j + c, x_i := x_j \div c$ mit $c\in\{0, 1\}$ und $i, j$ (Wertzuweisung) oder +\item $P_1 ; P_2$, wobei $P_1$ und $P_2$ Loop-Programme sind (sequentielle Komposition) oder +\item loop $x_i$ do P end, wobei P ein Loop-Programm ist und $i_1$. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Die modifizierte Subtraktion $\div$ ist definiert durch $\div: \mathbb{N}^2 \rightarrow \mathbb{N}: (m,n)\rightarrow max(0,m-n)$ +\end{flashcard} + +\begin{flashcard}[Definition]{} Für jedes Loop-Programm P, in dem keine Variable $x_i$ mit $i>k$ vorkommt, definieren wir zunächst eine Funktion $[[P]]_k:\mathbb{N}^k\rightarrow \mathbb{N}^k$ durch Induktion über den Aufbau von P +\end{flashcard} + +\begin{flashcard}[Definition]{} Eine Funktion $f:\mathbb{N}^k\rightarrow\mathbb{N}$ (mit $k\geq 0$) heißt loop-berechenbar, falls es ein $l\geq k$ und ein Loop-Programm P, in dem höchstens die Variablen $\forall n_1,...,n_k\in\mathbb{N}:f(n_1,...,n_k)=\pi_1^l([[P]]_l(n_1,...,n_k,0,...,0))$. + +Loop-Vermutung: Eine Funktion $\mathbb{N}^k\rightarrow \mathbb{N}$ mit $k \geq 0$ ist genau dann intuitiv berechenbar, wenn sie loop-berechenbar ist. +\end{flashcard} + +\begin{flashcard}[Definition]{} Seien $k\geq 0, \mathbb{N}^k\rightarrow \mathbb{N}$ und $h:\mathbb{N}^{k+2}$. Die Funktion $f:\mathbb{N}^{k+1}\rightarrow\mathbb{N}$ mit $f(0,n_2,...,n_{k+2})=g(n_2,...,n_{k+1})$ und $f(m+1, n_2,...,n_{k+1})=h(f(m,n_2,...,n_{k+1}),m,n_2,...,n_{k+1})$ ensteht aus g und h mittels Rekursion. +\end{flashcard} + +\begin{flashcard}[Definition]{Hilberts Vermutung (1926)} Eine Funktion $\mathbb{N}^k\rightarrow\mathbb{N}$ mit $k\geq 0$ ist genau dann intuitiv berechenbar, wenn sie primitiv rekursiv ist. +\end{flashcard} + +\begin{flashcard}[Definition]{ Die primitiv rekursiven Funktionen sind induktiv wie folgt definiert} +\begin{itemize} +\item Alle konstanten Funktionen der Form $k_c:\mathbb{N}^0\rightarrow\mathbb{N}:()\rightarrow c$ (für ein festes $c\in\mathbb{N}$) sind primitiv rekursiv. +\item Alle Projektionen der Form $\pi_i^k:\mathbb{N}^k\rightarrow\mathbb{N}: (n_1,..., n_k)\rightarrow n_i$ (mit $1\geq i\geq k$) sind primitiv rekursiv. +\item Die Nachfolgerfunktion $s:\mathbb{N}\rightarrow\mathbb{N}: n\rightarrow n + 1$ ist primitiv rekursiv. +\item Wenn $f:\mathbb{N}^k\rightarrow\mathbb{N}$ und $g_11,...,g_k:\mathbb{N}^l\rightarrow\mathbb{N}$ (mit $k,l\geq 0$) primitiv rekursiv sind, dann ist auch die Funktion $f(g_1,..., g_k):\mathbb{N}^l\rightarrow\mathbb{N}$ primitiv rekursiv (Substitution). +\item Sind $g:\mathbb{N}^k\rightarrow\mathbb{N}$ und $h:\mathbb{N}^{k+2}\rightarrow\mathbb{N}$ primitiv rekursiv (mit $k\geq 0$) und entsteht $f:\mathbb{N}^{k+1}\rightarrow\mathbb{N}$ aus g und h mittels Rekursion, so ist auch f primitiv rekursiv (Rekursion). +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Seien $f,g: \mathbb{N}^{k+1}\rightarrow\mathbb{N}$ Funktionen mit +\begin{itemize} +\item $$g(m,\bar{n})= \begin{cases} 1 \quad\text{falls } \exists i\leq m: f(i,\bar{n}\geq 1) \\ 0 \quad\text{sonst} \end{cases}$$ +\item für alle $\bar{n}\in\mathbb{N}^k$. Wir sagen, g geht durch den beschränkten Existenzwuantor aus f hervor. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Die Funktion $ack:\mathbb{N}^2\rightarrow\mathbb{N}$ mit $ack(x,y,)=ack_x(y)$ heißt Ackermann Funktion +\end{flashcard} + +\begin{flashcard}[Definition]{} Sei P Loop-Programm mit Variablen $x_1,x_2,...,x_n$. Für Anfangswerte $(n_i)$ seien $(n'_i)$ die Werte der Variablen bei Programmende. + +$$f_p:\mathbb{N}\rightarrow\mathbb{N}: n\rightarrow max\{\sum_{1\leq i\leq l} n'_i | \sum_{1\leq i \leq l} n_i\leq n \}$$ +\end{flashcard} + +\begin{flashcard}[Satz]{ Die Ackermann Funktion ist nicht berechenbar} +Beweis indirekt: Angenommen P wäre Loop-Programm, das $ack$ berechnet. Nach Beschränkungslemma existiert $k\in\mathbb{N}$ mit $f_p(m)< ack_k(m)$, damit $ack_k(k)\leq f_p(2k)< ack_k(2k)$ im Widerspruch zum Monotonielemma. +\end{flashcard} + +\begin{flashcard}[Definition]{ Ein While Programm ist von der Form} +\begin{itemize} +\item $x_i=c; x_i=x_j+c; x_i=x_j-c$ mit $c\in\{0,1\}$ und $i,j\geq 1$ (Wertzuweisung) oder +\item $P_1;P_2$, wobei $P_1$ und $P_2$ bereits While Programme sind (sequentielle Komposition) oder +\item while $x_i\not = 0$ do P end, wobei P ein While Programm ist und $i\geq 1$. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} +Seien $r\in\mathbb{N}$ und $D\subseteq\mathbb{N}^r$. Eine Funktion $f:D\rightarrow\mathbb{N}$ heißt partielle Funktion von $\mathbb{N}^r$ nach $\mathbb{N}$. Wir schreiben hierfür $f:\mathbb{N}^r \rightarrow\mathbb{N}$. +\end{flashcard} + +\begin{flashcard}[Definition]{} wie bei Loop Programmen definieren wir zunächst für jedes While Programm P in dem keine Variable $x_i$ mit $i>k$ vorkommt induktiv eine partielle Abbildung $[[P]]_k:\mathbb{N}^k \rightarrow\mathbb{N}^k$. Hierfür sei $\bar{n}\in\mathbb{N}^k$ + \begin{itemize} +\item $[[x_i=c]]_k(n_1,...,n_k)=(m_1,...,m_k)$ genau dann, wenn $m_i=c$ und $m_l=n_l$ für $l\not = i$ +\item $[[x_i=x_j \pm c]]_k(n_1,...,n_k)=(m_1,...,m_k)$ genau dann, wenn $m_i=n_j\pm c$ und $m_l=n_l$ für $l\not = i$ +\item $[[P_1; P_2]]_k(\bar{n})$ ist genau dann definiert, wenn $\bar{m}=[[P_1]]_k(\bar{n})\in\mathbb{N}^k$ und $[[P_2]]_k(\bar{m})$ definiert sind. In diesem Falle gilt $[[P_1; P_2]]_k(\bar{n})=[[P_2]]_k([[P_1]]_k(\bar{n}))$, sonst undefiniert. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Eine partielle Funktion $f:\mathbb{N}^k\rightarrow\mathbb{N}$ heißt while Berechenbar, falls es ein $l\geq k$ und ein While Programm P, in dem höchstens die Variablen $x_1,...,x_l$ vorkommen, gibt, sodass für alle $n_1,...,n_k\in\mathbb{N}$ gilt:\begin{itemize} +\item $f(n_1,...,n_k)$ definiert $\leftrightarrow [[P]]_l(n_1,...,n_k,0,...,0)$ definiert +\item Falls $f(n_1,...,n_k)$ definiert ist, gilt $f(n_1,...,n_k)=\pi_1^l ([[P]]_l(n_1,...,n_k,0,...,0))$. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ Gödels Vermutung} +Eine partielle Funktion $\mathbb{N}^k\rightarrow\mathbb{N}$ ist gneau dann intuitiv berechenbar, wenn sie $\mu$-rekursiv ist. +\end{flashcard} + +\begin{flashcard}[Definition]{$\mu$-rekursive Funktion} Sei $f:\mathbb{N}^{k+1}\rightarrow\mathbb{N}$ eine partielle Funktion Dann ist $\mu f:\mathbb{N}^k\rightarrow\mathbb{N}$ definiert durch $\mu f(n_1,...,n_k)= min\{m| f(m,n_1,...,n_k)=0 \text{ und } \forall x< m: f(x,n_1,...,n_k) \text{ definiert } \}$. Dabei ist min $\varnothing$ undefiniert. Wir sagen, dass die Funktion $\mu f$ aus f durch den $\mu$-Operator hervorgeht. +\end{flashcard} + +\begin{flashcard}[Definition]{Die Klasse der $\mu$-rekursiven Funktionen ist rekursiv definiert} +\begin{itemize} +\item Alle konstanten Funktionen $k_m:\mathbb{N}^0\rightarrow\mathbb{N}:()\rightarrow m$, alle Projektionen $\pi_i^k:\mathbb{N}^k\rightarrow \mathbb{N}: (n_1,...,n_k)\rightarrow n_i$ und die Nachfolgerfunktion $s:\mathbb{N}\rightarrow \mathbb{N}:n\rightarrow n+1$ sind $\mu$-rekursiv. +\item Sind $f:\mathbb{N}^k \rightarrow \mathbb{N}$ und $g_1,...,g_k:\mathbb{N}^r\rightarrow\mathbb{N}$ $\mu$-rekursiv, so auch $F:\mathbb{N}^r\rightarrow\mathbb{N}$ mit $F(n) = f(g_1(\bar{n}),..., g_k(\bar{n}))$ (wobei $F(n)$ genau dann definiert ist, wenn $g_i(n)$ für alle i definiert ist und wenn f auf diesen Werten definiert ist). +\item Jede partielle Funktion f , die durch Rekursion aus $\mu$-rekursiven Funktionen entsteht, ist $\mu$-rekursiv. +\item Ist f $\mu$-rekursiv, so auch $\mu f$. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{Ein GoTo Programm} +ist eine endliche nichtleere Datei $P=A_1;A_2;...;A_m$ von Anweisungen $A_i$ der folgenden Form: +\begin{itemize} +\item $x_i=c, x_i=x_j+c, x_i=x_j-c$ mit $c\in\{0,1\}$ und $i,j\geq 1$ +\item goto l mit $0\leq l\leq m$ (unbedingter Sprung) +\item if $x_i=0$ then l mit $i\geq 1$ und $0\leq l \leq m$ (bedingter Sprung) +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Sei $P=A_1;A_2;...;A_m$ ein Goto Programm, in dem keine Variable $x_i$ mit $i>k$ vorkommt. Eine Konfiguration von P ist ein $(k+1)$-Tupel $(n_1,n_2,...,n_k,p)\in\mathbb{N}^k\times\{0,1,...,m\}$, wobei $n_i$ die Belegung der Variablen $x_i$ und p den Wert des Programmzählers beschreibt. +\end{flashcard} + +\begin{flashcard}[Definition]{} $[[P]]_k(\bar{n})$ ist definiert, falls es $\bar{n'}\in\mathbb{N}^k$ gibt mit $(\bar{n},1)\vdash_P^* (\bar{n'},0)$. In diesem Fall gilt $[[P]]_k(\bar{n})=\bar{n'}$ +\end{flashcard} + +\begin{flashcard}[Definition]{ Eine partielle Funktion $f:\mathbb{N}^k\rightarrow\mathbb{N}$ heißt Goto berechenbar,} falls es ein $l\geq k$ und ein Goto Programm P, in dem keine Variable $x_i$ mit $i>l$ vorkommt, gibt, sodass für alle $\bar{n}\in\mathbb{N}^k$ gilt:\begin{itemize} +\item $f(n)$ definiert $\leftrightarrow [[P]]_l(\bar{n},0,...,0)$ definiert +\item Falls $f(\bar{n})$ definiert ist, gilt $f(\bar{n})=\pi_1^l ([[P]]_l(\bar{n},0,...,0))$ + \end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Seien $P=A_1;A_2;...;A_m;$ ein GoTo Programm und $(\bar{n},p), (\bar{n'},p')$ zwei Konfigurationen. Wir setzen $(\bar{n},p)\vdash_P (\bar{n'},p')$, falls $p>0$ und eine der folgenden Bedingungen gilt:\begin{itemize} +\item $A_p=(x_i=c), n'_i=c, n'_l=n_l \text{ für } l\not\ =i \text { und } p'=p+1$ +\item $A_p=(x_i=x_j+c), n'_i=n_j+c, n'_l=n_l \text{ für } l\not\ =i \text{ und } p'=p+1$ +\item $A_p=(x_i=x_j-c), n'_i=n_j-c, n'_l=n_l \text{ für } l\not\ =i \text{ und } p'=p+1$ +\item $A_p=(goto l), \bar{n'}=\bar{n} \text{ und } p'=l$ +\item $A_p=(if x_i=0 then l), n_i=0, \bar{n'}=\bar{n}, p'=l$ +\item $A_p=(if x_i=0 then l), n_i\not=0, \bar{n'}=\bar{n}, p'=p+1$ + \end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ Eine Turingmaschine (TM)} ist ein 7-Tupel $M=(Z,\sum, \Phi, \delta, z_o, \Box, E)$, wobei\begin{itemize} +\item $\sum$ das Eingabealphabet +\item $\Phi$ mit $\Phi\supseteq\sum$ und $\Phi\cap Z\not= 0$ das Arbeits- oder Bandalphabet, +\item $z_0\in Z$ der Startzustand, +\item $\delta:Z\times\Phi\rightarrow(Z\times\Phi\times\{L,N,R\})$ die Überführungsfunktion +\item $\Box\in\Phi/\sum$ das Leerzeichen oder Blank und +\item $E\subseteq Z$ die Menge der Endzustände ist +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Eine Konfiguration einer Turingmaschine ist ein Wort $k\in\Phi^*Z\Phi^+$ +Bedeutung: k=uzv\begin{itemize} +\item $u\in\Phi^*$ ist Abschnitt des Bandes vor Kopfposition der bereits besucht wurde +\item $z\in Z$ ost aktueller Zustand +\item $c\in\Phi^+$ ist Abschnitt des Bandes ab Kopfposition, der Besicht wurde oder im Bereich des Eingabewortes liegt. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Sei $M=(Z,\sum,\Phi,\delta,z_o,\Box,E)$ eine TM und k eine Konfiguration. Dann heißt k Haltekonfiguration falls für alle Konfigurationen $k'$ gilt: $k\vdash_M k'\Rightarrow k=k'$ (d.h. ist $k=uzav$, so gilt $\delta(z,a)=(z,a,N)$). Die Haltekonfiguration k ist akzeptierend, wenn zusätzlich $k\in\Box^*E\sum^*\Box^*$ gilt. +\end{flashcard} + +\begin{flashcard}[Definition]{} Sei $M=(Z,\sum,\Phi,\delta,z_o,\Box,E)$ eine TM. Die von M berechnete partielle Funktion $f_M:\sum^*\rightarrow \sum^*$ erfüllt f+r alle $x,y\in\sum^*: f_M(x)=y\leftrightarrow \exists z_e \in E,i,j,\in\mathbb{N}:z_0x\Box \vdash_M^* \Box^i z_e y\Box^j$ und $\Box^iz_ey\Box^j$ ist Haltekonfiguration. +\end{flashcard} + +\begin{flashcard}[Definition]{} Eine partielle Funktion $f:\sum^*\rightarrow\sum^*$ heißt Turing berechenbar, wenn es eine TM M gibt mti $g_M=f$. +\end{flashcard} + +\begin{flashcard}[Definition]{} Sei $f:\mathbb{N}^k\rightarrow\mathbb{N}$ eine partielle Funktion. Definiere eine partielle Funktion $F:\{0,1,\#\}^*\rightarrow\{0,1,\#\}^*$ durch $F(w)=\begin{cases} bin(f(n_1,\dots ,n_k)) \quad\text{ falls } w=bin(n_1)\#bin(n_2)\#\dots \#bin(n_k) \text{ und } f(n_1,\dots,n_k) \text{ definiert} \\ \text{undefiniert} \quad{text{ sonst }}\end{cases}$. Dann heißt f Turing berechenbar, wenn F Turing berechenbar ist. +> (Für $n\in\mathbb{N}$ sei $bin(n)$ die Binärdarstellung der Zahl n) +\end{flashcard} + +\begin{flashcard}[Definition]{Mehrband Tunringmaschine}\begin{itemize} +\item Eine Mehrband-Turingmaschine besitzt $k(k\geq 1)$ Bänder mit k unabhängigen Köpfen, aber nur eine Steuereinheit. +\item Aussehen der Übergangsfunktion: $\delta:Z\times\Phi^k\rightarrow (Z\times\Phi^k\times\{L,N,R\}^k)$ (ein Zustand, k Bandsymbole, k Bewegungen) +\item Die Ein- und Ausgabe stehen jeweils auf dem ersten Band. Zu Beginn und am Ende (in einer akzeptierenden Haltekonfiguration) sind die restlichen Bänder leer. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Satz]{ Zu jeder Mehrband Turingmaschine M gibt es} eine (Einband) Turingmaschine M' die diesselbe Funktion löst +Beweis:\begin{itemize} +\item Simulation mittels Einband-Turingmaschine durch Erweiterung des Alphabets: Wir fassen die übereinanderliegenden Bandeinträge zu einem Feld zusammen und markieren die Kopfpositionen auf jedem Band durch $\ast$. Neues Bandalphabet: $\Phi'=\sum\uplus\{\Box\}\uplus (\Phi\times\{\ast, \diamond\})^k$ +\item Alphabetsymbol der Form $(a,\ast,b,\diamond,c,\ast,...)\in(\Phi\times\{\ast,\diamond\})^k$ bedeutet: 1. und 3. Kopd anwesen ($\ast$ Kopf anwesend, $\diamond$ Kopf nicht anwesend) +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Satz]{} Sei $g:\sum^*\rightarrow\sum^*$ eine Turing-berechenbare partielle Funktion. Dann wird g von einer TM M berechnet, für die gilt: $\forall x\in\sum^*\forall k$ Haltekonfiguration: $z_ox\Box\vdash_M^* k\Rightarrow k\in \Box^*E\sum^*\Box^*$. +\end{flashcard} + +\begin{flashcard}[Satz]{} Sind $f:\mathbb{N}^k\rightarrow\mathbb{N}$ und $g_1,g_2,\dots,g_k:\mathbb{N}^l\rightarrow\mathbb{N}$ Turing berechenbar, so auch die partielle Funktion $f(g_1,g_2,\dots,g_k):\mathbb{N}^l\rightarrow\mathbb{N}$ +\end{flashcard} + +\begin{flashcard}[Definition]{ Eine Sprache $L\subseteq\sum^*$ hei entscheidbar,} falls die charakteristische Funktion von L, d.h. die Funktion $\chi_L:\sum^*\rightarrow\{0,1\}$ mit $\chi_L(w= = \begin{cases} 1 \quad\text{ falls } w\in L \\ 0 \quad\text{ falls } w\not\in L \end{cases}$ berechenbar ist. Eine Sprache die nicht entscheidbar ist, heißt unentscheidbar. +\end{flashcard} + +\begin{flashcard}[Definition]{ das allgemeine Halteproblem ist die Sprache }$H=\{w\#x | w\in L_{TM}, x\in\{0,1\}^*, M_w \text{ angesetzt auf x hält}\}$ +\end{flashcard} + +\begin{flashcard}[Definition]{ das spezielle Halteproblem ist die Sprache }$K=\{w\in L_{TM} | M_w \text{ angesetzt auf w hält}\}$ +\end{flashcard} + +\begin{flashcard}[Satz]{} Das spezielle Halteproblem ist unentscheidbar +\end{flashcard} + +\begin{flashcard}[Definition]{} Seien $A\subseteq\sum^*,B\subseteq\Phi^*$. Eine Reduktion von A auf B ist eine totale und berechenbare Funktion $f:\sum^*\rightarrow\Phi^*$, so dass für alle $w\in\sum^*$ gilt: $w\in A\leftrightarrow f(x)\in B$. A heißt auf B reduzierbar (in Zeichen $A\leq B$), falls es eine Reduktion von A auf B gibt. +\end{flashcard} + +\begin{flashcard}[Satz]{} Das allgemeine Halteproblem ist unentscheidbar +\end{flashcard} + +\begin{flashcard}[Satz]{} Das Halteproblem auf leerem Band ist unentscheidbar +\end{flashcard} + +\begin{flashcard}[Satz]{} Satz von Rice: Sei $R$ die Klasse aller Turing-berechenbaren Funktionen $\{0,1\}^*\rightarrow\{0,1\}^*$, $\Omega$ die nirgendwo definierte Funktion und sei $S\subseteq R$ mit $\Omega\in S$ und $\not = R$. Dann ist die Sprache $C(S)=\{w\in L_{TM} | \phi_w\in S\}$ unentscheidbar. +\end{flashcard} + +\begin{flashcard}[Definition]{} Eine Sprache $L\subseteq \sum^*$ heißt semi-entscheidbar, falls die "halbe" charakteristische Funktion von L, d.h. die partielle Funktion $X'_L:\sum^* \rightarrow \{1\}$ mit $x'_L=\begin{cases} 1 \quad\text{ falls } w\in L\\ undef. \quad\text{ falls } w\not\in L \end{cases}$ berechenbar ist. +\end{flashcard} + +\begin{flashcard}[Satz]{} Ein Problem $L\subseteq \sum^*$ ist gneua dann entscheidbar, wenn sowohl L als auch $\bar{L}=\sum^*\backslash L$ semi-entscheidbar sind. +1. $w\in L$, dann existiert $t\in\mathbb{N}$, so dass $M_L$ nach t Schritten terminiert. Wegen $w\not\in\bar{L}$ terminiert $M_{\bar{L}}$ niemals. +2. $w\not\in L$, dann existiert $t\in\mathbb{N}$, so dass $M_{\bar{L}}$ nach t Schritten terminiert. Wegen $w\not\in L$ terminiert $M_L$ niemals. + +Dieses letzte Argument heißt mitunter "Schwalbenschwanz-Argument". +\end{flashcard} + +\begin{flashcard}[Satz]{Sei $L\subseteq \sum^*$ eine nichtleere Sprache. Dann sind äquivalent}\begin{itemize} +\item L ist semi-entscheidbar +\item L wird von einer Turing-Maschine akzeptiert +\item L ist vom Typ 0 (d.h. von einer Grammatik erzeugt) +\item L ist Bild einer berechenbaren partiellen Funktion $\sum^*\rightarrow\sum^*$ +\item L ist Bild einer berechenbaren totalen Funktion $\sum^*\rightarrow\sum^*$ +\item L ist rekursiv aufzählbar +\item L ist Definitionsbereich einer berechenbaren partiellen Funktion $\sum^*\rightarrow\sum^*$ + \end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{} Sei $M$ eine Turing Maschine. DIe von M akzeptierte Sprache ist $L(M)=\{ w\in\sum^* | \text{es gibt akzept. Haltekonf. mit } z_0w\Box\vdash_M^* k\}$. +\end{flashcard} + +\begin{flashcard}[Definition]{} Eine Sprache $L\subseteq \sum^*$ heißt rekursiv aufzählbar, falls $L\not\in\varnothing$ oder es eine totale und berechenbare Funktion $f:\mathbb{N}\rightarrow\sum^*$ gibt mit $L=\{f(n)| n\in\mathbb{N}\}=\{f(0), f(1),f(2),...\}$. +\end{flashcard} + + +\begin{flashcard}[Definition]{} Eine Turing Maschine U heißt universelle Turing Maschine, wenn sie die folgende partielle Funktion berechnet. $\{0,1\}^*\rightarrow\{0,1\}^*$ +> $$y\rightarrow\begin{cases} \phi_w(x) \quad\text{ falls } y=w000x,w\in L_{TM},x\in\{0,1\}^* \\ undef. \quad\text{ sonst}\end{cases}$$ +- U hält bei Eingabe $w000x$ genau dann, wenn $M_w$ bei Eingabe x hält +- U akzeptiert $w000x$ genau dann, wenn $M_w$ das Wort x akzeptiert +\end{flashcard} + +\begin{flashcard}[Satz]{} Es gibt eine universelle Turing Maschine +Beweis: eine Turing Maschine mit drei Bändern. +- 1.Band: Kode w der zu simulierenden Turing Maschine $M_w$ +- 2.Band: aktueller Zustand der zu simulierenden Turing Maschine $M_w$ +- 3.Band: augenblicklicher Bandinhalt der Turing Maschine $M_w$ +1. Initialisierung: auf 1.Band steht w000x mit $w\in L_{TM}$. Kopiere x auf 3.Band und lösche 000x auf erstem, schreibe 010 auf 2.Band +2. Simulation: stehen auf 2.Band $01^{i+1}0$ und auf 3. an Kopfposition j, so suche auf 1.Band Anweisung $(z_{i'},a_{j'},y)=\delta(z_i,a_j)$ und schreibe $01^{i'+1}0$ auf 2.Band; ersetzte j an Kopfposition auf 3.Band durch $j'$; bewege 3.Kopf entsprechend y nah rechts, links oder aber auch nicht. +3. Aufräumen: bei Erreichen einer akzeptierenden Haltekonfiguration auf 3.Band +\end{flashcard} + +\begin{flashcard}[Satz]{} das spezielle Halteproblem $K=\{w\in L_{TM} | M_w \text{ angesetzt auf w hält}\}$ ist semi-entscheidbar. +\end{flashcard} + +\begin{flashcard}[Satz]{} es gibt eine Grammatik G, deren Wortproblem $L(G)$ unentscheidbar ist. + +Folgerung: es gibt eine Typ-0 Sprache, die nicht vom Typ 1 ist. +\end{flashcard} + +\begin{flashcard}[Satz]{} das allgemeine Wortproblem $A=\{(G,w) | \text{ G ist Grammatik mit } w\in L(G)\}$ ist unentscheidbar. +\end{flashcard} + + +\begin{flashcard}[Definition]{} +> 1. Ein Korrespondezsystem ist eine endliche Folge von Paaren $K=((x_1,y_1),(x_2,y_2),...,(x_k,y_k))$ mit $x_i,y_i\in\sum^+$ für alle $1\leq i \leq k$ (dabei ist $\sum$ ein beliebiges Alphabet) +> 2. Eine Lösung von K ist eine endliche Folge von Indizes $i_1,i_2,...,i_n \in \{1,2,...,k\}$ mit $n\geq 1$ und $x_{i1} x_{i2} ... x_{in}=y_{i1} y_{i2}... y_{in}$. +> 3. MPCP ("modifiziertes PCP") ist die Menge der Korrespondezsysteme, die eine Lösung mit $i_1=1$ besitzen +> 4. PCP ist die Menge der Korrespondenzsysteme, die eine Lösung besitzen +\end{flashcard} + + +\begin{flashcard}[Satz]{} Satz (Emil Post, 1947): PCP ist unentscheidbar. (T. Neary 2015: 5 Paare reichen hierfür.) +\end{flashcard} + +\begin{flashcard}[Satz]{} PCP ist semi-entscheidbar. +\end{flashcard} + +\begin{flashcard}[Satz]{} Das Regularitätsproblem für PDAs $Reg_{PDA} = \{P | \text{P PDA mit L(P) regulär}\}$ ist nicht semi-entscheidbar. +\end{flashcard} + +\begin{flashcard}[Satz]{} Satz (Stearns 1967): Das Regularitätsproblem für DPDAs $Reg_{DPDA} = \{ P | \text{P DPDA mit L(P) regulär}\}$ ist entscheidbar. +\end{flashcard} + +\begin{flashcard}[Satz]{} Das Schnittproblem für DPDAs $Schn_{DPDA} = \{(P_1, P_2 ) | P_1, P_2 \text{ DPDAs mit } L(P_1)\cap L(P_2) = \varnothing\}$ ist nicht semi-entscheidbar. +\end{flashcard} + + \begin{flashcard}[Definition]{ Church-Turing These} Die Funktionen, die durch Turingmaschinen bzw. While/Goto-Programme berechnet werden können, sind genau die intuitiv berechenbaren Funktionen. + \end{flashcard} + + \begin{flashcard}[Definition]{Unentscheidbarkeit} Probleme, die nicht durch Turing-Maschinen gelöst werden können, sind damit prinzipiell unlösbar (wenn auch u.U. semi-entscheidbar). Beispiele:\begin{itemize} +\item die verschiedenen Versionen des Halteproblems +\item Posts Korrespondenzproblem +\item das Schnitt- und verwandte Probleme über kontextfreie Sprachen +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{Intuitiver Effizienzbegriff} +Das Wortproblem einer Sprache L ist effizient entscheidbar, wenn es einen Algorithmus gibt, der die Antwort auf die Frage "Gehört das Wort w zu L?" mit geringen Ressourcen (Zeit, Speicherplatz) bestimmt. "mit geringen Ressourcen" heißt hier, daß die benötigten Ressourcen nur moderat mit der Eingabelänge $|w|$ wachsen. +\end{flashcard} + +\begin{flashcard}[Definition]{Deterministische Zeitklassen} +Sei $f:\mathbb{N}\rightarrow\mathbb{N}$ eine monotone Funktion. Die Klasse $TIME(f)$ besteht aus allen Sprachen L, für die es eine Turingmaschine M gibt mit: +\begin{itemize} +\item M berechnet die charakteristische Funktion von L. +\item Für jede Eingabe $w\in\sum^*$ erreicht M von der Startkonfiguration $z_0 w\Box$ aus nach höchstens $f(|w|)$ Rechenschritten eine akzeptierende Haltekonfiguration (und gibt 0 oder 1 aus, je nachdem ob $w\not\in L$ oder $w\in L$ gilt). +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{ REACH} ist die Menge der gerichteten Graphen mit zwei ausgezeichneten Knoten s und t, in denen es einen Pfad von s nach t gibt. + REACH ist in P. (Beweis: z.B. mit Dijkstras Algorithmus) +\end{flashcard} + + \begin{flashcard}[Definition]{Euler-Kreise} EC ist die Menge der ungerichteten Graphen, die einen Eulerkreis (d.h. einen Kreis, der jede Kante genau einmal durchläuft) enthalten. + \end{flashcard} + +\begin{flashcard}[Satz]{ Satz (Euler 1707-1783, 1736)} Ein Graph $(V,E)$ enthält einen Eulerkreis genau dann, wenn er höchstens eine Zusammenhangskomponente mit $>1$ Knoten enthält und jeder Knoten geraden Grad hat (d.h. jeder Knoten hat eine gerade Anzahl von Nachbarn). + +Folgerung: EC ist in P, denn die genannten Bedingungen lassen sich in polynomieller Zeit prüfen. + +Die erweiterte Church-Turing These: P umfaßt die Klasse der effizient lösbaren Probleme. +\end{flashcard} + +\begin{flashcard}[Definition]{Deterministische Platzklassen} + Sei $f:\mathbb{N}\rightarrow\mathbb{N}$ eine monotone Funktion. Die Klasse $SPACE(f )$ besteht aus allen Sprachen L, für die es eine Turingmaschine M gibt mit:\begin{itemize} +\item M berechnet die charakteristische Funktion von L. +\item Für jede Eingabe $w\in\sum^*$ hat jede von der Startkonfiguration $z_0 w\Box$ aus erreichbare Konfiguration höchstens die Länge $f(|w|)$. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{Definition} +$$PSPACE = \bigcup_{f\in Poly} SPACE(f)$$ +$$EXPSPACE = \bigcup_{f\in Poly} SPACE(2^f)$$ +$$2EXPSPACE = \bigcup_{f\in Poly} SPACE(2^{2^{f}})...$$ +\end{flashcard} + +\begin{flashcard}[Definition]{ SAT }ist die Menge der erfüllbaren aussagenlogischen Formeln. + +Beobachtung: SAT 2 PSPACE +\end{flashcard} + +\begin{flashcard}[Definition]{Hamilton-Kreise HC } ist die Menge der ungerichteten Graphen, die einen Hamiltonkreis (d.h. einen Kreis, der jeden Knoten genau einmal besucht) enthalten. +\end{flashcard} + +\begin{flashcard}[Definition]{3-Färbbarkeit 3C}: 3C ist die Menge der ungerichteten Graphen, deren Knoten sich mit drei Farben färben lassen, so daß benachbarte Knoten unterschiedliche Farben haben. + +Beobachtung: $3C \in PSPACE$ +\end{flashcard} + +\begin{flashcard}[Definition]{Sei M NTM. Die von M akzeptierte Sprache ist }$L(M) = \{w\in\sum^* | \text{ es gibt akzept. Haltekonf. k mit } z_0 w\Box \vdash_M^* k\}$. +\end{flashcard} + +\begin{flashcard}[Satz]{Determinisierbarkeit von NTM} Zu jeder nichtdeterministischen Turingmaschine gibt es eine Turingmaschine, die dieselbe Sprache akzeptiert. +\end{flashcard} + +\begin{flashcard}[Definition]{ Nichtdeterministische Zeitklassen} +Sei $f:\mathbb{N}\rightarrow\mathbb{N}$ eine monotone Funktion. Die Klasse $NTIME(f)$ besteht aus allen Sprachen L, für die es eine nichtdeterministische Turingmaschine M gibt mit:\begin{itemize} +\item M akzeptiert L. +\item Für jede Eingabe $w\in\sum^*$ hält M auf jeden Fall nach $f(|w|)$ vielen Schritten. +\end{itemize} +Definition\begin{itemize} +\item $$NP = \bigcup_{f\in Poly} NTIME(f)$$ +\item $$NEXPTIME = \bigcup_{f\in Poly} NTIME(2^f)$$ +\item $$2NEXPTIME = \bigcup_{f\in Poly} NTIME(2^{2^{f}})...$$ +\end{itemize} +Lemma: $NP \subseteq PSPACE, NEXPTIME \subseteq EXPSPACE, 2NEXPTIME \subseteq 2EXPSPACE ...$ +\end{flashcard} + +\begin{flashcard}[Definition]{Nichtdeterministische Platzklassen} Sei $f:\mathbb{N}\rightarrow\mathbb{N}$ eine monotone Funktion. Die Klasse $NSPACE(f)$ besteht aus allen Sprachen L, für die es eine nichtdeterministische Turingmaschine M gibt mit: +- M akzeptiert L. +- Für jede Eingabe $w\in\sum^*$ folgt $|k| \leq f(|w|)$ aus $z_0 w\Box\vdash_M^* k$. +\end{flashcard} + +\begin{flashcard}[Satz]{ Satz von Kuroda (1964)} +Sei L eine Sprache. Dann sind äquivalent +\begin{itemize} +\item 1. L ist kontextsensitiv (d.h. vom Typ 1) +\item 2. $L\in NSPACE(n)$ + \end{itemize} +\end{flashcard} + +\begin{flashcard}[Satz]{ Satz von Savitch (1970)} +Für jede super-lineare monotone Funktion $f:\mathbb{N}\rightarrow\mathbb{N}$ gilt $NSPACE (f(n))\subseteq SPACE((f(n))^2)$. + +Damit haben wir die folgende Struktur der Komplexitätsklassen:\begin{enumerate} +\item P +\item NP +\item PSPACE = NPSPACE +\item EXPTIME +\item NEXPTIME +\item EXPSPACE = NEXPSPACE +\end{enumerate} +\end{flashcard} + +\begin{flashcard}[Definition]{NP-Vollständigkeit} +Eine Sprache B ist NP-hart, falls für alle $A\in NP$ gilt: $A \leq_P B$ (A ist mindestens so schwer wie jedes Problem in NP). Eine Sprache ist NP-vollständig, falls sie zu NP gehört und NP-hart ist. +\end{flashcard} + +\begin{flashcard}[Satz]{SAT Vollständigkeit} +Stephen Cook \& Leonid Levin: SAT ist NP-vollständig. +\end{flashcard} + +\begin{flashcard}[Definition]{3-SAT} +3-SAT ist die Menge der erfüllbaren aussagenlogischen Formeln in konjunktiver Normalform mit höchstens drei Literalen pro Klausel. +\end{flashcard} + +\begin{flashcard}[Satz]{3-SAT vollständigkeit} +Das Problem 3-SAT ist NP-vollständig. +\end{flashcard} + +\begin{flashcard}[Satz]{SAT und 3-SAT vollständigkeit} + Die Probleme SAT und 3-SAT sind NP-vollständig. +\end{flashcard} + +\begin{flashcard}[Satz]{ist eine Formel $\phi$ in KNF mit höchstens zwei Literalen pro Klausel erfüllbar?} + Es ist in Polynomialzeit entscheidbar, ob eine Formel $\phi$ in KNF mit höchstens zwei Literalen pro Klausel erfüllbar ist. +Beweisidee: konstruieren gerichteten Graphen G: +\begin{itemize} +\item Für jede atomare Formel $x$ aus $\phi$ gibt es die Knoten $x$ und $\neg x$. +\item Für jede Klausel $\alpha\vee\beta$ in $\phi$ gibt es Kanten $\sim\alpha\rightarrow\beta$ und $\sim\beta\rightarrow\alpha$, wobei $\sim x =\neg x$ und $\sim\neg x=x$ gelte. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Satz]{Erfüllbarkeitsprobleme vollständigkeit} +\begin{itemize} +\item Die Erfüllbarkeitsprobleme SAT und 3-SAT sind NP-vollständig. +\item Das Erfüllbarkeitsproblem 2-SAT ist in P. +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{kC} +kC ist die Menge der ungerichteten Graphen, die sich mit k Farben färben lassen. + +Ein Graph ist genau dann 2-färbbar, wenn er bipartit ist. Das Problem 2C ist also in P. +\end{flashcard} + +\begin{flashcard}[Satz]{ 3C vollständigkeit} + Das Problem 3C ist NP-vollständig. +\end{flashcard} + +\begin{flashcard}{DHC - Gerichteter Hamiltonkreis} +\begin{itemize} +\item EINGABE: ein gerichteter Graph $G = (V , E )$ mit Knotenmenge $V$ und Kantenmenge $E\supseteq V\times V$. +\item FRAGE: Besitzt der Graph G einen Hamiltonkreis, d.h. kann man den Graphen so durchlaufen, dass jeder Knoten genau einmal besucht wird? +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{DHC} +DHC ist die Menge der gerichteten Graphen, die einen Hamiltonkreis enthalten. +\end{flashcard} + +\begin{flashcard}[Satz]{DHV vollständigkeit} +Das Problem DHC ist NP-vollständig. +\end{flashcard} + +\begin{flashcard}{HC - Ungerichteter Hamiltonkreis} +\begin{itemize} +\item EINGABE: ein ungerichteter Graph $G=(V,E)$ mit Knotenmenge $V$ und Kantenmenge $E\supseteq \binom{V}{2} = \{X\subseteq V | |X|=2\}$. +\item FRAGE: Besitzt der Graph G einen Hamiltonkreis, d.h. kann man den Graphen so durchlaufen, dass jeder Knoten genau einmal besucht wird? +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Definition]{HC} +ist die Menge der ungerichteten Graphen, die einen Hamiltonkreis enthalten. +\end{flashcard} + +\begin{flashcard}[Satz]{HC vollständigkeit} +as Problem HC ist NP-vollständig. +\end{flashcard} + +\begin{flashcard}{TSP - Travelling Salesman} +\begin{itemize} +\item EINGABE: eine $n\times n$-Matrix $M = (M_{i,j})$ von Entfernungen zwischen $n$ Städten und eine Zahl $d$. +\item FRAGE: Gibt es eine Tour durch alle Städte, die maximal die Länge d hat? Das heißt, gibt es eine Indexfolge $i_1,...,i_m$, so dass gilt: +\item $\{i_1,...,i_m\} = \{1,...,n\}$ (jede Stadt kommt vor) +\item $M_{i_1,i_2} + M_{i_2,i_3} +...+ M_{i_{m-1},i_m} + M_{i_m,i_1} \leq d$ (die Länge Tour ist höchstens d) +\end{itemize} +\end{flashcard} + +\begin{flashcard}[Satz]{Das Problem TSP} ist NP-vollständig. +\begin{itemize} +\item Beweis: $TSP\in NP$ ist einfach zu sehen, da eine Indexfolge geraten und in polynomieller Zeit überprüft werden kann, ob sie die Bedingungen erfüllt. +\item Für die NP-Härte zeigen wir $HC\leq_P TSP$: Sei $G=(V,E)$ ein ungerichteter Graph, o.E. $V=\{1,...,n\}$. Wir konstruieren dazu folgende Matrix: $M_{i,j}=\begin{cases} 1\quad\text{ falls } \{i,j\}\in E\\ 2 \quad\text{ falls }\not\in E\end{cases}$ +\item Außerdem setzen wir $d=n$. +\end{itemize} +\end{flashcard} + +\begin{flashcard}{Church-Turing These} Die Church-Turing These besagt, dass die Funktionen, die durch Turingmaschinen bzw. While-/Goto-Programme berechnet werden können, genau die intuitiv berechenbaren Funktionen sind. +\end{flashcard} + +\begin{flashcard}{Unentscheidbarkeit} Probleme, die nicht durch Turing-Maschinen gelöst werden können, sind damit prinzipiell unlösbar (wenn auch u.U. semi-entscheidbar). +\end{flashcard} + +\begin{flashcard}{Erweiterte Church-Turing These} Die erweiterte Church-Turing These besagt, dass die Funktionen, die durch Turingmaschine bzw. While-/Goto-Programme in Polynomialzeit berechnet werden können, genau die intuitiv und effizient berechenbaren Funktionen sind. +\end{flashcard} + +\begin{flashcard}{Turing Maschinen für NP und darüber} Probleme, die durch Turing-Maschinen nicht in Polynomialzeit gelöst werden können, sind damit prinzipiell nicht effizient lösbar. +\end{flashcard} + +\end{document} + \begin{flashcard}[Definition]{Text} Text \end{flashcard} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - - -\end{document} \ No newline at end of file +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file