Rekursives Programmieren - Theorie
Rekursives Programmieren
Alexander Steinicke Montanuniversit¨at Leoben
Vorlesung, 5.3.2020
Rekursives Programmieren - Theorie
1 Algorithmen
2 Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring
3 Primitiv-rekursive Funktionen
Rekursives Programmieren - Theorie Algorithmen
Was sind Algorithmen?
Charakteristika:
Verfahren zur L¨osung von Problemen einer (klar definierten) Klasse
“Rezeptcharakter” des Algorithmus
Determinierte, nicht determinierte Algorithmen Abbrechende, nicht abbrechende Algorithmen Algorithmus vollzieht sich in Schritten
Sukzessive Herstellung von Konfigurationen in einer Apparatur Diskretheit der Konfigurationen (kein Analogrechner)
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
1 Algorithmen
2 Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
Definition
SeiA 6=∅ eine endliche Menge.
Die MengeW(A) :=S
n≥0An heißt Menge derW¨orter¨uber dem AlphabetA.
F¨ur jedesu = (a1, . . . ,an) =a1· · ·an∈ W(A) heißt n die L¨ange
vonu,n =`(u).
Es gibt genau ein Wort der L¨ange 0, dasleere Wort. Bezeichnung:
♦∈ A0.
Elemente vonA heißen Buchstaben, Symbole, Zeichen, Chars.
Statt W¨orter auch: Zeichenketten, Strings.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
Man beobachtet sofort:
Lemma
1 F¨ur jedes AlphabetA istW(A) abz¨ahlbar unendlich.
2 Mit der Verkn¨upfung
(a1· · ·an,b1· · ·bm)7→a1· · ·anb1· · ·bm
(Verkettung, Concatenation) istW(A) ein Monoid (Verkn¨upfung assoziativ) mit neutralem Element ♦.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
Definition
SeienA,B Alphabete.
Eine Funktionf:W(A)→ W(B) heißt berechenbar, wenn es einen Algorithmus so gibt, dass f¨ur jedesu ∈ W(A) das f(u)∈ W(B) durch Anwendung eines Algorithmus in endlich vielen Schritten berechnet werden kann.
Bemerkungen:
1 W(A),W(B) sind abz¨ahlbare Mengen.
⇒ Nur Funktionen, die auf einer abz¨ahlbaren Menge definiert sind, k¨onnen berechenbar sein.
zB.f :I →R, wobeiI ⊆RIntervall mit mehr als 1 Punkt ist, ist nicht berechenbar.
2 W(A),W(B) sind abz¨ahlbar unendlich.
⇒ Menge aller Funktionen f:W(A)→ W(B) ist nicht abz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
Definition
SeienA,B Alphabete.
Eine Funktionf:W(A)→ W(B) heißt berechenbar, wenn es einen Algorithmus so gibt, dass f¨ur jedesu ∈ W(A) das f(u)∈ W(B) durch Anwendung eines Algorithmus in endlich vielen Schritten berechnet werden kann.
Bemerkungen:
1 W(A),W(B) sind abz¨ahlbare Mengen.
⇒ Nur Funktionen, die auf einer abz¨ahlbaren Menge definiert sind, k¨onnen berechenbar sein.
zB.f :I →R, wobeiI ⊆RIntervall mit mehr als 1 Punkt ist, ist nicht berechenbar.
2 W(A),W(B) sind abz¨ahlbar unendlich.
⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
Definition
SeienA,B Alphabete.
Eine Funktionf:W(A)→ W(B) heißt berechenbar, wenn es einen Algorithmus so gibt, dass f¨ur jedesu ∈ W(A) das f(u)∈ W(B) durch Anwendung eines Algorithmus in endlich vielen Schritten berechnet werden kann.
Bemerkungen:
1 W(A),W(B) sind abz¨ahlbare Mengen.
⇒ Nur Funktionen, die auf einer abz¨ahlbaren Menge definiert sind, k¨onnen berechenbar sein.
zB.f :I →R, wobeiI ⊆RIntervall mit mehr als 1 Punkt ist, ist nicht berechenbar.
2 W(A),W(B) sind abz¨ahlbar unendlich.
⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
2 W(A),W(B) sind abz¨ahlbar unendlich.
⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.
3 Es gibt nur abz¨ahlbar viele Algorithmen
(Beschreibung eines jeden Algorithmus durch einen endlichen Text in einer fix gew¨ahlten Sprache)
und daher nur abz¨ahlbar viele berechenbare Funktionen f :W(A)→ W(B).
Rekursives Programmieren - Theorie Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen
2 W(A),W(B) sind abz¨ahlbar unendlich.
⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.
3 Es gibt nur abz¨ahlbar viele Algorithmen
(Beschreibung eines jeden Algorithmus durch einen endlichen Text in einer fix gew¨ahlten Sprache)
und daher nur abz¨ahlbar viele berechenbare Funktionen f :W(A)→ W(B).
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
1 Algorithmen
2 Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
A) SeiAein Alphabet. Dann ist W(A) abz¨ahlbar unendlich.
Es existiert also eine BijektionW(A)→N.
Beschreibung einer BijektiongA:W(A)↔N: SeiA={a1, . . . ,ap} (p ≥1).
Graduiert-lexikographische Ordnung aufW(A):
♦,
a1,a2, . . . ,ap,
a1a1,a1a2, . . . ,a1ap,a2a1, . . . ,a2ap, . . . ,apa1, . . . ,apap, a1a1a1, . . . ,apapap,
a1a1a1a1, . . . ...
Die Ordnung liefert eine BijektiongA:W(A)↔Ndurch gA(♦) = 0, gA(a1) = 1, gA(a1a1) =p+ 1, . . .
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
A) SeiAein Alphabet. Dann ist W(A) abz¨ahlbar unendlich.
Es existiert also eine BijektionW(A)→N.
Beschreibung einer BijektiongA:W(A)↔N: SeiA={a1, . . . ,ap} (p ≥1).
Graduiert-lexikographische Ordnung aufW(A):
♦,
a1,a2, . . . ,ap,
a1a1,a1a2, . . . ,a1ap,a2a1, . . . ,a2ap, . . . ,apa1, . . . ,apap, a1a1a1, . . . ,apapap,
a1a1a1a1, . . . ...
Die Ordnung liefert eine BijektiongA:W(A)↔Ndurch gA(♦) = 0, gA(a1) = 1, gA(a1a1) =p+ 1, . . .
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
A) SeiAein Alphabet. Dann ist W(A) abz¨ahlbar unendlich.
Es existiert also eine BijektionW(A)→N.
Beschreibung einer BijektiongA:W(A)↔N: SeiA={a1, . . . ,ap} (p ≥1).
Graduiert-lexikographische Ordnung aufW(A):
♦,
a1,a2, . . . ,ap,
a1a1,a1a2, . . . ,a1ap,a2a1, . . . ,a2ap, . . . ,apa1, . . . ,apap, a1a1a1, . . . ,apapap,
a1a1a1a1, . . . ...
Die Ordnung liefert eine BijektiongA:W(A)↔Ndurch
gA(♦) = 0, gA(a1) = 1, gA(a1a1) =p+ 1, . . . 8 / 30
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
Damit:
WennA geordnet ist, dann istgA:W(A)→N“berechenbar”.
EbensogA−1.
B)N={0,1,2, . . .} ist kein Wortmonoid.
Aber: Elemente vonNk¨onnen “codiert” werden.
1. M¨oglichkeit: Strichcode:
S={|}, W(S) ={♦,|,||,|||, . . .}. Die Funktion s:N→ W(S),n7→ ||| · · · |
| {z }
nmal
heißt Strichcodierung vonNund ist berechenbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
Damit:
WennA geordnet ist, dann istgA:W(A)→N“berechenbar”.
EbensogA−1.
B)N={0,1,2, . . .} ist kein Wortmonoid.
Aber: Elemente vonNk¨onnen “codiert” werden.
1. M¨oglichkeit: Strichcode:
S={|}, W(S) ={♦,|,||,|||, . . .}. Die Funktion s:N→ W(S),n 7→ ||| · · · |
| {z }
nmal
heißt Strichcodierung vonNund ist berechenbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
2. M¨oglichkeit: q-adische Codierungen: q∈N,q ≥2.
Zq :={0, . . . ,q−1} ...q paarweise verschiedene Ziffern. Zifferndarstellung:
N↔ Zq
n=k0q0+k1q1+· · ·+kdgd ↔kdkd−1· · ·k1k0
ki ∈ {0, . . . ,q−1},kd 6= 0.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
2. M¨oglichkeit: q-adische Codierungen: q∈N,q ≥2.
Zq :={0, . . . ,q−1} ...q paarweise verschiedene Ziffern.
Zifferndarstellung:
N↔ Zq
n=k0q0+k1q1+· · ·+kdgd ↔kdkd−1· · ·k1k0
ki ∈ {0, . . . ,q−1},kd 6= 0.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
2. M¨oglichkeit: q-adische Codierungen: q∈N,q ≥2.
Zq :={0, . . . ,q−1} ...q paarweise verschiedene Ziffern.
Zifferndarstellung:
N↔ Zq
n=k0q0+k1q1+· · ·+kdgd ↔kdkd−1· · ·k1k0
ki ∈ {0, . . . ,q−1},kd 6= 0.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
SeienA,B Alphabete,gA:W(A)→N,gB:W(B)→N.
F¨ur eine Funktionf :W(A)→ W(B) erh¨alt man folgendes Diagramm:
W(A) −→ Wf (B)
↓gA ↓gB
N
f˜
−
→ N
↓s ↓s W(S)
˜˜
−f
→ W(S)
wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Definition
Eine Funktion ˜f:N→Nheißt arithmetisch berechenbar, wenn die dazugeh¨orige Funktion ˜˜f =s◦f˜◦s−1 (nach obigem Diagramm) berechenbar ist.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
SeienA,B Alphabete,gA:W(A)→N,gB:W(B)→N. F¨ur eine Funktionf :W(A)→ W(B) erh¨alt man folgendes Diagramm:
W(A) −→ Wf (B)
↓gA ↓gB
N
f˜
−
→ N
↓s ↓s W(S)
˜˜
−f
→ W(S)
wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1.
Definition
Eine Funktion ˜f:N→Nheißt arithmetisch berechenbar, wenn die dazugeh¨orige Funktion ˜˜f =s◦f˜◦s−1 (nach obigem Diagramm) berechenbar ist.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
SeienA,B Alphabete,gA:W(A)→N,gB:W(B)→N. F¨ur eine Funktionf :W(A)→ W(B) erh¨alt man folgendes Diagramm:
W(A) −→ Wf (B)
↓gA ↓gB
N
f˜
−
→ N
↓s ↓s W(S)
˜˜
−f
→ W(S)
wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Definition
Eine Funktion ˜f:N→Nheißt arithmetisch berechenbar, wenn die dazugeh¨orige Funktion ˜˜f =s◦f˜◦s−1 (nach obigem Diagramm) berechenbar ist.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
W(A) −→ Wf (B)
↓gA ↓gB
N
f˜
−
→ N
↓s ↓s W(S)
˜˜
−f
→ W(S)
wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Es gilt:
f berechenbar⇔ f˜arithmetisch berechenbar⇔ ˜˜f berechenbar.
Fazit: Man braucht nur arithmetisch berechenbare Funktionen.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Arithmetische berechenbare Funktionen
W(A) −→ Wf (B)
↓gA ↓gB
N
f˜
−
→ N
↓s ↓s W(S)
˜˜
−f
→ W(S)
wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Es gilt:
f berechenbar⇔ f˜arithmetisch berechenbar⇔ ˜˜f berechenbar.
Fazit: Man braucht nur arithmetisch berechenbare Funktionen.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Definition
1 A Alphabet,W(A).
M ⊆ W(A) heißtaufz¨ahlbar:⇔
M=∅oder ∃f:N→ W(A) berechenbar und M={f(0),f(1),f(2), . . .}.
2 M ⊆Nheißt aufz¨ahlbar:⇔
M =∅oder ∃f:N→N arithmetisch berechenbar und M ={f(0),f(1),f(2), . . .}.
Achtung:
aufz¨ahlbar6= abz¨ahlbar ! engl:
enumerable, recursively enumerable6= countable, denumerable !
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Definition
1 A Alphabet,W(A).
M ⊆ W(A) heißtaufz¨ahlbar:⇔
M=∅oder ∃f:N→ W(A) berechenbar und M={f(0),f(1),f(2), . . .}.
2 M ⊆Nheißt aufz¨ahlbar:⇔
M =∅oder ∃f:N→N arithmetisch berechenbar und M ={f(0),f(1),f(2), . . .}.
Achtung:
aufz¨ahlbar6= abz¨ahlbar ! engl:
enumerable, recursively enumerable6= countable, denumerable !
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beispiel: M = die Menge aller Primzahlen.
Bestimmung vonf:N→NmitM =f[N]: f(0) = kleinste Primzahl = 2
f(1) = kleinste Primzahl >f(0) = 2
Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3
-wenn nein, dann untersuche ob 4 Primzahl ...
Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)
wesentlich: Menge aller Primzahlen ist nicht endlich;f ist
“berechenbar”
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beispiel: M = die Menge aller Primzahlen.
Bestimmung vonf:N→NmitM =f[N]:
f(0) = kleinste Primzahl = 2
f(1) = kleinste Primzahl >f(0) = 2
Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3
-wenn nein, dann untersuche ob 4 Primzahl ...
Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)
wesentlich: Menge aller Primzahlen ist nicht endlich;f ist
“berechenbar”
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beispiel: M = die Menge aller Primzahlen.
Bestimmung vonf:N→NmitM =f[N]:
f(0) = kleinste Primzahl = 2
f(1) = kleinste Primzahl >f(0) = 2
Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3
-wenn nein, dann untersuche ob 4 Primzahl ...
Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)
wesentlich: Menge aller Primzahlen ist nicht endlich;f ist
“berechenbar”
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beispiel: M = die Menge aller Primzahlen.
Bestimmung vonf:N→NmitM =f[N]:
f(0) = kleinste Primzahl = 2
f(1) = kleinste Primzahl >f(0) = 2
Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3
-wenn nein, dann untersuche ob 4 Primzahl ...
Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)
wesentlich: Menge aller Primzahlen ist nicht endlich;f ist
“berechenbar”
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beispiel: M = die Menge aller Primzahlen.
Bestimmung vonf:N→NmitM =f[N]:
f(0) = kleinste Primzahl = 2
f(1) = kleinste Primzahl >f(0) = 2
Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3
-wenn nein, dann untersuche ob 4 Primzahl ...
Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)
wesentlich: Menge aller Primzahlen ist nicht endlich;f ist
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Definition
1 A Alphabet,W(A).
M ⊆ W(A) heißtentscheidbar :⇔
χM:W(A)→ {0,1},u 7→
(0, u ∈ M, 1, u ∈ M/ ist berechenbar.
2 M ⊆Nheißt entscheidbar:⇔
χM:N→ {0,1},n7→
(0, n∈M, 1, u ∈/M ist berechenbar.
Beispiel: M = Menge aller Primzahlen ist entscheidbar und aufz¨ahlbar
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Definition
1 A Alphabet,W(A).
M ⊆ W(A) heißtentscheidbar :⇔
χM:W(A)→ {0,1},u 7→
(0, u ∈ M, 1, u ∈ M/ ist berechenbar.
2 M ⊆Nheißt entscheidbar:⇔
χM:N→ {0,1},n7→
(0, n∈M, 1, u ∈/M ist berechenbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Satz
Sei M⊆N. Dann gilt
M entscheidbar ⇔M und N\M aufz¨ahlbar.
(analog f¨urM ⊆ W(A))
Achtung:M aufz¨ahlbar alleine gen¨ugt nicht!
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beweis: ⇒:
SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.
Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist
χN\M(k) =
(0, χM(k) = 1 1, χM(k) = 0. Also ist auchN\M entscheidbar.
Daher gen¨ugt: ZeigeM ist aufz¨ahlbar. 1. Fall: M =∅. Dann istM aufz¨ahlbar.
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beweis: ⇒:
SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.
Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist
χN\M(k) =
(0, χM(k) = 1 1, χM(k) = 0.
Also ist auchN\M entscheidbar.
Daher gen¨ugt: ZeigeM ist aufz¨ahlbar. 1. Fall: M =∅. Dann istM aufz¨ahlbar.
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beweis: ⇒:
SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.
Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist
χN\M(k) =
(0, χM(k) = 1 1, χM(k) = 0.
Also ist auchN\M entscheidbar.
Daher gen¨ugt: ZeigeM ist aufz¨ahlbar.
1. Fall: M =∅. Dann istM aufz¨ahlbar.
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beweis: ⇒:
SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.
Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist
χN\M(k) =
(0, χM(k) = 1 1, χM(k) = 0.
Also ist auchN\M entscheidbar.
Daher gen¨ugt: ZeigeM ist aufz¨ahlbar.
1. Fall: M =∅. Dann istM aufz¨ahlbar.
2. Fall: M 6=∅.
Definiere eine berechenbare Funktion f:N→N mitM =f[N] rekursiv so:
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Beweis: ⇒:
SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.
Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist
χN\M(k) =
(0, χM(k) = 1 1, χM(k) = 0.
Also ist auchN\M entscheidbar.
Daher gen¨ugt: ZeigeM ist aufz¨ahlbar.
1. Fall: M =∅. Dann istM aufz¨ahlbar.
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
F¨ur jedesk ∈Nsei
f(k) :=
kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}
f(0), sonst.
Es ist also
f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}
...
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
F¨ur jedesk ∈Nsei
f(k) :=
kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}
f(0), sonst.
Es ist also
f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}
...
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
F¨ur jedesk ∈Nsei
f(k) :=
kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}
f(0), sonst.
Es ist also
f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}
...
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:
F¨ur jedesk ∈Nsei
f(k) :=
kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}
f(0), sonst.
Es ist also
f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}
..
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M. Annahme: f[N]6=M.
Dann existiert ein kleinstes Elementp∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.
Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.
F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.
Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.
Annahme: f[N]6=M.
Dann existiert ein kleinstes Elementp∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.
Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.
F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.
Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.
Annahme: f[N]6=M.
Dann existiert ein kleinstes Elementp ∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.
Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.
F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.
Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.
Annahme: f[N]6=M.
Dann existiert ein kleinstes Elementp ∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.
Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.
F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.
Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
Zeige noch: M =f[N] ={f(0),f(1), . . .}.
Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.
Annahme: f[N]6=M.
Dann existiert ein kleinstes Elementp ∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.
Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.
F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.
Das ist ein Widerspruch zur Definition vonf(0) resp. f(k).
Damit istM =f[N].
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
⇐: Annahme: M und N\M aufz¨ahlbar.
Wie eine Entscheidung finden f¨ur k ∈M?
Es gibt:
f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}. Berechne sukzessivef(0),g(0),f(1),g(1), . . .
Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
⇐: Annahme: M und N\M aufz¨ahlbar.
Wie eine Entscheidung finden f¨ur k ∈M? Es gibt:
f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}.
Berechne sukzessivef(0),g(0),f(1),g(1), . . .
Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
⇐: Annahme: M und N\M aufz¨ahlbar.
Wie eine Entscheidung finden f¨ur k ∈M? Es gibt:
f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}.
Berechne sukzessivef(0),g(0),f(1),g(1), . . .
Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Aufz¨ahlbare und entscheidbare Mengen
⇐: Annahme: M und N\M aufz¨ahlbar.
Wie eine Entscheidung finden f¨ur k ∈M? Es gibt:
f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}.
Berechne sukzessivef(0),g(0),f(1),g(1), . . .
Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Verallgemeinerung f¨ur mehrere Komponenten
1 Algorithmen
2 Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring
Rekursives Programmieren - Theorie Berechenbare Funktionen
Verallgemeinerung f¨ur mehrere Komponenten
Alle obigen Definitionen sind erweiterbar:
SeienA1, . . . ,Ap,BAlphabete und
f:W(A1)× · · · × W(Ap)→ W(B).
Definition
f ist berechenbar :⇔
F¨ur jedes (u1, . . . ,up)∈ W(A1)× · · · × W(Ap) istf(u1, . . . ,up) berechenbar durch einen Algorithmus.
Ebenso: Entscheidbar, aufz¨ahlbar ¨ahnlich definiert f¨ur mehrere Komponenten.
Analog f¨ur arithmetische Funktionenf:Np→N.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Verallgemeinerung f¨ur mehrere Komponenten
Alle obigen Definitionen sind erweiterbar:
SeienA1, . . . ,Ap,BAlphabete und
f:W(A1)× · · · × W(Ap)→ W(B).
Definition
f ist berechenbar :⇔
F¨ur jedes (u1, . . . ,up)∈ W(A1)× · · · × W(Ap) istf(u1, . . . ,up) berechenbar durch einen Algorithmus.
Ebenso: Entscheidbar, aufz¨ahlbar ¨ahnlich definiert f¨ur mehrere Komponenten.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Weitere Begriffe nachTuring
1 Algorithmen
2 Berechenbare Funktionen
Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring
3 Primitiv-rekursive Funktionen
Rekursives Programmieren - Theorie Berechenbare Funktionen
Weitere Begriffe nachTuring
Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.
Eingabe: “leeres Band mit Zellen”
Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band. Solche Maschinen werden beschrieben durchn×4-Matrizen. Definition
f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.
Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Weitere Begriffe nachTuring
Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.
Eingabe: “leeres Band mit Zellen”
Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.
Solche Maschinen werden beschrieben durchn×4-Matrizen. Definition
f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.
Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Weitere Begriffe nachTuring
Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.
Eingabe: “leeres Band mit Zellen”
Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.
Solche Maschinen werden beschrieben durchn×4-Matrizen.
Definition
f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.
Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Weitere Begriffe nachTuring
Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.
Eingabe: “leeres Band mit Zellen”
Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.
Solche Maschinen werden beschrieben durchn×4-Matrizen.
Definition
f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.
Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Weitere Begriffe nachTuring
Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.
Eingabe: “leeres Band mit Zellen”
Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.
Solche Maschinen werden beschrieben durchn×4-Matrizen.
Definition
f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.
Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und -aufz¨ahlbar.
Rekursives Programmieren - Theorie Berechenbare Funktionen
Weitere Begriffe nachTuring
These vonAlonzo Church:
These
Die “berechenbaren” Funktionen sind genau die Turing-berechenbaren Funktionen.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Funktionenf:Nn→N,n≥0.
Nn={a:{1, . . . ,n} →N} 3(a1,a2, . . . ,an).
N0 ={a:∅ →N}besitzt nur ein Element: (∅,N,∅). Damit: f:N0 →N⇔f ∈N.
Fazit: 0-stellige arithmetische Funktionen sind Elemente ausN.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Funktionenf:Nn→N,n≥0.
Nn={a:{1, . . . ,n} →N} 3(a1,a2, . . . ,an).
N0 ={a:∅ →N}besitzt nur ein Element: (∅,N,∅).
Damit: f:N0 →N⇔f ∈N.
Fazit: 0-stellige arithmetische Funktionen sind Elemente ausN.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Funktionenf:Nn→N,n≥0.
Nn={a:{1, . . . ,n} →N} 3(a1,a2, . . . ,an).
N0 ={a:∅ →N}besitzt nur ein Element: (∅,N,∅).
Damit: f:N0 →N⇔f ∈N.
Fazit: 0-stellige arithmetische Funktionen sind Elemente ausN.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Konvention
1 F¨ur jedesn≥0 und jedesk ∈Nsei
ckn:Nn→N,(x1, . . . ,xn)7→k die konstante Funktion mit Wert k.
2 F¨ur jedesn≥1 undi mit 1≤i ≤n sei pin:Nn→N,(x1, . . . ,xn)7→xi diei-te Projektion.
3 N:N→N, sei die Nachfolgerfunktion.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Definition
Eine arithmetische Funktionf :Nn→N,(n≥0) heißt
primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:
(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N
(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit
f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).
Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Definition
Eine arithmetische Funktionf :Nn→N,(n≥0) heißt
primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:
(PR 1) f =c00 (Erinnerung: c00= 0∈N)
(PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N
(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit
f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).
Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Definition
Eine arithmetische Funktionf :Nn→N,(n≥0) heißt
primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:
(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n
(PR 3) f =N
(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit
f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).
Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Definition
Eine arithmetische Funktionf :Nn→N,(n≥0) heißt
primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:
(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N
(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit
f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).
Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Definition
Eine arithmetische Funktionf :Nn→N,(n≥0) heißt
primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:
(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N
(PR 4) Es gibt primitiv-rekursive Funktioneng:Np→N und h1:Np →N, . . . ,hp:Np→Nmit
f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Definition
(PR 4) Es gibt primitiv-rekursive Funktioneng:Np→N und h1:Np →N, . . . ,hp:Np→Nmit
f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).
Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).
(PR 5) f:Nn→N mitn≥1 und es gibt primitiv-rekursive Funktionen g:Nn−1→N undh:Nn+1→Nso, dass f¨ur alle (x1, . . . ,xn−1)∈Nn−1 und alley ∈Ngilt:
f(x1, . . . ,xn−1,0) =g(x1, . . . ,xn−1)
f(x1, . . . ,xn−1,N(y)) =h(x1, . . . ,xn−1,y,f(x1, . . . ,xn−1,y)).
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Definition
(PR 4) Es gibt primitiv-rekursive Funktioneng:Np→N und h1:Np →N, . . . ,hp:Np→Nmit
f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).
Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).
(PR 5) f:Nn→N mitn≥1 und es gibt primitiv-rekursive Funktioneng:Nn−1→N undh:Nn+1→Nso, dass f¨ur alle (x1, . . . ,xn−1)∈Nn−1 und alley ∈Ngilt:
f(x1, . . . ,xn−1,0) =g(x1, . . . ,xn−1)
f(x1, . . . ,xn−1,N(y)) =h(x1, . . . ,xn−1,y,f(x1, . . . ,xn−1,y)).
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
1 Wenn auf f (PR 4) zutrifft sagt man:
f durch Einsetzen vonh1, . . . ,hp in g definiert.
2 Wenn auf f (PR 5) zutrifft, sagt man:
f durch g und h induktiv (rekursiv) definiert.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x= 0, x−1, x>0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x= 0, x−1, x>0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x= 0, x−1, x>0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x= 0, x−1, x>0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x = 0, x−1, x >0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x = 0, x−1, x >0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x = 0, x−1, x >0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Satz
Folgende Funktionen sind primitiv-rekursiv:
1 Addition in N: (x,y)7→x+y
2 Multiplikation in N: (x,y)7→x·y
3 Exponentiation inN: (x,y)7→xy mit00:= 1
4 Fakult¨at: x 7→x!
5 Vorg¨anger: V:N→N, V(x) :=
(0, x = 0, x−1, x >0.
6 Modifizierte Subtraktion: (x,y)7→x −. y =
(0, x<y, x−y, x≥y.
7 Abstand: (x,y)7→ |x−y|
8 Signum-Funktion, sgn(x) =
(0, x= 0, 1, x>0.
Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen
Beweis:
1 Addition:
+ (x,0) =x+ 0 =x,
+ (x,N(y)) =x+N(y) =N(x+y),
⇒g =p11,h =N.
2
·(x,0) =x·0 = 0,
·(x,N(y)) =x·y+x = +(x·y,x)
⇒g =C01,h= +( , )
3
x0 = 1,
N(y) y·