TIA: Berechenbare Zahlenfunktionen (Lernziele KE2)
In dieser Kurseinheit gibt es zwar nicht viele Lernziele, aber lasst euch nicht täuschen: sie sind wichtig. Die Beiträge zu diesem Thema, die ich auch im passenden Kontext in diesem Beitrag verlinkt habe sind:
- Primitive Rekursion/LOOP Berechenbarkeit
- Mue-Rekursion und WHILE/LOOP-Berechenbarkeit
- Cantorsche Tupelfunktion
Starten wir aber einfach wieder anhand der Lernziele und kämpfen uns da durch.
Lernziel 1
Angabe und Erläuterung der Definition und der Eigenschaften der Cantorschen Tupelfunktion
Zum Glück habe ich bereits hier einen langen Beitrag zum Thema erstellt und wiederhole mich deswegen nicht, sondern springe sofort zur Antwort.
Antwort zum Lernziel: mit der Cantorschen Tupelfunktion ist es uns möglich einem -Tupel mit Elementen aus eine einzige, eindeutige Zahl aus zuzuordnen (Reduktion). Durch diese bijektive Abbildung von  können wir uns auf die Berechnung von einstelligen Funktionen beschränken.
Einen weiteren prominenten Platz hat die Cantorsche Tupelfunktion bei dem Vergleich von Mengen: zwei Mengen sind gleichmächtig wenn man zwischen ihnen eine Bijektion herstellen kann.
Lernziel 2
Erläuterung der Abschlusseigenschaften berechenbarer Zahlenfunktionen
Ich bin mir hier gerade etwas unschlüssig: im Skript ist nicht mehr viel zu dem Thema drin, als der Satz zur Substitution, primitive Rekursion, und der Umkehrfunktion. Vielleicht dann am besten an ein paar Beispielen?
Substitution
Zunächst haben wir zwei ggf. partielle Funktionen und ggf. partielle Funktionen bis (d.h. so viele Funktionen wie der Definitionsbereich von Parameter hat), mit . Alle Funktionen sind berechenbar. Dann ist auch die Substitution berechenbar.
ist definiert durchÂ
Viel Zeug, oder? Keine Sorge, ist ganz easy.
Beispiel
Die Substitution sieht nun so aus:
.
Belegen wir unsere Funktion mit Werten:
War doch trivial, oder (das wollte ich immer schon mal sagen!)?
Primitive Rekursion
Das ist ein klein wenig ekeliger als die Substitution, aber wir bekommen das gleich noch klein.
Auch hier haben wir zwei Funktionen  und  , die berechenbar sind (Achtung: sie müssen auch total sein, denn sonst können wir nicht über diese "rekursivieren"). Wenn das der Fall ist, dann ist auch berechenbar.
ist definiert als:
Für alle und . Man sieht bereits jetzt, dass wir rekursiv arbeiten. Noch deutlicher wird es an einem Beispiel.
Beispiel
Nehmen wir einfach mal (-malige Rekursion) und .
Versuchen wir das mit :
Viel Text, aber sicherlich gut nachzuvollziehen. Wir loopen und also durch die Funktionen mit einer festen Anzahl an Schleifen! In diesem Beitrag habe ich die primitive Rekursion etwas detaillierter betrachtet.
Und was ist wenn wir keine feste Anzahl an Schleifen haben können? Dann hilft uns unser -Operator.
Ist mit berechenbar, so ist es auch . Wie ihr seht, auch hier ist total. Was ist ?! . Es ist definiert durch:
What the... Entspannung, Entspannung! Das ist nichts weiter als unsere -Rekursion. Ich suche gerade im Skript ob wir das bereits irgendwo auf den vorherigen Seiten hatten... witzig. Hatten wir nicht. Das ist wirklich die erste Erwähnung. Und dann gleich ins kalte Wasser. Nicht schlimm, denn unser ist nichts weiter, als der Operator, der es uns erlaubt auch Dinge zu berechnen, wo wir die genaue Anzahl an Schleifendurchläufen noch nicht wissen.
Und zwar indem wir unserer zu berechnende Funktion so weit umformen, dass wir beim Ende der Berechnung auf eine Nullstelle stoßen. Ich werde das nicht groß ausführen, sondern verweise ganz frech auf meinen alten Beitrag zum Thema.
Umkehrfunktion
Das schwerste zum Schluss. Hier gehen wir davon aus, dass injektiv ist (wichtig!). Wir beschränken uns auch auf einstellige Funktionen. Warum? Na? Na? Genau: aufgrund der Cantorschen Tupelfunktion können wir das. Wenn diese Funktion also berechenbar ist, so ist es auch ihre Umkehrfunktion. Klingt logisch. Ist es auch.
Während für Totalität und Injektivität gefordert ist, können wir bei bei einer ggf. partiellen Funktion rauskommen. Das liegt daran, dass wir in der Bildmenge von evtl. Elemente haben, die wir mit unserer Funktion nicht "treffen". Diese landen aber für dennoch in der Definitionmenge, sind aber nicht definiert. Damit ist eben partiell.
Beispiel
mit der Umkehrfunktion . Setzen wir und , so haben wir:
Passt.
Damit haben wir die Abschlusseigenschaften für berechenbare Zahlenfunktionen durch.
Antwort zum Lernziel: Funktionen, die sich aus den Funktionen Substitution, primitive Rekursion, -Rekursion und der inversen Funktion zusammensetzen sind ebenfalls berechenbar.
Für die Substitution können die Funktionen auch partiell sein, für de primitive und -Rekursion sind wir jedoch auf totale Funktionen angewiesen, da wir sonst nicht durch die Schleifendurchläufe kommen. Während wir bei der primitiven Rekursion zwingend die Anzahl der Schleifendurchläufe kennen müssen, ist es uns bei der -Rekursion durch das "Nullsetzen" der Funktion nicht wichtig. Es bricht eben ab wenn die Nullstelle gefunden ist. Wie lange es dauert wissen wir nicht.
Ersteres ist das Äquivalent zur -Schleife ("tue etwas genau Mal"), während die -rekursion einer -Schleife ("tue etwas bis...") entspricht.
Für die inverse Funktion benötigen wir neben einer totalen Funktion jedoch auch die Eigenschaft der Injektivität für , da wir nur auf maximal ein Element aus der Bildmenge abbilden dürfen, da sonst die Umkehrabbildung auf zwei unterschiedliche Elemente abbilden würde.
Lernziel 3
Definition der WHILE-Programme, Erläuterung ihrer Semantik und Angabe des Zusammenhangs zu berechenbaren Funktionen
Letztes Lernziel in dieser Kurseinheit. In diesem Beitrag sind die Details bereits herausgearbeitet, ich kümmere mich daher nur um die Definition und Semantik aus dem Skript. Das Fazit kann man wortwörtlich eig. auch für die Antwort zum Lernziel übernehmen. Also kümmern wir uns um die Syntax und die Semantik.
und sind -Programme
Dabei addiert im -ten Registereine , subtrahiert eine im -ten Register.
IF THEN ELSE
Wir gehen davon aus, dass und selbst -Programme sind.
WHILE DO
Kennen wir auch schon. Solange das Register nicht ist, wird ausgeführt.
Zusätzlich dazu haben wir noch unser kleines Tau . Dadurch weisen wir unseren oben beschriebenen Kommandos tatsächliche Funktionen auf der Datenmenge zu, die wir bereits verbal beschrieben haben (sie ist die uns bekannte Datenmenge der Registermaschinen). Als Beispiel nehmen wir und :
Wir können einem kompletten -Programm mittels ebenfalls eine Ausgabe auf der Datenmenge beschaffen: . Und damit haben wir dann die komplette Registerausgabe unserer Maschine, die das Programm berechnet. Damit schaffen wir es, dass unser Programm auf der Eingabecodierung einer Registermaschine operieren kann und uns auch eine Ausgabecodierung der Registermaschine liefert (siehe vorheriger Beitrag).
Noch eine kleine Definition für die -Berechenbarkeit
Wir nennen eine Funktion -berechenbar genau dann wenn gilt:
Ähnliches Spiel wie im Beitrag zu KE1. Wir haben unterschiedliche Datenmengen für und für die Flussdiagramme der Registermaschinen. Mit und wandelt wir diese nur ineinander um.
Das führt uns direkt zum Zusammenhang zu den berechenbaren Funktionen.
Beispiel
Funktion (operiert auf )
Dazu haben wir ein -Programm , welches uns die Funktion berechnet. Es operiert aufÂ
R0=R1;
WHILE R2 NOT 0 DO
 R0+;
 R2-;
END;
Wir können auch ein Flussdiagramm einer Registermaschine angeben, dass uns die gleiche Funktion raushaut.
Während das Flussdiagramm ebenfalls auf operiert, haben wir bei der Registermaschine jedoch .
Damit gilt . Oder doch nicht? Spielen wir das doch einfach mal mit durch:
Okay, die Berechnung ist anscheinend in Ordnung. Aber die Ausgabe von z.B. ist sicher nicht gleich (siehe die Definition der Eingabe- und Ausgabecodierung von Registermaschinen im Lernziel 4 von Beitrag zu KE1).
Hier kommen unsere Funktionen und bei allen drei Berechnungsarten ins Spiel, die unsere Eingabe und unsere Ausgabe entsprechend umformen, so dass sie passen.
Definieren wir also z.B. für neu: , so haben wir
Damit würde wieder passen.
Das spannende also daran ist, dass es durchaus vorkommen kann, dass unser Flussdiagramm, unsere Registermaschine oder unser -Programm nicht alle auf einer Datenmenge operieren, sondern alle auf unterschiedlichen Mengen (warum auch immer). Um aber zu sagen, dass z.B. gilt, müssen wir sie evtl. umgestalten. Für brauchen wir das hingegen - wie wir oben gesehen haben - nicht.
Lange Rede, kurzer Sinn:
Zu jedem -Programm gibt es ein Flussdiagramm einer Registermaschine mit
Zu jedem Flussdiagramm einer Registermaschine gibt es ein -Programm mit mit einer -Schleife.
Damit gilt: die Funktion ist -berechenbar genau dann wenn sie Register-berechenbar ist.
Antwort zum Lernziel: die -Programme bestehen aus bedingten Anweisungen () und Schleifen (), sowie Anweisungen zum Register hoch- oder runterzählen und Hintereinanderausführungen von Anweisungen.
Der Zusammenhang zu berechenbaren Funktionen kommt daher, dass man zu jedem -Programm eine Registermaschine angeben kann, die die selbe Funktion berechnet und zu jeder Registermaschine ein -Programm existiert.
-Programme sind mächtiger als -Programme: man kann -Schleifen mit -Schleifen nachbilden, aber nicht anders herum, da man die Anzahl der Schleifendurchläufe im Vorfeld nicht bei jeder -Schleife kennt.
Die -Anwendungen sind das Äquivalent zur primitiven Rekursion, während die -Programme erst mit dem -Operator (durch "Nullsetzen" der Funktion) nachgebildet werden können.
Sie können zum Ende springen und ein Kommentar hinterlassen. Pingen ist im Augenblick nicht erlaubt.
September 15th, 2013 23:17
Hallo Anton,
Du schreibst ganz richtig, dass die Umkehrfunktion (aus der Mathematik) nur berechenbar ist, wenn die Funktion injektiv ist. Auch die Anwendung auf die (bijektive) Cantorsche Tupelfunktion ist soweit so gut ..
Nun kommt die Funktion f hoch -1 an diversen Stellen im Skript vor, aber selten im Zusammenhang mit injektiven Funktionen. Schnell in die Definitionen geschaut unter 1.3.1. Da ist von 'Umkehrkorrespondenz' die Rede und in KE 6 bei den Reduktionsbeweisen und Komplemente von totalen Funktionen ist das 'Urbild' gemeint. Aber nirgendwo in den Skripten taucht das Wort 'Umkehrfunktion' auf. Das Wort würde an den genannten Stellen auch keinen Sinn machen, wie mir auf den Studientagen während eines Vortrags von kompetenter Seite versichert wurde 🙂
Viele Grüße
Mike
September 15th, 2013 23:22
Hallo Mike,
ich kann noch nicht ganz folgen. Wenn Du mich mal anmailst, wäre das nett. Ich würde deine Einwände gerne einpflegen.
Gruß
Anton
September 16th, 2013 09:25
Hallo Anton,
wo finde ich Deine Emailadresse? Gerne kannst Du auch mir schreiben.
Gruß
Mike