\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
%usepackage{multicol}
%usepackage{booktabs}
%\usepackage{pstricks}
%\usepackage{pst-node}
\usepackage[paper=a4paper,left=30mm,right=20mm,top=20mm,bottom =25mm]{geometry}
\usepackage[
	pdftitle={Berechenbarkeits.- Komplex.Th.},
	pdfsubject={Mitschrift der Vorlesung "Berechenbarkeits.- Komplex.Th." an der HTW-Aalen, bei Herrn Thierauf.},
	pdfauthor={Thomas Battermann},
	pdfkeywords={Berechenbarkeits.- Komplex.Th.},
	pdfborder={0 0 0}
]{hyperref}
\usepackage{tabularx}
%\usepackage{graphicx}
\usepackage[usenames,dvipsnames]{color}
\usepackage{lastpage}
\usepackage{fancyhdr}
\setlength{\parindent}{0ex}
\setlength{\parskip}{2ex}
\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{4}
\definecolor{darkgreen}{rgb}{0,0.5,0}
\definecolor{darkblue}{rgb}{0,0,0.5}

\pagestyle{fancy} %eigener Seitenstil
\fancyhf{} %alle Kopf- und Fußzeilenfelder bereinigen
\fancyhead[L]{Berechenbarkeits.- Komplex.Th.} %Kopfzeile links
\fancyhead[C]{Semester 3} %zentrierte Kopfzeile
\fancyhead[R]{WS 2011/2012} %Kopfzeile rechts
\renewcommand{\headrulewidth}{0.4pt} %obere Trennlinie
\fancyfoot[C]{Seite \thepage\ von \pageref{LastPage}}
\renewcommand{\footrulewidth}{0.4pt} %untere Trennlinie

\newcommand{\spa}{\hspace*{4mm}} 
\newcommand{\defin}{\textcolor{darkgreen}{\textbf{Def.: }}}
\newcommand{\satz}{\textcolor{darkblue}{\textbf{Satz: }}}
\newcommand{\rrfloor}{\right\rfloor}
\newcommand{\llfloor}{\left\lfloor}

\title{Berechenbarkeits.- Komplex.Th.}
\author{Mitschrift von Thomas Battermann}
\date{3. Semester}

\begin{document}
	\pagestyle{empty}
	
	\maketitle\thispagestyle{empty}
	\tableofcontents\thispagestyle{empty}
	
	\newpage
	\pagestyle{fancy}
	\setcounter{page}{1}

	\section{Turingmaschinen}	

	Eingabe und Arbeitsband
	\begin{tabular}{c|c|c|c|c|c|c}
		\hline
			& \color{Orange}{\(x_1\)} & \(x_2\) & \(x_3\) & … & \(x_n\) & \\
		\hline
	\end{tabular}
	{\color{Orange}Lese- Schreibkopf}

	Abhängig vom Zustand und vom gelesenen Zeichen auf dem Band kann die Maschine:
	\begin{itemize}
		\item den Zustand wechseln
		\item das gelesene Zeichen überschreiben
		\item den Lese-Schreib-Kopf um \( \le 1\) Feld auf dem Band nach links oder rechts bewegen.
	\end{itemize}

	Formal:\\
	Ein \underline{Turingmaschine} (TM) M hat 8 Komponenten,\\
	\spa \( M = (Z, \Sigma, \Gamma, \delta, Z_0, Z_a, Z_V,\Box ) \)\\
	wobei:
	\begin{itemize}
		\item \(Z\) – Zustände
		\item \(\Sigma\) – Eingabealphabet
		\item \(\Gamma\) – Arbeitalphabet
		\item \(Z_0\) – Anfangszustand
		\item \(Z_a\) – akzeptierender Zustand
		\item \(Z_V\) – verwerfender Zustand
		\item \(\Box\) – Blank \( \in \Gamma  \) – \(\Sigma\)
	\end{itemize}

	Die Übergangsfunktion S,\\
	\spa \( \delta: Z \times \Gamma \to Z \times \Gamma \times \{ L,N,R \} \)\\
	D.\,h. typische Anweisung ist\\
	\spa \( \delta(z,a) = (Z',b,x) \)\\
	Wenn M im Zustand z ist und das Zeichen a liest, dann wechselt M in den Zustand \(Z'\), überschreibt a mit b und bewegt den Lese-Schreibkopf um ein Feld nach links, falls \( X=L\)
	\begin{itemize}
		\item um ein Feld nach rechts, falls \( X=R\)
		\item bleibt stehen, falls \( X=N\)
	\end{itemize}

	Rechnung von M auf Eingabe \( x = x_1 … x_n \in \Sigma^x \):\\
	Initial steht x auf dem Eingabeband und der Lese-Schreibkopf auf dem 1. Zeichen \(x_1\) .\\
	Links und rechts der Eingabe steht \(\Box\) auf allen Feldern (Beidseitig unbeschränktes Band).\\
	Anfangszustand ist \(Z_0\)
	Dann fährt die Maschine Schritte gemäß \(\delta\). Die Rechnung stoppt, wenn \(Z_a\) oder \( Z_V\) erreicht wird. x wird akzeptiert, falls \(Z_a\) erreicht wird, sonst wird x verworfen.

	Die von \underline{M akzeptierte Sprache} ist\\
	\spa \( L(M) = \{ x \in \Sigma* \mid M \text{ akzeptiert } x \} \)
	Bsp. Sei \( \Sigma = \{ 0,1 \} \)\\
	\spa Berechne \(f(x) = x+1 \)\\
	\begin{tabular}{c|c|c|c|c}
		\hline
		\(\Box\) & 1& 0 & 1 & \(\Box\) \\
		\hline
	\end{tabular} \( \to \)
	\begin{tabular}{c|c|c|c|c}
		\hline
		\(\Box\) & 1& 1 & 0 & \(\Box\) \\
		\hline
	\end{tabular}

	Der berechnete Funktionswert ist definiert als das Wort \( \in \Sigma* \) von der Position des Lese-Schreibkopfs nach rechts, bis zu 1. Blank.\\
	In \(Z_a\).

	\( \sigma(Z_0,0) = (Z_0, 0, R) \)\\
	\( \sigma(Z_0,1) = (Z_0, 1, R) \)\\
	\( \sigma(Z_0,\Box) = (Z_1, \Box, L) \)\\
	\( \sigma(Z_1,0) = (Z_2, 1, L) \)\\
	\( \sigma(Z_1,1) = (Z_1, 0, L) \)\\
	\( \sigma(Z_2,0) = (Z_2, 0, L) \)\\
	\( \sigma(Z_2,1) = (Z_2, 1, L) \)\\
	\( \sigma(Z_2,\Box) = (Z_a, \Box, R) \)\\
	\( \sigma(Z_1,\Box) = (Z_a, 1, N) \)

	Als Diagramm
	% TODO

	\( L = \{ 0^{2^n} \mid n \ge 0 \} \)\\
	\( 0, 00, 0^4, 0^8, …\)

	\begin{tabular}{c|c|c|c|c|c}
		\hline
		 & 0 & 0 & 0 & 0 & \\
		\hline
	\end{tabular}

	\begin{enumerate}
		\item Vorschlag: Zähle\\
			\begin{tabular}{c|c|c|c|c|c}
				\hline
				& \( \not0\) & 0 & … 0 & \( \Box \) & 0\\
				\hline
			\end{tabular}
		\item Vorschlag:\\
			\begin{enumerate}
				\item streiche jede 2. Null, teste dabei, ob Anzahl gerade
				\item iteriere Schritt 1\\
					bis nur noch eine Null bleibt.\\
					% TODO: Diagramm
					\( 0000 \to 0x0x \to 0xxx \)
			\end{enumerate}
	\end{enumerate}
	
	\subsection{Erweiterungen}

	\subsubsection{Mehrband-Turingmaschine}

		Turingmaschine mit fester Anzahl k von Bändern. Davon eins ausgezeichnet für die Eingabe.\\
		\( \delta: Z \times \Gamma^k \to Z \times \Gamma^k \times \{ L,N,R \}^k \)

		Bsp.:\\
		\( \delta(Z,a,b) = \delta(Z', c,d,L,R) \)

		Bsp.: \( L = \left\{ w \# w \mid w \in \{0,1\}^k \right\} \)\\
		\( 100\#100 \to x00\#x00 …\)

		\underline{2-Band-Turingmaschine}\\
		kopiert w auf 2. Band\\
		\spa \( \delta(Z_0, a, \Box) = (Z_0,a,a,R,R) \) für \( a \in \{1,0\}\)\\
		\spa \( \delta(Z_0, \#,\Box) = (Z_1, \#,\Box, N,L) \)\\
		\spa \( \delta(Z_1, \#,\Box) = (Z_1, \#,a, N,L)\)\\
		\spa \( \delta(Z_1, \#,\Box) = (Z_2, \#,\Box,R,R) \)\\
		\spa \( \delta(Z_2, a,a) = (Z_2,a,a,R,R) \)\\
		\spa \( \delta(Z_2, \Box,\Box) = (Z_a, \Box,\Box,N,N) \)

		Alles was fehlt geht nach \( Z_V \)

	\subsubsection{Nichtdeterministische Turingmaschine (NTM)}

		Definiert wie Turingmaschine, mit:\\
		\spa \( \delta: Z\times \Gamma \to \mathcal{P}(Z \times \Gamma \times \{ L,N,R \}) \)\\
		z.\,B. \( \delta(Z,a) = \{ (Z_1,b,L) , (Z_2,c,N) \} \)

		M akzeptiert x, falls es eine akzeptierende Rechnung gibt.

	\subsubsection{Nichtdeterministische Mehrband Turingmaschine}

	Bsp. \( L = \{ x0y \mid \left|x\right| = \left|y\right| \}\)\\
	über \( \Sigma = \{0,1\}\)

	\begin{align*}
		\delta(Z_0, 1, \Box) &= \{( Z_0,1,1,R,R )\}\\
		\delta(Z_0,0,\Box) &= \{ (Z_0,0,0,R,R), (Z_1,0,\Box,R,L) \}	\\
		\delta(Z_1,a,b) &= \{ (Z_1,a,b,R,L) \} \quad a,b \rightarrow \{0,1\}\\
		\delta(Z_1,\Box,\Box) &= \{ (Z_a,\Box,\Box,N,N) \}\\
		\delta(Z_0,\Box,\Box) &= \{ (Z_v,\Box,\Box,N,N) \}\\
	\end{align*}
	(fehlende Anweisungen verwerfen.)

	Deterministisch: \(\delta: Z\times \Gamma \to Z \times \Gamma \times \{ L,N,R\} \)\\
	Nicht Deterministisch: \(\delta: Z\times \Gamma \to \mathcal P(Z \times \Gamma \times \{ L,N,R\}) \)

	\satz Zu jeder k-Band Turingmaschine gibt es eine äquivalente (1-Band) Turingmaschine\\
	\underline{Bew.:} (Idee)\\
	k-Band Turingmaschine M\\\
	\begin{tabular}{c|c|c|c|c} \hline & x & & & \\\hline & & y & & \\\hline & & & z & \\\hline \end{tabular}

	TM M'\\
	\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c|c}
		\hline & \# & x & & & \# & & y & & \# & & & z & \# &  \\\hline
	\end{tabular}

	M:\\	
	\begin{tabular}{c|c|c|c|c|c}
		\hline
		\(\Box\)&a&b&a&c&\(\Box\)\\
		\hline
		\(\Box\)&c&c&\(\Box\)\\
		\hline
		\(\Box\)&b&a&a&a&\(\Box\)\\
		\hline
	\end{tabular}

	M':\\
	\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c}
		\hline
		\# & \(\Box\)& a& \(\dot b\)& a&c&\(\Box\)&\#&\(\Box\)&\(\dot c\)&a&\(\Box\) & \# & \(\dot\Box\) & b&a&a&a&\(\Box\)&\#\\
		\hline
	\end{tabular}\\
	\( \dot b \rightarrow \Gamma' - \Gamma \)

	M' läuft 2x mal über das gesamte Band (und zurück)
	\begin{enumerate}
		\item M' merkt sich alle Zeichen, die die Lese-Schreibköpfe aktuell lesen
		\item M' führt die Änderungen gemäß \(\delta\) von M auf allen Bändern aus.
	\end{enumerate}

	Merke Zeichen im Zustand:\\
	\spa \( Z_{Z,b,c,\Box} \)\\
	d.\,h. \(\left|Z\right| \cdot \left|\Gamma\right|^3 \) viele Zustände, also endlich.

	Initial:\\
	\begin{tabular}{c|c|c|c|c|c|c}
		\hline
		\# & x & \# & \(\Box\) & \# & \(\Box\) &\#\\
		\hline
	\end{tabular}

	Zeit: M macht t Schritte auf Eingabe X.\\
	Alle Bänder von M' sind also mit Wörtern beschriftet mit Länge \(\le t\)\\
	\(\to\) Beschrifteter Teil des Bands von M hat Länge \(\le k \cdot t \)

	Pro Schritt von M macht M'
	\begin{itemize}
		\item \( \le 2 \cdot 2 \cdot t \) Schritte für die beiden Durchläufe.
		\item verschieben zum Platz schaffen \( \le k \cdot 2\cdot t\)
		\item Zusammen \( \le (k+2) \cdot 2\cdot t = \mathcal O(t)\).\\
			M macht t Schritte \( \Rightarrow M' \) macht \( \mathcal O(t^2) \) Schritte
	\end{itemize}

	\satz Zu jeder NTM gibt es eine äquivalente TM.

	Bew. (Idee):\\
	Sei M NTM

	Strategie: durchsuche Baum "Breite zuerst". Dazu zunächst Mehrband-TM (det.).\\

	Pro Adresse:
	\begin{itemize}
		\item Kopiere x auf das (leere) Simulationsband,
		\item führe Rechnung von M auf x aus, wobei jeweils die Anweisung gemäß Adresse benützt wird.
		\item falls M akzeptiert wird, dann akzeptierte.
	\end{itemize}
	
	Bann lösche Simulationsband, erhöhe Adresse um 1 (zur Basis d) und wiederhole.

	Zeit: Habe jede Rechnung von M die länge \(\le t\)\\
	\(\Rightarrow\) Anzahl der Knoten im Baum ist \( \le d^{t+1} - 1 \)\\
	\(\Rightarrow\) Rechenzeit von M': \(\mathcal O(t+n)\cdot d^t\)\\
	\(\Rightarrow\) Rechenzeit der det. 1-Band TM M'' ist dann \( \mathcal O\left(\left(\left(t+n\right) \cdot d^t\right)^2\right) \)

	\begin{align*}
		  &\mathcal O(t^2 2^{2t \cdot \log d})\\
		= &\mathcal O(2^{2 \log t} \cdot 2^{2 \cdot \log d})\\
		= &\mathcal O(2^{2t \log d + 2 \log t})\\
		= &\mathcal O(2^{2^{2t(\log d + 1)}})\\
		= & 2^{\mathcal O(t)}
	\end{align*}

	Weitere Rechenmodelle haben sich alle als äquivalent zur TM erwiesen. Insbesondere lässt sich jedes C-Programm in eine äquivalente TM umschreiben.

	\underline{These von Turing/Church}

	Algorithmus = TM
	intuitiver Begriff = formal 


\end{document}
