Skip to content

Berechnungsmodelle

Church-Turning-These & Gandys These M

Intuitive berechenbare Funktion: eine Funktion, welche algorithmisch (durch eine mechanisches Verfahren) berechnet werden kann

Turing-berechenbare Funktionen: Funktionen, welche von einer Turing-Maschinen berechnet werden können

Jede intuitive berechenbare Funktion lässt sich mit einer Turingmaschine berechnen.

Gandys These M: Alles, was jemals mit einer (endlichen) Maschine/physikalischen Apparatur berechnet werden kann, ist bereits von einer Turing-Maschine berechenbar.

Bis jetzt wurde noch kein Gegenbeispiel zu beiden Thesen gefunden worden.

Turing-berechenbare Funktion

image-20220405125435040

\(u\) ist ein Wort. Pfeil noch oben ist nicht teil von \(\Gamma\).

image-20220405130040017

Oder: Wenn es eine Funktion gibt, welche für alle Input Wort anhält.

Beispiel

image-20220405130209018

wenn zu 1011 1 addiert werden soll, wird so lange von rechts nach links gerückt, bis eine 0 gefunden wird. Diese wird zu einem 1 gemacht. Die 1 davor werden zu 0

Loop-Programme

Ein LOOP-Programm besteht aus folgendem:

  • Variabeln: \(x_0\), \(x_1\), \(x_2\), ...,\(x_k\)
  • Konstante: 0, 1, 2, 3, ...
  • Zuweissungen: \(x_k=x_j+c\) oder \(x_k = x_j - c\)

image-20220405133641515

image-20220405133652149

image-20220405133741192

Wenn die Loop-Variable (x3 in LOOP x3 DO ... END) im Loop verändert wird, hat dies keinn Einfluss auf die Anzahl Durchläufe.

While-Programme

image-20220405135718807

Turing-Vollständigkeit

image-20220405140233522

Auch jede Turing-Maschine kann mit einem While-Programm implementiert werden.

GOTO-Programme

image-20220405140409314

image-20220405140420107

image-20220405140430132

image-20220405140438311

Primitiv rekursive Funktionen

image-20220405141425838

image-20220405141416737

image-20220405141931968

image-20220405142412790

image-20220405144202626

image-20220405144556344

Ackermannfunktion

Eine Ackermannfunktion \(a: \N^2\rightarrow N\) ist durch die Gleichung: $$ \begin{align} a(0, m)&= m + 1\ a(n + 1, 0) &= a(n, 1)\ a(n + 1, m + 1) &= a(n, a(n + 1, m)) \end{align} $$ image-20220405150255050

Loop-Interpreter

Ein Loop-Interpreter ist eine Funktion \(I:\N\times \N \rightarrow \N\), welche als Input den Code und Input eines Loop-Programmes nimmt und den Code mit dem Input ausführt und zurück gibt. Für einen Loop-Interpreter gelten folgende Eigenschaften:

  • Es gibt genau ein totaler Loop-Interperter
  • Es kein Loop-berechenbare Loop-Interpreter. Es gibt also kein Loop-Programm, was Loop-Programme interpretieren kann