\documentclass[11pt, a4paper, twoside]{article} \usepackage[ a4paper, headsep=5mm, footskip=0mm, top=12mm, left=10mm, right=10mm, bottom=10mm ]{geometry} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{makecell} \usepackage{multicol} \usepackage[noend]{algorithm2e} \usepackage[utf8]{inputenc} \usepackage{fancyhdr} \usepackage{tikz} \usetikzlibrary{arrows,automata,positioning, graphs, graphdrawing} \usegdlibrary {trees} \usepackage{hyperref} \hypersetup{ colorlinks=true, linkcolor=blue, filecolor=magenta, urlcolor=cyan, pdftitle={Overleaf Example}, pdfpagemode=FullScreen, } \setlength{\algomargin}{0pt} \begin{document} \pagestyle{fancy} \fancyhead{} \fancyhead[L]{Theoretische Grundlagen der Informatik} \fancyhead[R]{Gero Beckmann - \url{https://github.com/Geronymos/}} \fancyfoot{} \fancyfoot[R]{\thepage} \newenvironment{definition}[1]{\noindent\textbf{#1:}}{} \section{Chomsky-Hierarchie} \hspace*{-.5cm} \begin{tabular}{ l l l l l } Chomsky & Wortproblem & Definition & Bsp & Maschinenmodell \\ Typ 0 & semi-entscheidbar & \makecell{$G = (\Sigma, V, S, R)$ \\ $R beliebig$ }& universelle Sprache & NTM/DTM akzeptiert L \\ Typ 1 & NP-Schwer & \makecell{$u \rightarrow v, |u| \leq |v|$ \\ $u \in V^+, S \notin V$ \\ $S \rightarrow \epsilon$ } & $L = \{ a^ib^ic^i | i \leq 1 \}$ & \makecell[l]{NTM mit Platzbedarf n \\ erkennt Wörter der Länge n in L \\ $\Rightarrow NTAPE(n)$ } \\ Typ 2 & polynomiell & \makecell{$A \rightarrow v, A \in V$ \\ $v beliebig$} & $L = \{ a^ib^i | i \leq 1\}$ & CYK-Alg. erkennt L in polynom. Zeit, Chomsky-NF, NPDA \\ Typ 3 & linear & \makecell{$A \rightarrow v, A \in V$ \\ $V \in \epsilon \cup \Sigma \cdot V$} & $L = \{ a^i | i \leq 1 \}$ & NEA/DEA erkennt L \\ \end{tabular} \subsection{Automaten} DEA $A = (Q, \Sigma, \delta: Q \times \Sigma \rightarrow Q, s \in Q, F \subseteq Q)$ \\ NEA $A = (Q, \Sigma, \delta: Q \times (\Sigma \cup \{ \epsilon \} \rightarrow 2^Q, s \in Q, F \subseteq Q)$ \\ NPDA $M = (Q, \Sigma, \Gamma, q_0 \in Q, \delta: Q \times (\Sigma \cup \{\epsilon\}) \times \Gamma \rightarrow 2^{Q \times \Gamma*}, F \subseteq Q)$ \\ DPDA \\ DTM $M = (Q, \Sigma, \sqcup \notin \Sigma, \Gamma \supseteq \Sigma \cup \{\sqcup\}, s \in Q, \delta: Q \times \Gamma \rightarrow Q \times \Gamma \times \{L, R, N \}, F \subseteq Q)$ \\ NTM $M = (Q, \Sigma, \sqcup \notin \Sigma, \Gamma \supseteq \Sigma \cup \{\sqcup\}, s \in Q, \delta: Q \times (\Gamma \cup \{\epsilon\}) \rightarrow 2^{Q \times \Gamma \times \{L, R, N \}}, F \subseteq Q)$ \\ \subsection{Pumping-Lemma} \begin{multicols}{2} Erfüllt: \begin{itemize} \item["$\exists$"] Wähle $n = 2$ \item["$\forall$"] Betrachte beliebiges $w \in L$ mit $|w| > 2$ \item["$\exists$"] Wähle zerlegung $w = uvx$ mit $u = \epsilon, v = aa, x=a^{2(j-1)}$ \item["$\forall$"] Für alle $i \in \mathbb{N}_0: uv^ix = a^{2i}a^2(j-1) = a^{2(i+j-1)} \in L$ \end{itemize} Widerlegen: \begin{itemize} \item["$\exists$"] Wähle $n = 2$ \item["$\forall$"] Betrachte beliebiges $w \in L$ mit $|w| > 2$ \item["$\exists$"] Wähle zerlegung $w = uvx$ mit $u = \epsilon, v = aa, x=a^{2(j-1)}$ \item["$\forall$"] Für alle $i \in \mathbb{N}_0: uv^ix = a^{2i}a^2(j-1) = a^{2(i+j-1)} \in L$ \end{itemize} \end{multicols} \hspace{-1cm} \begin{minipage}[t]{.5\textwidth} \subsubsection{Potenzmengenkonstuktion NEA $\rightarrow$ DEA} \begin{minipage}{.5\textwidth} \begin{tabular}{c | c | c} Zustand & a & b \\ \hline $\{\underline{s}\}$ & $\{s, q_1\}$ & $\{f\}$ \\ $\{\underline{s}, q_1\}$ & $\{s, q_1\}$ & $\{f, q_2\}$ \\ $\{f\}$ & $\{f\}$ & $\{f\}$ \\ $\{f, q_2\}$ & $\{f\}$ & $\{f, q_1, q_2\}$ \\ $\{f, \underline{s}\}$ & $\{f, s, q_1\}$ & $\{f\}$ \\ $\{f, \underline{s}, q_1\}$ & $\{f, s, q_1\}$ & $\{f, q_2\}$ \\ \end{tabular} \end{minipage} \begin{minipage}{.4\textwidth} \begin{tikzpicture}[initial text=,shorten >=1pt,node distance=2cm,on grid,auto] \node[state,initial,accepting] (S) {$S$}; \node[state] (q_1) [right of=S] {$q_1$}; \node[state] (q_2) [below of=q_1] {$q_2$}; \node[state] (f) [below of=S] {$f$}; \path[->] (S) edge [loop above] node {a} () (S) edge node [below] {a} (q_1) (S) edge node [left] {b} (f) (q_1) edge [bend right] node [above] {a} (S) (q_1) edge node [below] {b} (q_2) (q_2) edge [bend right] node [above] {b} (q_1) (q_2) edge [loop right] node {b} () (q_2) edge node {a} (f) (f) edge [loop left] node {a,b} () ; \end{tikzpicture} \end{minipage} \end{minipage} \begin{minipage}[t]{.55\textwidth} \subsubsection{Entfernen von $\epsilon$-Übergängen} \begin{minipage}{.5\textwidth} \begin{tabular}{c | c | c} Zustand & a & b \\ \hline $S$ & $q_1$ & $S, q_1, q_2, q_3$ \\ $q_1$ & $q_2, q_3$ & $q_3$ \\ $q_2$ & $q_1$ & $S, q_2, q_3$ \\ $q_3$ & $q_1$ & $S, q_2, q_3$ \\ \end{tabular} \end{minipage} \begin{minipage}{.5\textwidth} \begin{tikzpicture}[initial text=,shorten >=1pt,node distance=2cm,on grid,auto] \node[state,initial] (S) {$S$}; \node[state,accepting] (q_1) [right of=S] {$q_1$}; \node[state,accepting] (q_2) [below of=q_1] {$q_2$}; \node[state] (q_3) [below of=S] {$q_3$}; \path[->] (S) edge node {b} (q_1) (S) edge node [above left] {$\epsilon$} (q_2) (q_1) edge node {a} (q_2) (q_1) edge [bend left] node [above right] {b} (q_3) (q_2) edge node {\epsilon} (q_3) (q_3) edge node [below left] {a} (q_1) (q_3) edge node {b} (S) (q_3) edge [loop left] node {b} () ; \end{tikzpicture} \end{minipage} \end{minipage} \begin{minipage}{\textwidth} \begin{minipage}[t]{.35\textwidth} \vspace{0pt} \begin{tikzpicture}[initial text=,shorten >=1pt,node distance=2cm,on grid,auto] \node[state,initial] (S) {$S$}; \node[state] (p) [right of=S] {$p$}; \node[state] (q) [right of=p] {$q$}; \node[state] (t) [below of=p] {$t$}; \node[state,accepting] (r) [below of=q] {$r$}; \node[state] (v) [below of=t] {$v$}; \node[state] (u) [below of=r] {$u$}; \path[->] (S) edge [loop above] node {0} () (S) edge node {1} (p) (p) edge [loop above] node {1} () (p) edge node {0} (q) (q) edge [bend left] node {0} (S) (q) edge node {1} (r) (t) edge node [right] {0} (S) (t) edge [bend right] node {1} (r) (r) edge [bend right] node [above] {0} (t) (r) edge node {1} (u) (v) edge node {0} (S) (v) edge node[left] {1} (r) (u) edge node {0} (v) (u) edge [loop right] node {1} () ; \end{tikzpicture} \end{minipage} \begin{minipage}[t]{.17\textwidth} \vspace{1cm} \begin{tikzpicture} [binary tree layout] \node[align=center] (1) {s,p,q,r,t,a,v \\ $\epsilon$ trennt} child { node {r} } child { node[align=center] {s,p,q,t,u,v \\ 1 trennt} child { node[align=center] {s,p,u \\ 0 trennt} child { node {s} } child { node {p,u} } } child{ node {q,t,v} } }; \end{tikzpicture} \end{minipage} \begin{minipage}[t]{.4\textwidth} \vspace{0pt} \subsection{Minimierung von Automaten} \begin{tikzpicture}[initial text=,shorten >=1pt,node distance=2cm,on grid,auto] \node[state,initial] (S) {$[S]$}; \node[state] (p) [right of=S] {$[p]$}; \node[state] (q) [right of=p] {$[q]$}; \node[state,accepting] (r) [right of=q] {$[r]$}; \path[->] (S) edge [loop above] node {0} () (S) edge node {1} (p) (p) edge [loop above] node {1} (p) (p) edge node {0} (q) (q) edge[bend left] node {0} (S) (q) edge node {1} (r) (r) edge[bend right] node [above] {1} (p) ; \end{tikzpicture} \end{minipage} \end{minipage} \subsection{Nerode-Relation} \subsection{Chomsky-NF} \begin{enumerate} \item ersetze alle $a \in \Sigma$ in regeln durch neue Variable $Y_a$ und füge $Y_a \rightarrow a$ hinzu. \item ersetze $A \rightarrow B_1...B_m$ mit $m > 2$ durch $A \rightarrow B1C1, C_i \rightarrow B_{i+1}C_{i+1}, C_{m-2} \rightarrow B_{m-1}B_m$ für $1 \leq i < m-2$ \item \begin{enumerate} \item Finde die Menge V' aller Variablen A für die $A \rightarrow^* \epsilon$ existiert \item Streiche alle Regeln $A \rightarrow \epsilon$; Für $A \rightarrow BC$ füge ein $A \rightarrow B falls C \in V'$, $A \rightarrow B falls B \in V'$ \end{enumerate} \item \begin{enumerate} \item Finde alle Kreise $A_1 \rightarrow A_2 \rightarrow ... \rightarrow A_n \rightarrow A_1$. Ersetze alle $A_i$ durch $A_1$ (rechts und links) \item Für jede regel $A \rightarrow B$ und jede Regel $B \rightarrow C$ füge Regel $A \rightarrow C$ hinzu, lösche Regel $A \rightarrow B$ \end{enumerate} \end{enumerate} Falls $S \rightarrow^* \epsilon$ existierte, füge Startsymbol S' mit Regel $S' \rightarrow S | \epsilon$ hinzu. \section{Kellerautomaten} \section{NP-Vollständigkeit} Falls $L_1, L_2 \in NP, L_1 \propto L_2$ und $L_1$ NP-Schwer, dann ist auch $L_2$ NP-Schwer. "reduziere polynomiell von $L_1$ auf $L_2$" \subsection{$4COLOR \in NP$} Einen Lösungsvorschlag können wir in $O(|E|)$ verifizieren, indem wir für jede Kante $\{u,v\}$ überprüffen, ob $c(u) \neq c(v)$. \subsection{$3COLOR \propto 4COLOR$} \subsubsection{Transformation} Sei $G = (V,E)$ eine 3COLOR Instanz. Erstelle dann eine 4COLOR Instanz $G' = (V', E')$ mit $V' = V \cup \{u\}, E' = E \cup \{\{w,u\} | u \in V\}$. Die Transformation ist polynomial. \subsubsection{Äquivalenz/Korrektheit} Sei $G = (V,E)$ eine 3COLOR Instanz mit Lösung c. Dann ist c'(u) = c(u), u \in V mit c'(w) = 3 eine Lösung für die 4COLOR Insanz G', da nach Voraussetzung kein Nachbar von w die farbe 3 haben kann. Sei $G' = (V', E')$ eine 4COLOR Instanz mit Lösung c. Dann ist $c = c'|_v$ eine Lösung für die 4COLOR Instanz G' da per Konstruktion kein Knoten die leiche Farbe wie w haben kann. \section{Approximationsalgorithmen} \begin{tabular}{l c c} Approximationsalforithmen & Minimierungsproblem & Maximierungsproblem \\ Absolute Approxomation (additiver Fehler) & $A(I) \leq OPT(I) + K$ & $A(I) \geq OPT(I) - K$ \\ Relative Approxomation (multiplikativer Fehler) & $A(I) \leq OPT(I) \cdot K$ & $A(I) \geq \frac{OPT(I)}{K}$ \\ $R_A(I)$ & $\frac{A(I)}{OPT(I)}$ & $\frac{OPT(I)}{A(I)}$ \end{tabular} \section{Huffman-Kodierung} \end{document}