\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}

\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}
        \end{solution}
        \part Ein NFA ist ein Tupel $M=(...)$
        \part Die von einem PDA $M=(Z,\sum, \Gamma, \delta, z_0, \#)$ akzeptierten Sprache ist $L(M)=...$
        \part Sei $M=(Z,\sum,z_0,\delta, E)$ ein DFA. Die Zustände $z,z'\in Z$ heißen erkennungsäquivalent, wenn
    \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)...
        \part Der Satz von Myhill-Nerode besagt,...
        \part Das Pumping-Lemma für kontextfreie Sprachen ...
    \end{parts}

    \question Konstruktionen der Automatentheorie
    \begin{parts}
        \part Betrachte den NFA X (Bild wird noch erstellt). Berechne einen DFA Y mit $L(X)=L(Y)$. 
        \part Betrachte den DFA X (Bild wird noch erstellt). Berechne den minimalen DFA Y mit $L(X)=L(Y)$. 
    \end{parts}

    \question Algorithmen für reguläre Sprachen
    \begin{parts}
        \part 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.
    \end{parts}

    \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.
        \part Zeige, dass $L=\sum^*\backslash K$ (Komplement von $L$) nicht kontextfrei ist.
        \part Begründe warum $K$ deterministisch kontextfrei ist oder warum nicht.
    \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. 
        \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.
        \part Gebe für die Wörter aus b), die von $G'$ erzeugt werden, den Ableitungsbaum an. 
    \end{parts}

    \question Definitionen der Berechnbarkeitstheorie. Verfollständige die Definitionen
    \begin{parts}
        \part Ein While Programm ist von der Form... 
        \part Die von einer Turingmaschine $M$ akzeptierte Sprache ist $L(M)=...$
        \part Eine Sprache $L$ heißt rekursiv aufzählbar, falls ... 
    \end{parts}

    \question Sätze der Berechnbarkeitstheorie: Vervollständige die folgenden Aussagen
    \begin{parts}
        \part Sei $L\subseteq \sum^*$ eine Sprache. Sind $L$ und $\sum^*\backslash L$ semi-entscheidbar, dann... 
        \part Der Satz von Rice lautet...
    \end{parts}

    \question Berechnungsmodelle
    \begin{parts}
        \part Gebe ein Loop-Programm an, das die Funktion $n\rightarrow n^2-n$ berechnet 
        \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).
    \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
        \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.
    \end{parts}

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

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