|
|
\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{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{\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 \( \lt 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 \Rho \) – \(\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.
|
|
|
|
|
|
|
|
|
\end{document}
|