{"id":2130,"date":"2013-06-25T18:16:37","date_gmt":"2013-06-25T16:16:37","guid":{"rendered":"http:\/\/fernuni.digreb.net\/?p=2130"},"modified":"2025-11-25T21:18:04","modified_gmt":"2025-11-25T20:18:04","slug":"tia-berechenbare-zahlenfunktionen-lernziele-ke2","status":"publish","type":"post","link":"https:\/\/fernuni.digreb.net\/?p=2130","title":{"rendered":"TIA: Berechenbare Zahlenfunktionen (Lernziele KE2)"},"content":{"rendered":"<p>In dieser Kurseinheit gibt es zwar nicht viele Lernziele, aber lasst euch nicht t\u00e4uschen: sie sind wichtig. Die Beitr\u00e4ge zu diesem Thema, die ich auch im passenden Kontext in diesem Beitrag verlinkt habe sind:<\/p>\n<ul style=\"list-style-type: square; padding-left: 30px;\">\n<li><a title=\"TI: Primitive Rekursion\/LOOP Berechenbarkeit (2. Update)\" href=\"https:\/\/fernuni.digreb.net\/?p=578\">Primitive Rekursion\/LOOP Berechenbarkeit<\/a><\/li>\n<li><a title=\"TI: Mue-Rekursion und WHILE\/LOOP-Berechenbarkeit (Update)\" href=\"https:\/\/fernuni.digreb.net\/?p=635\">Mue-Rekursion und WHILE\/LOOP-Berechenbarkeit<\/a><\/li>\n<li><a title=\"TI: Cantorsche Tupelfunktion\" href=\"https:\/\/fernuni.digreb.net\/?p=580\">Cantorsche Tupelfunktion<\/a><\/li>\n<\/ul>\n<p>Starten wir aber einfach wieder anhand der Lernziele und k\u00e4mpfen uns da durch.<\/p>\n<h2>Lernziel 1<\/h2>\n<p style=\"padding-left: 30px;\"><em>Angabe und Erl\u00e4uterung der Definition und der Eigenschaften der Cantorschen Tupelfunktion<br \/>\n<\/em><\/p>\n<p>Zum Gl\u00fcck habe ich bereits <a title=\"TI: Cantorsche Tupelfunktion (Update: Umkehrfunktion)\" href=\"https:\/\/fernuni.digreb.net\/?p=580\">hier<\/a> einen langen Beitrag zum Thema erstellt und wiederhole mich deswegen nicht, sondern springe sofort zur Antwort.<\/p>\n<p><strong>Antwort zum Lernziel<\/strong>: mit der Cantorschen Tupelfunktion ist es uns m\u00f6glich einem \\(n\\)-Tupel mit Elementen aus \\(\\mathbb{N}\\) eine einzige, eindeutige Zahl aus \\(\\mathbb{N}\\) zuzuordnen (Reduktion). Durch diese bijektive Abbildung von \\(\\mathbb{N}^n\\rightarrow\\mathbb{N}\\)\u00a0k\u00f6nnen wir uns auf die Berechnung von einstelligen Funktionen beschr\u00e4nken.<\/p>\n<p>Einen weiteren prominenten Platz hat die Cantorsche Tupelfunktion bei dem Vergleich von Mengen: zwei Mengen sind gleichm\u00e4chtig wenn man zwischen ihnen eine Bijektion herstellen kann.<\/p>\n<h2>Lernziel 2<\/h2>\n<p style=\"padding-left: 30px;\"><em>Erl\u00e4uterung der Abschlusseigenschaften berechenbarer Zahlenfunktionen<\/em><\/p>\n<p>Ich bin mir hier gerade etwas unschl\u00fcssig: im Skript ist nicht mehr viel zu dem Thema drin, als der Satz zur Substitution, primitive Rekursion, \\(\\tilde{\\mu}\\) und der Umkehrfunktion. Vielleicht dann am besten an ein paar Beispielen?<\/p>\n<p><strong>Substitution<\/strong><\/p>\n<p style=\"padding-left: 30px;\">Zun\u00e4chst haben wir zwei ggf. partielle Funktionen \\(g:\\subseteq\\mathbb{N}^m\\rightarrow\\mathbb{N}\\) und ggf. partielle Funktionen \\(h_1\\) bis \\(h_m\\) (d.h. so viele Funktionen wie der Definitionsbereich von \\(g\\) Parameter hat), mit \\(h_1,&#8230;,h_m\\subseteq\\mathbb{N}^k\\rightarrow\\mathbb{N}\\). Alle Funktionen sind berechenbar. Dann ist auch die Substitution \\(Sub(g,h_1,&#8230;,h_m)\\) berechenbar.<\/p>\n<p style=\"padding-left: 30px;\">\\(Sub(g,h_1,&#8230;,h_m)\\subseteq\\mathbb{N}^k\\rightarrow\\mathbb{N}\\) ist definiert durch\u00a0\\(Sub(g,h_1,&#8230;,h_m)(x):=g(h_1(x),&#8230;,h_m(x))\\)<\/p>\n<p style=\"padding-left: 30px;\">Viel Zeug, oder? Keine Sorge, ist ganz easy.<\/p>\n<p style=\"padding-left: 30px;\"><strong>Beispiel<\/strong><\/p>\n<p style=\"padding-left: 60px;\">\\(g(x,y)=x+y\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(h_1(x,y,z)=x+y\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(h_2(x,y,z)=x+z\\)<\/p>\n<p style=\"padding-left: 60px;\">Die Substitution sieht nun so aus:<\/p>\n<p style=\"padding-left: 60px;\">\\(Sub(g,h_1,h_2)(x,y,z)=g(h_1(x,y,z),h_2(x,y,z))\\).<\/p>\n<p style=\"padding-left: 60px;\">Belegen wir unsere Funktion mit Werten: \\(x=2,y=3,z=4\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(\\begin{array}\u00a0Sub(g,h_1,h_2)(2,3,4)&amp;=g(h_1(2,3,4),h_2(2,3,4))\\\\&amp;=g(5,h_2(2,3,4))\\\\&amp;=g(5,6)\\\\&amp;=11\\end{array}\\)<\/p>\n<p style=\"padding-left: 30px;\">War doch trivial, oder (das wollte ich immer schon mal sagen!)?<\/p>\n<p><strong>Primitive Rekursion<\/strong><\/p>\n<p style=\"padding-left: 30px;\">Das ist ein klein wenig ekeliger als die Substitution, aber wir bekommen das gleich noch klein.<\/p>\n<p style=\"padding-left: 30px;\">Auch hier haben wir zwei Funktionen\u00a0\u00a0\\(g:\\mathbb{N}^k\\rightarrow\\mathbb{N}\\) und\u00a0\u00a0\\(h:\\mathbb{N}^{k+2}\\rightarrow\\mathbb{N}\\), die berechenbar sind (Achtung: sie m\u00fcssen auch total sein, denn sonst k\u00f6nnen wir nicht \u00fcber diese &#8222;rekursivieren&#8220;). Wenn das der Fall ist, dann ist auch \\(Prk(g,h)\\) berechenbar.<\/p>\n<p style=\"padding-left: 30px;\">\\(Prk(g,h)\\) ist definiert als:<\/p>\n<p style=\"padding-left: 60px;\">\\(f(x,0) = g(x)\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(f(x,y+1)=h(x,y,f(x,y))\\)<\/p>\n<p style=\"padding-left: 30px;\">F\u00fcr alle \\(x\\in\\mathbb{N}^k\\) und \\(y\\in\\mathbb{N}\\). Man sieht bereits jetzt, dass wir rekursiv arbeiten. Noch deutlicher wird es an einem Beispiel.<\/p>\n<p style=\"padding-left: 30px;\"><strong>Beispiel<\/strong><\/p>\n<p style=\"padding-left: 60px;\">\\(g(x,z)=x+z\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(h(a,b,x,z)=a+b+x+z\\)<\/p>\n<p style=\"padding-left: 60px;\">Nehmen wir einfach mal \\(y=3\\) (\\(3\\)-malige Rekursion) und \\(x=2,z=3,a=4,b=5\\).<\/p>\n<p style=\"padding-left: 60px;\">\\(\\begin{array}\u00a0Prk(g,h)(2,3)&amp;=f(2,3,3)\\\\&amp;=h(2,3,2,f(2,3,2))\\\\&amp;=h(2,3,2,(h(2,3,1,f(2,3,1))))\\\\&amp;=h(2,3,2,(h(2,3,1,(h(2,3,0,f(2,3,0))))))\\\\&amp;=h(2,3,2,(h(2,3,1,(h(2,3,0,g(2,3))))))\\\\&amp;=h(2,3,2,(h(2,3,1,(h(2,3,0,5)))))\\\\&amp;=h(2,3,2,(h(2,3,1,10)))\\\\&amp;=h(2,3,2,16)\\\\&amp;=23\\end{array}\\)<\/p>\n<p style=\"padding-left: 60px;\">Versuchen wir das mit \\(y=2\\):<\/p>\n<p style=\"padding-left: 60px;\">\\(\\begin{array}\u00a0Prk(g,h)(2,2)&amp;=f(2,3,2)\\\\&amp;=h(2,3,1,f(2,3,1))\\\\&amp;=h(2,3,1,(h(2,3,0,f(2,3,0))))\\\\&amp;=h(2,3,1,(h(2,3,0,5)))\\\\&amp;=h(2,3,1,10)\\\\&amp;=16\\end{array}\\)<\/p>\n<p style=\"padding-left: 30px;\">Viel Text, aber sicherlich gut nachzuvollziehen. Wir loopen und also durch die Funktionen mit einer <strong>festen<\/strong> Anzahl an Schleifen! In <a href=\"https:\/\/fernuni.digreb.net\/?p=578\">diesem Beitrag<\/a> habe ich die primitive Rekursion etwas detaillierter betrachtet.<\/p>\n<p style=\"padding-left: 30px;\">Und was ist wenn wir keine feste Anzahl an Schleifen haben k\u00f6nnen? Dann hilft uns unser \\(\\mu\\)-Operator.<\/p>\n\\(\\tilde{\\mu}\\)\n<p style=\"padding-left: 30px;\">Ist \\(h\\) mit\u00a0\\(h:\\subseteq\\mathbb{N}^{k+1}\\rightarrow\\mathbb{N}\\) berechenbar, so ist es auch\u00a0\\(\\tilde{\\mu}(h)\\). Wie ihr seht, auch hier ist \\(h\\) total. Was ist\u00a0\\(\\tilde{\\mu}\\)?! \\(\\tilde{\\mu}:\\subseteq\\mathbb{N}^{k}\\rightarrow\\mathbb{N}\\).\u00a0Es ist definiert durch:<\/p>\n<p style=\"padding-left: 60px;\">\\(\\tilde{\\mu}(h)(x)=\\mu y[h(x,y)=0]\\)<\/p>\n<p style=\"padding-left: 30px;\">What the&#8230; Entspannung, Entspannung! Das ist nichts weiter als unsere \\(\\mu\\)-Rekursion. Ich suche gerade im Skript ob wir das bereits irgendwo auf den vorherigen Seiten hatten&#8230; witzig. Hatten wir nicht. Das ist wirklich die erste Erw\u00e4hnung. Und dann gleich ins kalte Wasser. Nicht schlimm, denn unser\u00a0\\(\\tilde{\\mu}\\) ist nichts weiter, als der Operator, der es uns erlaubt auch Dinge zu berechnen, wo wir die genaue Anzahl an Schleifendurchl\u00e4ufen noch nicht wissen.<\/p>\n<p style=\"padding-left: 30px;\">Und zwar indem wir unserer zu berechnende Funktion so weit umformen, dass wir beim Ende der Berechnung auf eine Nullstelle sto\u00dfen.\u00a0Ich werde das nicht gro\u00df ausf\u00fchren, sondern verweise ganz frech auf meinen <a href=\"https:\/\/fernuni.digreb.net\/?p=635\">alten Beitrag zum Thema<\/a>.<\/p>\n<p><strong>Umkehrfunktion<\/strong> \\(f^{-1}\\)<\/p>\n<p style=\"padding-left: 30px;\">Das schwerste zum Schluss. Hier gehen wir davon aus, dass \\(f\\) <a href=\"http:\/\/de.wikipedia.org\/wiki\/Injektivit%C3%A4t\">injektiv<\/a> ist (wichtig!). Wir beschr\u00e4nken uns auch auf einstellige Funktionen. Warum? Na? Na? Genau: aufgrund der <a title=\"TI: Cantorsche Tupelfunktion (Update: Umkehrfunktion)\" href=\"https:\/\/fernuni.digreb.net\/?p=580\">Cantorschen Tupelfunktion<\/a> k\u00f6nnen wir das. Wenn diese Funktion also berechenbar ist, so ist es auch ihre Umkehrfunktion. Klingt logisch. Ist es auch.<\/p>\n<p style=\"padding-left: 30px;\">W\u00e4hrend f\u00fcr \\(f\\) Totalit\u00e4t und Injektivit\u00e4t gefordert ist, k\u00f6nnen wir bei \\(f^{-1}\\) bei einer ggf. partiellen Funktion rauskommen. Das liegt daran, dass wir in der Bildmenge von \\(f\\) evtl. Elemente haben, die wir mit unserer Funktion nicht &#8222;treffen&#8220;. Diese landen aber f\u00fcr \\(f^{-1}\\) dennoch in der Definitionmenge, sind aber nicht definiert. Damit ist \\(f^{-1}\\) eben partiell.<\/p>\n<p style=\"padding-left: 30px;\"><strong>Beispiel<\/strong><\/p>\n<p style=\"padding-left: 60px;\">\\(f(x) = x+5\\) mit der Umkehrfunktion \\(f^{-1}(\\tilde{x})=\\tilde{x}-5\\). Setzen wir \\(x=10\\) und \\(\\tilde{x}=f(x)\\), so\u00a0haben wir:<\/p>\n<p style=\"padding-left: 90px;\">\\(f(10)=15\\)<\/p>\n<p style=\"padding-left: 90px;\">\\(f^{-1}(15)=10\\)<\/p>\n<p style=\"padding-left: 60px;\">Passt.<\/p>\n<p style=\"padding-left: 30px;\">Damit haben wir die Abschlusseigenschaften f\u00fcr berechenbare Zahlenfunktionen durch.<\/p>\n<p><strong>Antwort zum Lernziel<\/strong>: Funktionen, die sich aus den Funktionen Substitution, primitive Rekursion, \\(\\mu\\)-Rekursion und der inversen Funktion zusammensetzen sind ebenfalls berechenbar.<\/p>\n<p>F\u00fcr die Substitution k\u00f6nnen die Funktionen auch partiell sein, f\u00fcr de primitive und \\(\\mu\\)-Rekursion sind wir jedoch auf totale Funktionen angewiesen, da wir sonst nicht durch die Schleifendurchl\u00e4ufe kommen. W\u00e4hrend wir bei der primitiven Rekursion zwingend die Anzahl der Schleifendurchl\u00e4ufe kennen m\u00fcssen, ist es uns bei der \\(\\mu\\)-Rekursion durch das &#8222;Nullsetzen&#8220; der Funktion nicht wichtig. Es bricht eben ab wenn die Nullstelle gefunden ist. Wie lange es dauert wissen wir nicht.<\/p>\n<p>Ersteres ist das \u00c4quivalent zur \\(LOOP\\)-Schleife (&#8222;tue etwas genau \\(x\\) Mal&#8220;), w\u00e4hrend die \\(\\mu\\)-rekursion einer \\(WHILE\\)-Schleife (&#8222;tue etwas bis&#8230;&#8220;) entspricht.<\/p>\n<p>F\u00fcr die inverse Funktion ben\u00f6tigen wir neben einer totalen Funktion \\(f\\) jedoch auch die Eigenschaft der Injektivit\u00e4t f\u00fcr \\(f\\), da wir nur auf maximal ein Element aus der Bildmenge abbilden d\u00fcrfen, da sonst die Umkehrabbildung auf zwei unterschiedliche Elemente abbilden w\u00fcrde.<\/p>\n<h2>Lernziel 3<\/h2>\n<p style=\"padding-left: 30px;\"><em>Definition der WHILE-Programme, Erl\u00e4uterung ihrer Semantik und Angabe des Zusammenhangs zu berechenbaren Funktionen<br \/>\n<\/em><\/p>\n<p>Letztes Lernziel in dieser Kurseinheit. In <a href=\"https:\/\/fernuni.digreb.net\/?p=635\">diesem Beitrag<\/a> sind die Details bereits herausgearbeitet, ich k\u00fcmmere mich daher nur um die Definition und Semantik aus dem Skript. Das Fazit kann man wortw\u00f6rtlich eig. auch f\u00fcr die Antwort zum Lernziel \u00fcbernehmen. Also k\u00fcmmern wir uns um die Syntax und die Semantik.<\/p>\n<blockquote><p>\\(R_i+\\) und\u00a0\\(R_i-\\) sind \\(WHILE\\)-Programme<\/p>\n<p>Dabei addiert\u00a0\\(R_i+\\) im \\(i\\)-ten Registereine \\(1\\),\u00a0\\(R_i-\\) subtrahiert eine \\(1\\) im\u00a0\\(i\\)-ten Register.<\/p>\n<p>IF \\(R_i=0\\) THEN \\(P\\) ELSE \\(Q\\)<\/p>\n<p>Wir gehen davon aus, dass \\(P\\) und \\(Q\\) selbst \\(WHILE\\)-Programme sind.<\/p>\n<p>WHILE \\(R_i\\neq 0\\) DO \\(P\\)<\/p>\n<p>Kennen wir auch schon. Solange das Register \\(R_i\\) nicht \\(0\\) ist, wird \\(P\\) ausgef\u00fchrt.<\/p><\/blockquote>\n<p>Zus\u00e4tzlich dazu haben wir noch unser kleines Tau \\(\\tau\\). Dadurch weisen wir unseren oben beschriebenen Kommandos tats\u00e4chliche Funktionen auf der Datenmenge \\(D=\\mathbb{N}^{\\mathbb{N}}\\) zu, die wir bereits verbal beschrieben haben (sie ist die uns bekannte Datenmenge der Registermaschinen). Als Beispiel nehmen wir \\(R_i+\\) und \\(R_i-\\):<\/p>\n<p style=\"padding-left: 30px;\">\\(\\tau(R_i+)(a_0,a_1,&#8230;):=(a_0,a_1,&#8230;,a_i+1,&#8230;,)\\)<\/p>\n<p style=\"padding-left: 30px;\">\\(\\tau(R_i-)(a_0,a_1,&#8230;):=(a_0,a_1,&#8230;,a_i-1,&#8230;,)\\)<\/p>\n<p>Wir k\u00f6nnen einem kompletten \\(WHILE\\)-Programm mittels \\(\\tau\\) ebenfalls eine Ausgabe auf der Datenmenge \\(D\\) beschaffen: \\(\\tau(P)\\). Und damit haben wir dann die komplette Registerausgabe unserer Maschine, die das Programm \\(P\\) berechnet. Damit schaffen wir es, dass unser Programm auf der Eingabecodierung einer Registermaschine operieren kann und uns auch eine Ausgabecodierung der Registermaschine liefert (siehe <a title=\"TIA: Flussdiagramme, Maschinen und berechenbare Zahlenfunktionen (Lernziele KE1)\" href=\"https:\/\/fernuni.digreb.net\/?p=2093\">vorheriger Beitrag<\/a>).<\/p>\n<p>Noch eine kleine Definition f\u00fcr die \\(WHILE\\)-Berechenbarkeit<\/p>\n<blockquote><p>Wir nennen eine Funktion \\(f:\\mathbb{N}^k\\rightarrow\\mathbb{N}\\) \\(WHILE\\)-berechenbar genau dann wenn gilt: \\(f=AC(\\tau(P)(EC))\\)<\/p><\/blockquote>\n<p>\u00c4hnliches Spiel wie im Beitrag zu KE1. Wir haben unterschiedliche Datenmengen f\u00fcr \\(\\tau\\) und f\u00fcr die Flussdiagramme der Registermaschinen. Mit \\(EC\\) und \\(AC\\) wandelt wir diese nur ineinander um.<\/p>\n<p>Das f\u00fchrt uns direkt zum\u00a0Zusammenhang zu den berechenbaren Funktionen.<\/p>\n<p><strong>Beispiel<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong><\/strong>Funktion\u00a0\\(f(x,y)=x+y\\) (operiert auf \\(\\mathbb{N}^2\\rightarrow\\mathbb{N}\\))<\/p>\n<p style=\"padding-left: 30px;\">Dazu haben wir ein \\(WHILE\\)-Programm \\(P\\), welches uns die Funktion \\(f\\) berechnet.\u00a0Es operiert auf\u00a0\\(\\mathbb{N}^3\\rightarrow\\mathbb{N}^3\\)<\/p>\n<pre style=\"padding-left: 60px;\">R0=R1;<\/pre>\n<pre style=\"padding-left: 60px;\">WHILE R2 NOT 0 DO<\/pre>\n<pre style=\"padding-left: 60px;\">\u00a0 R0+;<\/pre>\n<pre style=\"padding-left: 60px;\">\u00a0 R2-;<\/pre>\n<pre style=\"padding-left: 60px;\">END;<\/pre>\n<p style=\"padding-left: 30px;\">Wir k\u00f6nnen auch ein Flussdiagramm \\(F\\) einer Registermaschine \\(M\\) angeben, dass uns die gleiche Funktion raushaut.<\/p>\n<p style=\"padding-left: 30px;\">W\u00e4hrend das Flussdiagramm ebenfalls auf\u00a0\\(\\mathbb{N}^3\\rightarrow\\mathbb{N}^3\\) operiert, haben wir bei der Registermaschine jedoch\u00a0\\(\\mathbb{N}^3\\rightarrow\\mathbb{N}\\).<\/p>\n<p style=\"padding-left: 30px; text-align: center;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/06\/while-machine.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-2163\" style=\"margin-left: 60px; margin-right: 100px;\" alt=\"while-machine\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/06\/while-machine.png\" width=\"366\" height=\"149\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/06\/while-machine.png 610w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/06\/while-machine-300x121.png 300w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\">Damit gilt \\(f=\\tau(P)=f_M=f_F\\). Oder doch nicht? Spielen wir das doch einfach mal mit \\(x=2,y=3\\) durch:<\/p>\n<p style=\"padding-left: 60px;\">\\(f(2,3)=5\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(\\tau(P)(0,2,3)=(5,2,0)\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(f_M(0,2,3)=5\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(f_F(0,2,3)=(5,2,0)\\)<\/p>\n<p style=\"padding-left: 30px;\">Okay, die Berechnung ist anscheinend in Ordnung. Aber die Ausgabe von z.B. \\(\\tau(P)(0,2,3)=(5,2,0)\\) ist sicher nicht gleich\u00a0\\(f_M(0,2,3)=5\\) (siehe die Definition der Eingabe- und Ausgabecodierung von Registermaschinen im Lernziel 4 von <a href=\"https:\/\/fernuni.digreb.net\/?p=2093\">Beitrag zu KE1<\/a>).<\/p>\n<p style=\"padding-left: 30px;\">Hier kommen unsere Funktionen \\(EC\\) und \\(AC\\) bei allen drei Berechnungsarten ins Spiel, die unsere Eingabe und unsere Ausgabe entsprechend umformen, so dass sie passen.<\/p>\n<p style=\"padding-left: 30px;\">Definieren wir also z.B. \\(AC\\) f\u00fcr \\(\\tau(P)\\) neu: \\(AC(x,y,z)=x\\), so haben wir<\/p>\n<p style=\"padding-left: 30px;\">\\(\\begin{array}{}AC(\\tau(P)(0,2,3))&amp;=AC(5,2,0)\\\\&amp;=5\\end{array}\\)<\/p>\n<p style=\"padding-left: 30px;\">Damit w\u00fcrde \\(f_M=AC(\\tau(P))\\) wieder passen.<\/p>\n<p>Das spannende also daran ist, dass es durchaus vorkommen kann, dass unser Flussdiagramm, unsere Registermaschine oder unser \\(WHILE\\)-Programm nicht alle auf einer Datenmenge operieren, sondern alle auf unterschiedlichen Mengen (warum auch immer). Um aber zu sagen, dass z.B. \\(\\tau(P)=f_M\\) gilt, m\u00fcssen wir sie evtl. umgestalten. F\u00fcr\u00a0\\(\\tau(P)=f_F\\) brauchen wir das hingegen &#8211; wie wir oben gesehen haben &#8211; nicht.<\/p>\n<p>Lange Rede, kurzer Sinn:<\/p>\n<blockquote><p>Zu jedem \\(WHILE\\)-Programm gibt es ein Flussdiagramm einer Registermaschine mit \\(\\tau(P)=f_F\\)<\/p>\n<p>Zu jedem Flussdiagramm einer Registermaschine gibt es ein \\(WHILE\\)-Programm\u00a0mit \\(f_F=\\tau(P)\\) mit einer \\(WHILE\\)-Schleife.<\/p>\n<p>Damit gilt: die Funktion \\(f\\) ist \\(WHILE\\)-berechenbar genau dann wenn sie Register-berechenbar ist.<\/p><\/blockquote>\n<p><strong>Antwort zum Lernziel<\/strong>: die \\(WHILE\\)-Programme bestehen aus bedingten Anweisungen (\\(IF\\)) und Schleifen (\\(WHILE\\)),\u00a0sowie Anweisungen zum Register hoch- oder runterz\u00e4hlen und Hintereinanderausf\u00fchrungen von Anweisungen.<\/p>\n<p>Der Zusammenhang zu berechenbaren Funktionen kommt daher, dass man zu jedem \\(WHILE\\)-Programm eine Registermaschine angeben kann, die die selbe Funktion berechnet und zu jeder Registermaschine ein \\(WHILE\\)-Programm existiert.<\/p>\n<p>\\(WHILE\\)-Programme sind m\u00e4chtiger als \\(LOOP\\)-Programme: man kann \\(LOOP\\)-Schleifen mit\u00a0\\(WHILE\\)-Schleifen nachbilden, aber nicht anders herum, da man die Anzahl der Schleifendurchl\u00e4ufe im Vorfeld nicht bei jeder \\(WHILE\\)-Schleife kennt.<\/p>\n<p>Die \\(LOOP\\)-Anwendungen sind das \u00c4quivalent zur primitiven Rekursion, w\u00e4hrend die \\(WHILE\\)-Programme erst mit dem \\(\\mu\\)-Operator (durch &#8222;Nullsetzen&#8220; der Funktion) nachgebildet werden k\u00f6nnen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In dieser Kurseinheit gibt es zwar nicht viele Lernziele, aber lasst euch nicht t\u00e4uschen: sie sind wichtig. Die Beitr\u00e4ge 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\u00e4mpfen uns da durch. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/fernuni.digreb.net\/?p=2130\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eTIA: Berechenbare Zahlenfunktionen (Lernziele KE2)\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2130","post","type-post","status-publish","format-standard","hentry","category-theoretische-informatik"],"_links":{"self":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/2130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2130"}],"version-history":[{"count":37,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/2130\/revisions"}],"predecessor-version":[{"id":3491,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/2130\/revisions\/3491"}],"wp:attachment":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}