\documentclass[10pt, a4paper]{exam}
\printanswers			    % Comment this line to hide the answers 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{listings}
\usepackage{float}
\usepackage{graphicx}
\usepackage{color}
\usepackage{listings}
\usepackage[dvipsnames]{xcolor}
\usepackage{tabularx}
\usepackage{geometry}
\usepackage{color,graphicx,overpic}
\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage{tabularx}
\usepackage{listings}
\usepackage[many]{tcolorbox}
\usepackage{multicol}
\usepackage{hyperref}
\usepackage{pgfplots}
\usepackage{bussproofs}
\usepackage{tikz}
\usetikzlibrary{automata, arrows.meta, positioning}
%\renewcommand{\solutiontitle}{\noindent}
\SolutionEmphasis{\small}
\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} 

\pdfinfo{
    /Title (Automaten, Sprachen \& Komplexität - Prüfungsvorbereitung)
    /Creator (TeX)
    /Producer (pdfTeX 1.40.0)
    /Author (Robert Jeutter)
    /Subject ()
}
\title{Automaten, Sprachen \& Komplexität - Prüfungsvorbereitung}
\author{}
\date{}

% Don't print section numbers
\setcounter{secnumdepth}{0}

\newtcolorbox{myboxii}[1][]{
  breakable,
  freelance,
  title=#1,
  colback=white,
  colbacktitle=white,
  coltitle=black,
  fonttitle=\bfseries,
  bottomrule=0pt,
  boxrule=0pt,
  colframe=white,
  overlay unbroken and first={
  \draw[red!75!black,line width=3pt]
    ([xshift=5pt]frame.north west) -- 
    (frame.north west) -- 
    (frame.south west);
  \draw[red!75!black,line width=3pt]
    ([xshift=-5pt]frame.north east) -- 
    (frame.north east) -- 
    (frame.south east);
  },
  overlay unbroken app={
  \draw[red!75!black,line width=3pt,line cap=rect]
    (frame.south west) -- 
    ([xshift=5pt]frame.south west);
  \draw[red!75!black,line width=3pt,line cap=rect]
    (frame.south east) -- 
    ([xshift=-5pt]frame.south east);
  },
  overlay middle and last={
  \draw[red!75!black,line width=3pt]
    (frame.north west) -- 
    (frame.south west);
  \draw[red!75!black,line width=3pt]
    (frame.north east) -- 
    (frame.south east);
  },
  overlay last app={
  \draw[red!75!black,line width=3pt,line cap=rect]
    (frame.south west) --
    ([xshift=5pt]frame.south west);
  \draw[red!75!black,line width=3pt,line cap=rect]
    (frame.south east) --
    ([xshift=-5pt]frame.south east);
  },
}

\begin{document}
\begin{myboxii}[Disclaimer]
  Aufgaben aus dieser Vorlage stammen aus der Vorlesung \textit{Algorithmen, Sprachen und Komplexität} und wurden zu Übungszwecken verändert oder anders formuliert! Für die Korrektheit der Lösungen wird keine Gewähr gegeben.
\end{myboxii}

%##########################################
\begin{questions}
  \question Definitionen der Automatentheorie. Vervollständige die folgenden Definitionen:
  \begin{parts}
    \part Eine Regel $(l\rightarrow r)$ einer Grammatik $G=(V,\sum,P,S)$ heißt rechtslinear, falls ...
    \begin{solution}
      immer das an der am weitesten rechts stehende Nicht-Terminal in ein Terminal umgewandelt wird.
      Dazu muss $l\in V$ und $r\in \sum V\cup {\epsilon}$.
    \end{solution}

    \part Die Menge $Reg(\sum)$ der regulären Ausdrücke über dem Alphabet ist...
    \begin{solution}
      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{solution}

    \part Ein NFA ist ein Tupel $M=(...)$
    \begin{solution}
      ein nichtdeterministischer endlicher Automat $M$ ist ein 5-Tupel $M=(Z,\sum,S,\delta,E)$ mit
      \begin{itemize}
        \item $Z$ ist eine endliche Menge von Zuständen
        \item $\sum$ ist das Eingabealphabet
        \item $S\subseteq Z$ die Menge der Startzustände (können mehrere sein)
        \item $\delta: Z \times \sum \rightarrow P(Z)$ ist die (Menge der) Überführungs/Übergangsfunktion
        \item $E\subseteq Z$ die Menge der Endzustände
      \end{itemize}
    \end{solution}

    \part Die von einem NFA $M=(Z,\sum,S,\delta, E)$ akzeptierte Sprache ist $L(M)=...$ (ohne Definition der Mehr-Schritt Übergangsfunktion $\delta$)
    \begin{solution}
      $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{solution}

    \part Die von einem PDA $M=(Z,\sum, \Gamma, \delta, z_0, \#)$ akzeptierten Sprache ist $L(M)=...$
    \begin{solution}
      $L(M)=\{x\in\sum^* | \text{ es gibt } z\in Z \text{ mit } (z_0, x, \#) [...] ^*(z,\epsilon, \epsilon)\}$
    \end{solution}

    \part Sei $L$ eine Sprache. Für $x,y\in\sum^*$ gilt $xR_L y$ genau dann, wenn ... ($R_L$ ist die Myhill-Nerode-Äquivalenz zu L)
    \begin{solution}
      wenn $\forall z \in \sum^* :(xy\in L \leftrightarrow yz \in L)$ gilt
    \end{solution}

    \part Sei $M=(Z,\sum,z_0,\delta, E)$ ein DFA. Die Zustände $z,z'\in Z$ heißen erkennungsäquivalent, wenn
    \begin{solution}
      Zwei Zustände $z,z'\in Z$ heißen erkennungsäquivalent ($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{solution}
  \end{parts}

  \question Sätze und Lemmas aus der Automatentheorie. Vervollständige die folgenden Aussagen:
  \begin{parts}
    \part Sei $L\supseteq \sum^*$ eine Sprache. Dann sind äquivalent: 1) L ist regulär (d.h. wird von einem DFA akzeptiert), 2)..., 3)...
    \begin{solution}
      \begin{enumerate}
        \item L ist regulär (d.h. von einem DFA akzeptiert)
        \item L wird von einem NFA akzeptiert
        \item L ist rechtslinear (d.h. von einer Typ-3 Grammatik erzeugt)
      \end{enumerate}
    \end{solution}

    \part Die Klasse der regulären Sprachen ist unter anderem abgeschlossen unter folgenden drei Operationen:
    \begin{solution}
      \begin{itemize}
        \item Vereinigung $L=L_0\cup L_1$
        \item Verkettung $L=L_0L_1$
        \item Abschluss $L=L_0^*$
      \end{itemize}
    \end{solution}

    \part Sei $\sum$ ein Alphabet. Die Anzahl der Grammatiken über $\sum$ ist ... und die Anzahl der Sprachen über $\sum$ ist ... .
    \begin{solution}

    \end{solution}

    \part Unter anderem sind folgende (mind. drei) Probleme für kontextfreie Sprachen entscheidbar:
    \begin{solution}

    \end{solution}

    \part Die Klasse der Kontextfreien Sprachen ist abgeschlossen unter den Operationen 1)... und 2)... . Sie ist aber nicht abgeschlossen unter 3)... und 4)... .
    \begin{solution}

    \end{solution}

    \part Der Satz von Myhill-Nerode besagt,...
    \begin{solution}
      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{solution}

    \part Das Pumping-Lemma für kontextfreie Sprachen ...
    \begin{solution}
      Man versucht auszunutzen, daß eine kontextfreie Sprache von einer Grammatik mit endlich vielen Nichtterminalen erzeugt werden muss. Das bedeutet auch: wenn ein Ableitungsbaum ausreichend tief ist, so gibt es einen Ast, der ein Nichtterminal mehrfach enthält. Die durch diese zwei Vorkommen bestimmten Teilbäume werden ,,gepumpt''.

      Wenn $L$ eine kontextfreie Sprache ist, dann gibt es $n>= 1$ derart, dass für alle $z$ in $L$ mit $|z| >= n$ gilt: es gibt Wörter $u, v , w , x, y$ in SUM mit
      \begin{enumerate}
        \item $z = uvwxy$,
        \item $|vwx| <= n$,
        \item $|vx| >= 1$ und
        \item $uv^i  wx^i y \in L$ für alle $i >= 0$
      \end{enumerate}
    \end{solution}
  \end{parts}

  \question Konstruktionen der Automatentheorie
  \begin{parts}

    \part Betrachte den folgenden NFA X. Berechne einen DFA Y mit $L(X)=L(Y)$.
    \begin{center}
      \begin{tikzpicture}[node distance = 3cm, on grid, auto]
        \node (q1) [state, initial, initial text = {}] {1};
        \node (q2) [state, above right = of q1] {2};
        \node (q3) [state, accepting, below right = of q2] {3};

        \path [-stealth, thick]
        (q1) edge node {a} (q2)
        (q1) edge node {b} (q3)
        (q1) edge [loop above] node {a}()
        (q2) edge node {a} (q3)
        (q2) edge [loop above] node {b}()
        (q3) edge [bend left] node {a} (q2);
      \end{tikzpicture}
    \end{center}
    \begin{solution}
      \begin{center}
        \begin{tikzpicture}[node distance = 3cm, on grid, auto]
          \node (q1) [state, initial, initial text = {}] {1};
          \node (q3) [state, accepting, right = of q1] {3};
          \node (q12) [state, above = of q1] {\{1,2\}};
          \node (q123) [state, accepting, right = of q12] {\{1,2,3\}};

          \path [-stealth, thick]
          (q1) edge node {a} (q12)
          (q1) edge node {b} (q3)
          (q12) edge [loop above] node {b}()
          (q12) edge [bend left] node {a} (q123)
          (q123) edge [bend left] node {a} (q12)
          (q123) edge [loop above] node {b}()
          (q3) edge node {a} (q123)
          (q3) edge [loop right] node {b}()

          ;
        \end{tikzpicture}
      \end{center}
    \end{solution}

    \part Betrachte den folgenden NFA X. Berechne einen DFA Y mit $L(X)=L(Y)$.
    \begin{center}
      \begin{tikzpicture}[node distance = 3cm, on grid, auto]
        \node (q1) [state, initial, initial text = {}] {1};
        \node (q2) [state, above right = of q1] {2};
        \node (q3) [state, accepting, below right = of q2] {3};

        \path [-stealth, thick]
        (q1) edge node {b} (q2)
        (q1) edge node {a} (q3)
        (q1) edge [loop above] node {b}()
        (q2) edge node {a} (q3)
        (q2) edge [loop above] node {a}()
        (q3) edge [bend left] node {b} (q1)
        (q3) edge [bend left] node {a} (q2)
        (q3) edge [loop above] node {b}();
      \end{tikzpicture}
    \end{center}
    \begin{solution}
      \begin{center}
        \begin{tikzpicture}[node distance = 3cm, on grid, auto]
          \node (q1) [state, initial, initial text = {}] {1};
          \node (q2) [state, right = of q12] {2};
          \node (q3) [state, accepting, right = of q1] {3};
          \node (q12) [state, above = of q1] {\{1,2\}};
          \node (q13) [state, accepting, right = of q3] {\{1,3\}};
          \node (q23) [state, accepting, right = of q123] {\{2,3\}};
          \node (q123) [state, accepting, above right = of q12] {\{1,2,3\}};

          \path [-stealth, thick]
          (q1) edge node {a} (q3)
          (q1) edge node {b} (q12)
          (q2) edge node {a} (q23)
          (q2) edge [loop left] node {b}()
          (q3) edge node {a} (q2)
          (q3) edge node {b} (q13)
          (q12) edge node {a} (q123)
          (q12) edge [loop above] node {b}()
          (q13) edge [bend left] node {a} (q3)
          (q13) edge node {b} (q123)
          (q23) edge [loop above] node {a}()
          (q23) edge node {b} (q13)
          (q123) edge node {a} (q23)
          (q123) edge [loop above] node {b}()

          ;
        \end{tikzpicture}
      \end{center}
    \end{solution}

    \part Betrachte den folgenden DFA X. Berechne den minimalen DFA Y mit $L(X)=L(Y)$.
    \begin{center}
      \begin{tikzpicture}[node distance = 3cm, on grid, auto]
        \node (q1) [state, initial, initial text = {}] {1};
        \node (q2) [state, accepting, right = of q1] {2};
        \node (q3) [state, accepting, right = of q2] {3};
        \node (q4) [state, below = of q1] {4};
        \node (q5) [state, accepting, right = of q4] {5};
        \node (q6) [state, right = of q5] {6};

        \path [-stealth, thick]
        (q1) edge node {b} (q2)
        (q1) edge node {a} (q4)
        (q2) edge node {a} (q3)
        (q2) edge node {b} (q5)
        (q3) edge node {b} (q5)
        (q3) edge [loop above] node {a}()
        (q4) edge node {a} (q2)
        (q4) edge [loop left] node {b}()
        (q5) edge node {a,b} (q6)
        (q6) edge node {a} (q3)
        (q6) edge [loop right] node {b}();
      \end{tikzpicture}
    \end{center}
    \begin{solution}
      * erster Schritt, (*) zweiter Schritt

      \begin{tabular}{c|c|c|c|c|c}
        2 & *                     \\\hline
        3 & *   & *               \\\hline
        4 & (*) & * & *           \\\hline
        5 & *   & * & * & *       \\\hline
        6 & (*) & * & * & (*) & * \\\hline
          & 1   & 2 & 3 & 4   & 5
      \end{tabular}

    \end{solution}


    \part Betrachte den folgenden DFA X. Berechne den minimalen DFA Y mit $L(X)=L(Y)$.
    \begin{center}
      \begin{tikzpicture}[node distance = 3cm, on grid, auto]
        \node (q1) [state, accepting, initial, initial text = {}] {1};
        \node (q2) [state, accepting, right = of q1] {2};
        \node (q3) [state, right = of q2] {3};
        \node (q4) [state, accepting, below = of q1] {4};
        \node (q5) [state, right = of q4] {5};
        \node (q6) [state, accepting, right = of q5] {6};

        \path [-stealth, thick]
        (q1) edge node {b} (q2)
        (q1) edge node {a} (q5)
        (q2) edge [loop above] node {b}()
        (q2) edge node {a} (q3)
        (q3) edge [bend left] node {a} (q5)
        (q3) edge node {b} (q6)
        (q4) edge node {a} (q1)
        (q4) edge node {b} (q5)
        (q5) edge [bend left] node {a} (q3)
        (q5) edge [bend left] node {b} (q4)
        (q6) edge [bend left] node {a} (q2)
        (q6) edge node {b} (q5);
      \end{tikzpicture}
    \end{center}
    \begin{solution}
    \end{solution}
  \end{parts}

  \question Algorithmen für reguläre Sprachen. Sei $\sum=\{a,b,c\}$. Gebe einen Algorithmus an, der bei Eingabe eines NFA X entscheidet, ob alle Wörter $\omega\in L(X)$ ungerade Länge besitzen und $abc$ als Infix enthalten.
  \begin{solution}
  \end{solution}

  \question Kontextfreie Sprachen: Sei $\sum=\{a,b,c\}$. Betrachte die Sprache $K=\{a^k b^l c^m|k\leq l \text{ oder } k\leq m\}$.
  \begin{parts}
    \part Zeige, dass $K$ eine kontextfreie Sprache ist.
    \begin{solution}
    \end{solution}
    \part Zeige, dass $L=\sum^*\backslash K$ (Komplement von $L$) nicht kontextfrei ist.
    \begin{solution}
    \end{solution}
    \part Begründe warum $K$ deterministisch kontextfrei ist oder warum nicht.
    \begin{solution}
    \end{solution}
  \end{parts}

  \question Kontextfreie Grammatiken: Sei $\sum=\{a,b,c,\}$
  \begin{parts}
    \part Sei $G$ die kontextfreie Grammatik mit Startsymbol S und der Regelmenge $S\rightarrow AB$, $A\rightarrow aBS|a$ und $B\rightarrow bBa|b|\epsilon$. Überführe G in eine äquivalente Grammatik in Chomsky Normalform.
    \begin{solution}
    \end{solution}
    \part Sei $G'$ die kontextfreie Grammatik mit Startsymbol $S$ und der Regelmenge $S\rightarrow AB$, $A\rightarrow CD|CF$, $F\rightarrow AD$, $B\rightarrow c|EB$, $C\rightarrow a$, $D\rightarrow b$, $E\rightarrow c$. Entscheide mit dem CYK-Algorithmus, ob die Wörter $w_1=aaabbbcc$ oder $w_2=aaabbccc$ von $G'$ erzeugt werden.
    \begin{solution}
    \end{solution}
    \part Gebe für die Wörter aus b), die von $G'$ erzeugt werden, den Ableitungsbaum an.
    \begin{solution}
    \end{solution}
  \end{parts}

  \question Definitionen der Berechnbarkeitstheorie. Verfollständige die Definitionen
  \begin{parts}
    \part Ein While Programm ist von der Form...
    \begin{solution}
    \end{solution}

    \part Eine Turingmaschine ist ein 7-Tupel $M=(Z,\sum,\Gamma,\delta,z_0,\Box, E)$, wobei...
    \begin{solution}
    \end{solution}

    \part Die von einer Turingmaschine $M$ akzeptierte Sprache ist $L(M)=...$
    \begin{solution}
    \end{solution}

    \part Seien $A\supseteq \sum^*$ und B$\supseteq \Gamma^*$. Eine Reduktion von A auf B ist ...
    \begin{solution}
    \end{solution}

    \part Eine Sprache $L$ heißt rekursiv aufzählbar, falls ...
    \begin{solution}
    \end{solution}

    \part Sei $f:N\rightarrow N$ eine monotone Funktion. Die Klasse $TIME(f)$ besteht aus allen Sprachen L, für die es eine Turingmaschine $M$ gibt mit ...
    \begin{solution}
    \end{solution}
  \end{parts}

  \question Sätze der Berechnbarkeitstheorie: Vervollständige die folgenden Aussagen
  \begin{parts}
    \part Zu jeder Mehrband-Turingmaschine $M$ gibt es ...
    \begin{solution}
    \end{solution}

    \part Sei $f:N^k\rightarrow\mathbb{N}$ eine Funktion für ein $k\in\mathbb{N}$. Die folgenden Aussagen sind äquivalent: 1) $f$ ist Turing-berechenbar, 2)..., 3)..., 4)...
    \begin{solution}
    \end{solution}

    \part Sei $L\subseteq \sum^*$ eine Sprache. Sind $L$ und $\sum^*\backslash L$ semi-entscheidbar, dann...
    \begin{solution}
    \end{solution}

    \part Der Satz von Rice lautet...
    \begin{solution}
      dass es unmöglich ist, eine beliebige nicht-triviale Eigenschaft der erzeugten Funktion einer Turing-Maschine (oder eines Algorithmus in einem anderen Berechenbarkeitsmodell) algorithmisch zu entscheiden.

      Es sei $\mathcal{P}$ die Menge aller partiellen Turing-berechenbaren Funktionen und $\mathcal{S}\subsetneq\mathcal{P}$ eine nicht-leere, echte Teilmenge davon. Außerdem sei eine effektive Nummerierung vorausgesetzt, die einer natürlichen Zahl $n\in\mathbb{N}$ die dadurch codierte Turing-Maschine $M_{n}$ zuordnet. Dann ist die Menge $\mathcal{C}(\mathcal{S})=\{n\mid \text{die von } M_n \text{ berechnete Funktion liegt in }\mathcal{S}\}$ nicht entscheidbar.

      ,,Sei U eine nicht-triviale Eigenschaft der partiellen berechenbaren Funktionen, dann ist die Sprache $L_U=\{⟨M⟩\mid \text{ M berechnet } f\in U\}$ nicht entscheidbar.''
    \end{solution}
  \end{parts}

  \question Berechnungsmodelle
  \begin{parts}
    \part Gebe ein Loop-Programm an, das die Funktion $n\rightarrow n^2-n$ berechnet
    \begin{solution}
    \end{solution}

    \part Gebe ein Loop Programm an, das die Funktion $f:\mathbb{N}\rightarrow \mathbb{N}$ mit $f(n_1,n_2)=2n_1n_2$ berechnet. Verwende nur elementare Anweisungen und keine Abkürzungen.
    \begin{solution}
    \end{solution}

    \part Gebe ein GoTo Programm an, das die Funktion $g:\mathbb{N}\rightarrow\mathbb{N}$ mit $g(n_1,n_2)=|n_1-n_2|$ berechnet. Verwende nur elementare Anweisungen und keine Abkürzungen.
    \begin{solution}
    \end{solution}

    \part Gebe eine deterministische Turingmaschine $M$ für das Eingabealphabet $\{0,1\}$ an, das folgende Funktion berechnet: Für Eingabe $a_1a_2...a_{n-1}a_n$ berechnet M die Ausgabe $a_na_1...a_{n-1}$ (letzte Symbol der Eingabe an erste Stelle).
    \begin{solution}
    \end{solution}
  \end{parts}

  \question Reduktionen
  \begin{parts}
    \part Seien $A,L\subseteq \sum^*$ nichtleere Sprachen und A entscheidbar. Gebe eine Reduktion von $L\cup A$ auf $L$ an.
    \begin{solution}
    \end{solution}
    \part Gebe eine Bedingung für A an, sodass $L\cup A\leq_p L$ für alle nichtleeren Sprachen $L\subseteq \sum^*$ gilt. Begründe.
    \begin{solution}
    \end{solution}
  \end{parts}

  \question Komplexitätsklassen. Ergänze zu den Paaren von Komplexitätsklassen das Relationssymbol zur Teilmengenbeziehung.
  \begin{parts}
    \part EXPSPACE ? EXPTIME
    \begin{solution}
      EXPSPACE $\geq$ EXPTIME
    \end{solution}
    \part NP ? P
    \begin{solution}
      NP $\geq$ P
    \end{solution}
    \part NP ? NPSPACE
    \begin{solution}
      NP $\leq$ NPSPACE
    \end{solution}
    \part NPSPACE ? PSPACE
    \begin{solution}
      NPSPACE $=$ PSPACE
    \end{solution}
  \end{parts}

  \question Unentscheidbare Probleme: Gebe (mind vier) unterscheidbare Probleme an (als Menge oder als Eingabe-Frage-Paar).
  \begin{solution}
  \end{solution}

  \question NP-vollständiges Problem: Gebe (mind. zwei) NP-vollständige Probleme an (als Menge oder Eingabe-Frage-Paar).
  \begin{solution}

    Hamilton Kreis
    \begin{itemize}
      \item Eingabe: Graph(V,E)
      \item Frage: Kann der Graph so durchlaufen werden, dass jeder Knoten genau ein mal besucht/abgelaufen wird?
    \end{itemize}


  \end{solution}

  \question Polynomialzeitreduktion: Betrachte das Problem 4C, also die Menge der ungerichteten Graphen die sich mit vier Farben färben lassen.
  \begin{parts}
    \part Gebe eine Polynomialzeitreduktion von 3C auf 4C an.
    \begin{solution}
    \end{solution}

    \part Zeige, dass wenn $4C\in P$, dann gilt $P=NP$.
    \begin{solution}
    \end{solution}
  \end{parts}
\end{questions}
\end{document}