{"id":754,"date":"2012-11-04T17:31:30","date_gmt":"2012-11-04T15:31:30","guid":{"rendered":"http:\/\/fernuni.digreb.net\/?p=754"},"modified":"2025-11-25T22:56:36","modified_gmt":"2025-11-25T21:56:36","slug":"ti-turing-maschinen-und-wortfunktionen","status":"publish","type":"post","link":"https:\/\/fernuni.digreb.net\/?p=754","title":{"rendered":"TIA: Turing-Maschinen, Hilfssymbole (Lernziele KE3, Update 3)"},"content":{"rendered":"<p><strong>Update 3<\/strong>: Nach Olivers Einwand (Danke hier nochmal!) habe ich den Abschnitt \u00fcber Hilfssymbole erneut \u00fcberarbeitet.<\/p>\n<p><strong>Update 2<\/strong>: Wow, beim Durchgehen des Eintrags sind mir massive Schnitzer bei den Hilfssymbolen aufgefallen. Hoffentlich sind die jetzt raus. Sorry!<\/p>\n<p><strong>Update<\/strong>: mit dem Eintrag sollten nun alle Lernziele aus KE3 erschlagen worden sein. Ist zwar etwas lang geworden, aber vielleicht hilft es dem ein oder anderen beim Verst\u00e4ndnis. Die neuen Erkenntnisse z.B. bzgl. der Hilfssymbole entstammen dem Mentoriat in Hagen mit Herr Dr. Halbach. Ich kann nur ausdr\u00fccklich raten diese Mentoriate in Anspruch zu nehmen und auch immer Fragen zu stellen wenn einem etwas nicht klar sein sollte.<\/p>\n<p>Habe bei vielen Mentoriaten gesehen, dass die Leute auf die fragenden Blicke des Mentors 2 Stunden lang immer nur flei\u00dfig nicken. Nach dem Mentoriat schaut man trotzdem in die gleichen, ratlosen Gesichter ein st\u00fcckweit mehr resignierter Komillitonen. Also fragen bis es &#8222;Klick!&#8220; macht. Auch sind viele Mitstudenten gerne bereit es einem auch mit anderen Worten zu erl\u00e4utern. Nur keine Scheu, sitzen doch alle im selben Boot \ud83d\ude09<\/p>\n<h2>Einleitung<\/h2>\n<p>Aber fangen wir an: w\u00e4hrend in der Literatur zun\u00e4chst Einband-Maschinen eingef\u00fchrt werden um sie dann durch Mehrbandmaschinen zu ersetzen wird das in dem Kurs an der FU hier genau anders rum gemacht (wie vieles andere im Skript auch&#8230;). Auch werden die Turing-Maschinen oft als 7-Tupel definiert, im Skript haben wir ein 5-Tupel. Solche Dinge machen es &#8211; meiner Meinung nach &#8211; dem Leser unn\u00f6tig schwer sich den sehr wichtigen Stoff zu erarbeiten.<\/p>\n<p>Anstatt dass man vielleicht in Zusatzliteratur einen Sachverhalt in anderen Worten verst\u00e4ndlicher nachlesen kann, muss man die Definitionen erst in die Definitionen des Skripts \u00fcberf\u00fchren. Daf\u00fcr muss man aber zuerst verstehen, was im Skript denn steht. Hierf\u00fcr hat man sich aber speziell die Zusatzliteratur besorgt. Da bei\u00dft sich die Katze in den Schwanz.<\/p>\n<p>Ich m\u00f6chte hier versuchen bei der Definition des Skripts zu bleiben und die Parallelen zur &#8222;\u00fcblichen&#8220; Definition zu ziehen damit man auch mit Fremdliteratur arbeiten kann.\u00a0Ebenso w\u00fcrde ich auch lieber mit Einbandmaschinen starten, statt wie im Skript sofort Mehrbandmaschinen einzuf\u00fchren um diese dann durch Einbandmaschinen zu ersetzen&#8230;<\/p>\n<p><strong>Darstellungsweise:<\/strong> Zun\u00e4chst jedoch zur Darstellungsweise. Am h\u00e4ufigsten wird die un\u00e4re Darstellungsweise f\u00fcr Turingmaschinen verwendet, d.h. eine 5 auf dem Eingabe- oder Ausgabeband besteht aus f\u00fcnf Einsen \\((11111)\\). Die bin\u00e4re Darstellung ist zwar etwas h\u00fcbscher und in einigen Bereichen durchaus sinnvoll, aber die Formulierung von Algorithmen ist mit der un\u00e4ren Darstellungsweise meist einfacher.<\/p>\n<h2>Einbandmaschinen<\/h2>\n<p>Im Gegensatz zu Mehrbandmaschinen besitzt diese nur ein einziges Band, welches als Ein- und Ausgabe- sowie Arbeitsband dient. Die Eingabeworte befinden sich hier zu Beginn rechts von Lesekopf und sind nur Trennzeichen getrennt. Links befindet sich die Ausgabe. W\u00e4hrend der Berechnung wird die Eingabe dann durch die Ausgabe ersetzt, d.h. gel\u00f6scht. Am Ende steht das Ergebnis links vom Kopf.<\/p>\n<blockquote><p><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/einband.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-792 alignnone\" style=\"margin-right: 200px;\" title=\"einband\" alt=\"\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/einband-300x31.png\" width=\"300\" height=\"31\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/einband-300x31.png 300w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/einband.png 630w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p><\/blockquote>\n<p>Im Skript sind die Einbandmaschinen definiert als:<\/p>\n<p style=\"padding-left: 30px;\">\\(M=(F,(\\Sigma^*)^k,\\Sigma^*,EC^{(k)},AC)\\)<\/p>\n<p>Wir erkl\u00e4ren den Spa\u00df hier einfach mal:<\/p>\n<ul style=\"list-style-type: square; padding-left: 30px;\">\n<li>\\(F\\): das Flussdiagramm der Maschine, in der Literatur werden hier oft Zust\u00e4nde und \u00dcberf\u00fchrungsfunktionen verwendet<\/li>\n<li>\\((\\Sigma^*)^k\\): die Menge aller W\u00f6rter mit k Elementen \u00fcber \\(\\Sigma\\). k ist hier wieder die Stelligkeit. Statt einem Zeichen, k\u00f6nnen wir k auch Zeichen lesen.\u00a0Ist z.B. das Alphabet \\(\\Sigma^* = \\{b,a,c\\}\\), so w\u00e4re \\((\\sum^*)^2 = \\{ba,bb,bc,ab,aa,ac,ca,cb,cc\\}\\) und \\(&#8222;aa&#8220; \\in (\\Sigma^*)^2\\).<\/li>\n<li>\\(\\Sigma^*\\): eben das gerade vorgestellte \\(\\sum^*\\), d.h. das Alphabet.<\/li>\n<li>\\(EC^{(k)}\\): die ggf. k-stellige Eingabecodierung auf dem Band, d.h. die Worte, die durch ein Trennzeichen getrennt rechts vom Lesekopf stehen. Dieses Trennzeichen wird in der Literatur oft als ein Teil im Tupel angegeben. In <a title=\"Turing Maschine: Wikipedia\" href=\"http:\/\/de.wikipedia.org\/wiki\/Turingmaschine\">Wikipedia<\/a> wird z.B. ein Quadrat als Trennzeichen verwendet. Im Skript ist es ein einfaches \\(B\\) f\u00fcr Blank. Sie sieht dann z.B. so aus: \\(EC^{(3)}(ab,ac,aa) = (\\varepsilon,B,abBacBaa)\\)<\/li>\n<li>\\(AC\\): die Ausgabecodierung am Ende einer Berechnung, welches links vom Lesekopf ist und nur Symbole aus \\(\\Sigma\\) hat. D.h. man lie\u00df meist einfach zur\u00fcck bis zum ersten Trennzeichen.<\/li>\n<\/ul>\n<p>Zus\u00e4tzlich dazu werden die m\u00f6glichen Operationen definiert:<\/p>\n<ul style=\"list-style-type: square; padding-left: 30px;\">\n<li>gehe ein Feld nach links<\/li>\n<li>gehe ein Feld nach rechts<\/li>\n<li>schreibe a direkt unter den Lesekopf<\/li>\n<li>pr\u00fcfe ob a unter dem Lesekopf steht<\/li>\n<\/ul>\n<p>Das \\(\\Gamma\\) wird im Skript als Arbeitsalphabet bezeichnet. D.h. es ist \\(\\Gamma := \\Sigma \\cup \\{B\\}\\), also alle Symbole des Alphabets \\(\\Sigma\\) und das Trennzeichen \\(B\\). Diese werden dann auf dem Band verwendet. Zus\u00e4tzlich dazu werden in der Literatur und in der Wikipedia Zust\u00e4nde (Anfangs- und Endzustand) und Marken, sowie eine \u00dcberf\u00fchrungsfunktion definiert.\u00a0 In unserer Definition ist die \u00dcberf\u00fchrungsfunktion das Flussdiagramm, wo auch unsere Zust\u00e4nde (Marken) drin sind. Einfach merken: \\(\\Sigma\\) = komplettes Alphabet ohne Trennzeichen, \\(\\Gamma\\) = Bandalphabet mit Trennzeichen.<\/p>\n<p>Mit \\(\\beta\\) wird im Skript die Funktion bezeichnet, die uns ein Zeichen auf dem Band ausgibt: \\(\\beta(0)\\) ist das Zeichen unter dem Lesekopf, \\(\\beta(m)\\) das Zeichen auf dem m-ten Feld rechts davon, \\(\\beta(-m)\\), auf dem Feld links davon sein. Im folgenden Bild (p ist der Lesekopf) ist z.B. \\(\\beta(0)=t\\), \\(\\beta(-2)=f\\) und \\(\\beta(1)=b\\) auf einem Band.<br \/>\n<img loading=\"lazy\" decoding=\"async\" style=\"margin-left: 50px; margin-right: 150px;\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUIAAACWCAIAAAAkFxZGAAAHGElEQVR4nO2dQXLiQBAEidjwwQdH8BSd\/SDew2v4jB+jPdgGJEaC1vR4qluZp41lLdcWnYyEJDiMABCcQ+8AAFALGgOEB42TMwzDQZJhGHp3kwc0Ts7hIPoUywaLCFUmR9YW2WARocrkyNoiGywiVJkcWVtkg0WEKpMja4tssIhQZXJkbZENFhGqTI6sLbLBIkKVyZG1RTZYRKgyORtt+Tp\/fl+lcbqM4ziOl9P9pRs\/f9kjGJSgyuQ4aHz984TP81ePYFCCKpNTrfG5KHG9yWjsCFUmp1bjx93o+\/3rir1rNHaEKpPjoPHjont7dPuCjMaOUGVyqjUui3pdkjd7jMaOUGVyajVe0vTq8db9ajR2hCqT43TCyf4PGgWDElSZnOYab92rRmNHqDI5rMZ7gCqTw7HxHqDK5FS\/U13WtNpiNPaEKpPjcN740dRnkjcMBiWoMjk+V3Hd71pzFZceVJmc6mPjz8VLqutudEJjR6gyOQ7vVE9vUnRxeHswKEGVyfE54TTdx\/a43RiNPaHK5Pho3AA0doQqk4PGe4Aqk4PGe4Aqk4PGe4Aqk4PGe4Aqk4PGe4AqkyNri2ywiFBlcmRtkQ0WEapMjqwtssEiQpXJkbVFNlhEqDI5srbIBosIVSZH1hbZYBGhyuTI2iIbLCJUmRxZW2SDRYQqkyNri2ywiFBlcmRtkQ0WEapMjqwtssEiQpXJkbVFNlhEqDI5srbIBosIVSZH1hbZYBGhyuTI2iIbLCJUmRxZW2SDRYQqkyNri2ywiFBlcmRtkQ0WEapMjqwtssEiUq5yGIbS93305+Pjo3eEMrLB3t7eekcoIxvseDz2jlBmGAabxgfVV0qCWSGYlYjB0NgHglkhmBU0bg7BrBDMCho3h2BWCGYFjZtDMCsEs4LGzSGYFYJZQePmEMwKwaygcXMIZoVgVtC4OQSzQjAraNwcglkhmBU0bg7BrBDMCho3h2BWCGYFjZtDMCsEs4LGZb7On5NbSD7PX52DXROdLh6bG50bu5y3NzRnYzD\/huZEHP7dajxXuHIy0mt8OVW+0M1BYyto\/MD3VE6pmdHkGv\/WhcYdQeM5t7XYaTDR2AoaW0HjOe7DgMZW0NgKGs9BYxtoLAAaXykdE3sMaFqNFwqrz+ek8TSfR20Rhx+N0XgVZY1LZxvq9xgiDj8ao\/Equhqflp7Kyicz4vDvTeMfODa2IXhs\/Bjo\/hWn\/yUA\/qDxHDS2oanxY0keJxIjDj8au2wPjc1Ua1zOcl2SN0eNOPxo7LI9NDZTq\/FSlKvHWyuMOPxo7LI9NDZTq\/FSQ9UVRhx+NHbZHhqbaa7x1qwRhx+NXbaHxmZYja2g8Rw0tiGoMcfG9w9Zf6AvaGwlrcYLFVVbHHL40dhle2hsplrjUkm3K0C2Fxhx+NHYZXt70djRYweNpz1NHuEqrvUfeGDlGd720BpobMUn2MNNCNrXVFelizj8aOyyvewae376YF2w53c41VYXcfjR2GV76TUe5yZXB3TQeBxnd2C57PJHHP6dHhu7QzArBLOCxs0hmBWCWUHj5hDMCsGsoHFzCGaFYFbQuDkEs0IwK2jcHIJZIZgVNG4OwawQzAoaN4dgVghmBY2bQzArBLOCxs0hmBWCWUHj5hDMCsGsoHFzCGaFYFbQuDkEs0IwK2jcHIJZIZgVs8bH4\/EgydvbW+8IZWSD\/fv3r3eEMrLB3t\/fe0coczwebRoDQCDQGCA8aAwQHjQGCA8aA4QHjQHCg8YA4UFjgPCgMUB40BggPGgMEB40BggPGgOEZ\/caF76Vz\/G7uL34\/vIut+9n2\/TbpQvqXVFn9qzxfDqn6AyE\/9csvs5yR1Iu96xIgd1qvO6w0EzcBf3rPOXvDxbrZ+xakQg71fh+QGfLysTvzlMx8+hv0yx1dF9Qf2u6ViTDPjW+TWLxab8bjX5jUVgK\/zTMWke3bF13rXtXpMMuNb5O6OKTfhuQHnMx3eE\/nXsc+D3p6FpQJ48VKhJijxq\/MoLPTW\/G\/Rpzuox93r95+ju7eixRkRJ71PgVfjXuMKQ\/I3kbyA4z+oKkPc1RqEgKNC7S0eJHemq8\/Ct771aXw6Ax\/CI1oV1m9JVjCqWXOjSGGWISd9V4rQI01gGNp\/R9i7qMuMYKTaExXHlyOrkX4hqzGvcnn8YrV1muDlxzh7cGQ+PnoHE2tthy+5mGMxlJY96pjgUa\/9mVl5E0fmGplTJHKkwH8mls4U5hhTVlAa7iegoa7xaR6\/uf02VGxa+pnoHGO+U6phpzuEafGQ1wh9MNNN4jimeHl+k0ozHuN\/4GjWtZWda2PdSeVz75Q2hQu81olE\/\/6FeRyvDvUONnwyk3qnwW11PQuBaV\/8nLWNbi3Ws8jmOET8ZEYwAIDhoDhAeNAcKDxgDhQWOA8KAxQHjQGCA8aAwQnv\/cjJElyNbHpQAAAABJRU5ErkJggg==\" width=\"225\" height=\"105\" \/><\/p>\n<p>Die folgenden Ausf\u00fchrungen basieren nicht auf dem Skript, sondern auf dem Buch von Dirk W. Hoffmann. Die Symbole \\(\\Gamma\\), \\(\\Gamma^{*}\\) sind minimal anders belegt.<\/p>\n<p>F\u00fcr die Ausf\u00fchrungen zum Hilfssymbollemma unten, geht Ihr bitte wieder von der Definition im Skript aus.<\/p>\n<h2>Mehrspurmaschinen<\/h2>\n<p>Zwar wird das im Skript nicht so explizit erw\u00e4hnt, aber wir reden hier auch \u00fcber Mehrspurmaschinen. D.h. man hat zwar \\(k\\) Spuren, aber nur einen Lese- und Schreibkopf und somit auch nur ein Band und damit eine \\(k\\)-stellige Einbandmaschine. Wir k\u00f6nnen nur, bei z.B. 3 Spuren, das Tripel lesen. Die \\(k\\) Eingabeworte der Einbandmaschine, welche nur durch ein Trennzeichen getrennt sind, finden sich bei der Mehrspurmaschine nun in \\(k\\) Spuren wieder. In jeder Spur befindet sich somit ein Eingabewort.<\/p>\n<p>Haben wir z.B. folgende Belegung auf den Spuren mit dem Alphabet \\(\\Sigma = \\{a,b,c\\}\\) und dem Arbeitsalphabet \\(\\Gamma = \\{a,b,c,B\\}\\):<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/mehrspur3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-887\" style=\"margin-left: 50px; margin-right: 150px;\" title=\"mehrspur\" alt=\"\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/mehrspur3-300x157.png\" width=\"300\" height=\"157\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/mehrspur3-300x157.png 300w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/mehrspur3.png 345w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>So lesen wir \\((c,c,B)\\) wenn der Lesekopf \u00fcber der 3. Spalte steht. Wir haben keine 3 Lesek\u00f6pfe, die wir justieren k\u00f6nnten und m\u00fcssen das vollst\u00e4ndige Band bewegen. Solche Maschinen lassen sich leicht durch Einbandmaschinen simulieren, indem wir das Alphabet \\(\\Sigma\\) auf\u00a0\\(\\Sigma^3\\) erweitern und fortan\u00a0\\((c,c,B)\\) ein Element, also ein einzelnes Zeichen, aus unserem neuen Alphabet \\(\\Sigma^3\\) auf einem einzigen Band ist, d.h. alle Tripel aus den Zeichen a, b, c und dem Blank B bestehen. Damit bl\u00e4hen wir das Alphabet nat\u00fcrlich deutlich auf. Die Restriktion mit den sich nicht bewegenden K\u00f6pfen werden wir in den Mehrbandmaschinen entfernen.<\/p>\n<p>Die Mehrspurmaschine mit \\(k\\) Spuren k\u00f6nnen wir also durch eine \\(k\\)-stellige Einbandmaschine simulieren:<br \/>\n<a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-888\" style=\"margin-left: 50px; margin-right: 150px;\" title=\"spuren_turing\" alt=\"\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing3-300x185.png\" width=\"300\" height=\"185\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing3-300x185.png 300w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing3.png 344w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nDie Restriktion mit den sich nicht bewegenden K\u00f6pfen werden wir in den Mehrbandmaschinen entfernen.<\/p>\n<h2>Mehrbandmaschinen<\/h2>\n<p>Die Mehrbandmaschine besitzt, \u00e4hnlich zu den Registermaschinen, folgende Grundfunktionen (welche mittels eines Flussdiagramms und so auch mittels einer Registermaschine nachgebildet werden k\u00f6nnen):<\/p>\n<ul style=\"list-style-type: square; padding-left: 30px;\">\n<li>gehe auf <strong>Band i<\/strong> ein Feld nach links<\/li>\n<li>gehe auf <strong>Band i<\/strong> ein Feld nach rechts<\/li>\n<li>schreibe a auf <strong>Band i<\/strong> direkt unter den Kopf<\/li>\n<li>pr\u00fcfe ob a unter dem Lesekopf auf <strong>Band i<\/strong> ist<\/li>\n<\/ul>\n<p>Ausgabeband ist das Band mit der Nr. 0, B\u00e4nder \\(1-k\\) sind Eingabeb\u00e4nder. Auf jedem Eingabeband steht eines der \\(k\\) Worte. Man sieht hier sofort, dass wir nun bewegliche Lesek\u00f6pfe haben, da sie sich auf den unterschiedlichen B\u00e4ndern unabh\u00e4ngig voneinander bewegen k\u00f6nnen. Wir k\u00f6nnen fortan Operationen auf einem Band unabh\u00e4ngig von den anderen B\u00e4ndern durchf\u00fchren.<\/p>\n<blockquote><p><strong>Merksatz<\/strong>: <em>Einbandmaschinen haben nur ein einziges Band, welches als Ein- und Ausgabeband dient. Dort stehen die \\(k\\) Worte durch ein Trennzeichen getrennt auf dem einzigen Band. \\(k\\)-stellige Einbandmaschinen k\u00f6nnen Mehrspurmaschinen mit \\(k\\) Spuren simulieren. Mehrspurmaschinen haben zwar auch nur ein Band, welches jedoch in \\(k\\) Spuren unterteilt ist. Hier gibt es keine beweglichen Lese-\/Schreibk\u00f6pfe. Mehrbandmaschinen verf\u00fcgen \u00fcber mehrere B\u00e4nder, die sich unabh\u00e4ngig von einander bewegen k\u00f6nnen und somit \u00fcber bewegliche Lese-\/Schreibk\u00f6pfe verf\u00fcgen.\u00a0<\/em><\/p>\n<p><em>Lange Rede, kurzer Sinn: Mehrspurmaschinen mit \\(k\\) Spuren k\u00f6nnen durch das Aufbl\u00e4hen des Alphabets mit \\(k\\)-stelligen Einbandmaschinen simuliert werden. Mehrbandmaschinen k\u00f6nnen wiederum durch Mehrspurmaschinen simuliert werden und letztendlich in eine \\(k\\)-stellige Einbandmaschine \u00fcberf\u00fchrt werden. Dabei werden Markierungen (in der Literatur sind es oft zus\u00e4tzliche Spuren) <em>der Zeichen f\u00fcr die Position des virtuellen Lese-\/Schreibkopfs pro Spur verwendet.\u00a0<\/em><\/em><\/p><\/blockquote>\n<h2>Beweis der Berechnungsst\u00e4rke<\/h2>\n<p>Die Mehrband-, Mehrspur- und die Einbandmanschinen haben die gleiche Berechnungsst\u00e4rke. D.h. wir k\u00f6nnen Mehrbandmaschinen (mit beweglichen Lesek\u00f6pfen) mit \\(k\\) B\u00e4ndern durch Mehrspurmaschinen simulieren. Die Mehrspurmaschinen k\u00f6nnen als Einbandmaschinen formuliert werden. Den Lernzielen nach sollte man den Beweis nachvollziehen und seine Grundidee erl\u00e4utern k\u00f6nnen. Der Beweis im Skript basiert auf der gleichen Grundidee, visualisiert die Darstellung der beweglichen K\u00f6pfe jedoch sehr bescheiden. Ich werde die Idee des Skripts am Ende aber dennoch kurz skizzieren. F\u00fcr das Verst\u00e4ndnis halte mich aber erstmal an die Zusatzliteratur.<\/p>\n<p>Falls jemand etwas findet, der den Beweis im Skript verst\u00e4ndlicher formuliert als das Skript selbst: bitte melden!<\/p>\n<h3>Mehrspurmaschine als Einbandmaschine<\/h3>\n<p>Hier wollen wir aus einer \\(k\\)-stelligen Einbandmaschine (es ist ja ein einziges Band, die Stelligkeit wird aber in &#8222;Spuren&#8220; dargestellt. Ggf. gibt es noch ein Ausgabeband 0) eine \\(k\\)-stellige Turingmaschine mit einem Band (ohne Spuren) basteln. Ist ja kein Problem, da wir hier einfach nur das Alphabet aufbl\u00e4hen m\u00fcssen. Die Operationen bleiben fast gleich, nur dass sie jetzt nicht auf Spuren, sondern auf einem \\(k\\)-Tupel operieren.<\/p>\n<ol style=\"padding-left: 30px;\">\n<li>Als erstes die Anpassung der Eingabe: man kopiert alle Eingabeworte der \\(k\\) Spuren auf das Ausgabeband der Maschine. <strong>Beispiel:\u00a0<\/strong>siehe folgendes Bild.<\/li>\n<li>Die Funktionen &#8222;L&#8220;, &#8222;R&#8220;, &#8222;a&#8220;, &#8222;a?&#8220; werden dann durch &#8222;0:L&#8220;, &#8222;0:R&#8220;, &#8222;o:a&#8220; und &#8222;0:a?&#8220; ersetzt, da sie nun nur auf Ausgabeband 0 durchgef\u00fchrt werden.<\/li>\n<\/ol>\n<blockquote><p><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-808\" style=\"margin-left: 50px; margin-right: 150px;\" title=\"spuren_turing\" alt=\"\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing2-300x180.png\" width=\"300\" height=\"180\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing2-300x180.png 300w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/spuren_turing2.png 609w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p>Damit haben wir eine \\(k\\)-stellige Bandmaschine (bei \\(k &gt; 1\\) auch Mehrspurmaschine genannt) mit einer \\(k\\)-stelligen Turingmaschine und nur einem einzigen Band simuliert. Die unbeweglichen Lesek\u00f6pfe machen es uns hier einfach.<\/p>\n<h3>Mehrbandmaschine als Mehrspurmaschine<\/h3>\n<p>Und nun anders herum, was etwas schwieriger ist: die Konstruktion einer \\(k\\)-stelligen Einbandmaschine (also nur ein Band, aber \\(k\\) Spuren), welche die selbe Funktion der Mehrbandmaschine mit \\(k\\) B\u00e4ndern berechnet:<\/p>\n<blockquote><p><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-891\" style=\"margin-left: 50px; margin-right: 150px;\" title=\"band-spur\" alt=\"\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur3-300x213.png\" width=\"300\" height=\"213\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur3-300x213.png 300w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur3.png 338w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p><\/blockquote>\n<p>Soweit so unklar. Wir haben hier das Problem der beweglichen Lesek\u00f6pfe. W\u00e4hrend wir bei der Mehrbandmaschine oben die Lesek\u00f6pfe auf dem 2. Feld in Band 1 (a) und auf dem 3. Feld in Band 2 (a) haben k\u00f6nnten, k\u00f6nnen wir das auf unserer Einbandmaschine aber nicht darstellen. Was also tun? In der Literatur wird hierf\u00fcr f\u00fcr jedes Band eine neue Spur erstellt, welche alle unterschiedlichen Positionen der Lesek\u00f6pfe auf dem Band darstellt. Wir tun also folgendes:<\/p>\n<ol style=\"padding-left: 30px;\">\n<li>wir speichern die Position der Lesek\u00f6pfe einer Spur (Datenspur) auf einer zus\u00e4tzlichen Spur (Positionsspur).<\/li>\n<li>wir erweitern unser Bandalphabet \\(\\Gamma\\) in ein neues: unser \\(\\Gamma^{*}\\). Zus\u00e4tzlich zu den Einzelsymbolen im Bandalphabet \\(\\Gamma\\) werden dann alle Kombinationen der Zeichen auf den B\u00e4ndern hinzugef\u00fcgt.<\/li>\n<li>wir simulieren den Befehl f\u00fcr Band \\(i\\) auf unserer Spur \\(i\\).<\/li>\n<\/ol>\n<p>Im oberen Bild sind die Lesek\u00f6pfe f\u00fcr Band 1 und 2 auf den ersten Eingabeworten positioniert.\u00a0Wie ist nun der Ablauf? Zun\u00e4chst befindet sich das Band ganz am Anfang, d.h. es steht ein \\(B\\) auf jeder Spur (auch wenn ich das \\(B\\) in der ersten Spur\/im ersten Band im Bild oben unterschlagen habe, zu faul ein neues zu malen). Wir haben nun z.B. einen Befehl, der auf Band 1 das erste \\(a\\) durch den Wert ersetzen soll, der unter dem Lesekopf auf Band 2 steht. Anschlie\u00dfend soll auf beiden B\u00e4ndern ein Schritt nach rechts gemacht werden.<\/p>\n<p>Da wir die Lesek\u00f6pfe nicht mehr unabh\u00e4ngig von einander bewegen k\u00f6nnen, wird das Band nach rechts gespult bis die beiden Positionsmarkierungen f\u00fcr Spur 1 und 2 gefunden wurden. Die Werte merkt sich die Maschine und f\u00fchrt nun den Befehl statt auf Band 1 nun auf Spur 1 aus. Anschlie\u00dfend werden die Positionsmarkierungen wie gew\u00fcnscht auf beiden B\u00e4ndern um eins nach rechts verschoben. Das folgende Bild visualisiert diese Operation auf dem Band.<\/p>\n<blockquote><p><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur22.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-892\" style=\"margin-left: 50px; margin-right: 150px;\" title=\"band-spur2\" alt=\"\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur22-300x268.png\" width=\"300\" height=\"268\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur22-300x268.png 300w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2012\/11\/band-spur22.png 338w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p><\/blockquote>\n<p>Soll der n\u00e4chste Befehl durchgef\u00fchrt werden, so wird das Band wieder nach rechts gespult bis die Positionsmarkierungen gefunden wurden, der Befehl ausgef\u00fchrt und die Positionsmarkierungen erneut verschoben.\u00a0Am Ende steht das Ergebnis auf der 1. (oder einer speziell daf\u00fcr vorgesehenen) Spur links vom Lesekopf und das Band muss nur noch zur\u00fcckgespult werden.<\/p>\n<h2>Skriptbeweis<\/h2>\n<p>Der Beweis im Skript verwendet keine zus\u00e4tzlichen Spuren, sondern markiert das Zeichen, \u00fcber welchem der Kopf steht mit einem Querstrich, z.B. \\(\\overline{a}\\).\u00a0 Damit werden z.B. aus dem Symbol \\((1,0)\\) in der Mehrbandmaschine, wo der Kopf auf \\(1\\) oder \\(0\\) stehen kann nun die folgenden Symbole: \\((1,0), (\\overline{1},0), (1,\\overline{0}), (\\overline{1},\\overline{0})\\) f\u00fcr die Positionierung der virtuellen Lesek\u00f6pfe. Damit haben wir eine massive Vergr\u00f6\u00dferung unseres Bandalphabets.<\/p>\n<p>Das Gleiche haben wir im Beweis von oben. \u00dcberf\u00fchren wir die Mehrspur- nun in eine Einbandmaschine, so ist unser Alphabet ebenfalls erweitert: aus \\((a,B)\\) wird dann \\((a,B,b,B), (a,\\#,b,B), (a,B,b,\\#), (a,\\#,B,\\#)\\).<\/p>\n<p>Alles in allem: die Simulation der Mehrband- in einer Einbandmaschine erfolgt auf Basis eines vergr\u00f6\u00dferten Alphabets f\u00fcr die Darstellung der Position der Lesek\u00f6pfe auf den simulierten B\u00e4ndern.<\/p>\n<h2>Beweis der Turing-Berechenbarkeit von Funktionen<\/h2>\n<p>Um zu beweisen, dass eine Funktion von der Turingmaschine berechnet wird tut man das gleiche, was man bereits bei Registermaschinen getan hat. Man behauptet, dass das aufgestellte Flussdiagramm (oder die Zustands\u00fcbergangstabelle) genau das tut und von einer gegebenen Eingabecodierung auf die gew\u00fcnschte Ausgabecodierung f\u00fchrt.<\/p>\n<p>Anschlie\u00dfend werden mittels vollst\u00e4ndiger Induktion Annahme und Behauptung aufgestellt und das Flussdiagramm entsprechend oft durchgespielt. Am Ende muss dann die Behauptung rauskommen. Man sollte nicht vergessen alle Eingabef\u00e4lle durchzuspielen.<\/p>\n<p>Schaut dazu einfach mal in den Beitrag f\u00fcr die Einzelschrittfunktion und den Beweis der Addition mittels vollst\u00e4ndiger Induktion.<\/p>\n<h2>Hilfssymbole<\/h2>\n<p>Den Lernzielen nach sollte man den Beweis verstehen, dass man auch ohne Hilfssymbole auskommt. Wir wir oben gesehen haben m\u00fcssen wir das Alphabet massiv erweitern wenn wir eine Mehrbandmaschine durch eine Mehrspur- und dann durch eine Einbandmaschine simulieren wollen. Diese zus\u00e4tzlichen Symbole, welche nicht in dem urspr\u00fcnglichen Arbeitsalphabet inkl. dem Trennzeichen \\(B\\) drin sind werden <strong>Hilfssymbole<\/strong> genannt.<\/p>\n<p>Verwendet man wie im Skript-Beweis f\u00fcr die Kopfpositionen markierte Zeichen statt \\(\\#\\), so m\u00fcssen wir diese markierten Zeichen (\\(\\overline{1}\\) z.B.) mit in das neue Arbeitsalphabet nehmen. Aber nicht die einzelnen Zeichen, sondern Kombinationen davon.<\/p>\n<p><strong>Beispiel<\/strong><\/p>\n<p style=\"padding-left: 30px;\">Besteht unser Alphabet nur aus \\(\\Sigma := \\{a,b\\}\\), unser Arbeitsalphabet somit aus\u00a0 \\(\\Gamma := \\{a,b,B\\}\\) und wir simulieren unsere Mehrbandmaschine mit \\(2\\) B\u00e4ndern durch eine Einbandmaschine, so haben wir eine massive Erweiterung unseres Arbeitsalphabets: Ds neue Alphabet \\(\\Gamma^{&#8218;}\\) ist eine Kombination aus\u00a0\\(\\Gamma^{&#8218;}=\\Gamma\\cup(\\Gamma\\cup\\overline{\\Gamma})^l\\), wobei \\(l\\) die urspr\u00fcngliche Anzahl der B\u00e4nder ist.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"text-decoration: underline;\">Konkret<\/span><\/p>\n<p style=\"padding-left: 30px;\">Haben wir unser\u00a0\\(\\Gamma := \\{a,b,B\\}\\) und \\(2\\) B\u00e4nder, die wir zusammenschmelzen m\u00fcssen, so sieht unser\u00a0\\(\\Gamma^{&#8218;}\\) wie folgt aus:<\/p>\n<p style=\"padding-left: 60px;\">\\(\\begin{array}{ll}\\Gamma^{&#8218;}&amp;=\\{a,b,B\\}\\cup(\\{a,b,B\\}\\cup\\{\\overline{a},\\overline{b},\\overline{B}\\})^2\\\\{}&amp;=\\{a,b,B\\}\\cup(\\{a,b,B,\\overline{a},\\overline{b},\\overline{B}\\}\\times\\{a,b,B,\\overline{a},\\overline{b}\\overline{B}\\})\\\\{}&amp;=\\{a,b,B,aa,ab,aB,&#8230;,\\overline{B},\\overline{B}\\}\\end{array}\\)<\/p>\n<p style=\"padding-left: 30px;\">Aus \\(3\\) Zeichen unseren Urspungs-Bandalphabets sind nun insg. \\(39\\) neuen <strong>Zeichen<\/strong>\u00a0geworden.<\/p>\n<p style=\"padding-left: 30px;\">Achtung: seht z.B. \\(a\\overline{B}\\) nicht als Kombination von \\(a\\) und \\(\\overline{B}\\) an, sondern als <strong>einzelnes<\/strong> Zeichen. Wir verwenden\u00a0\\(a\\overline{B}\\) weil es leichter lesbar ist, wir h\u00e4tten auch ein chinesisches Schriftzeichen daf\u00fcr verwenden k\u00f6nnen, denn es ist wirklich nur ein einzelnes Zeichen aus unserem neuen Arbeitsalphabet \\(\\Gamma\\).<\/p>\n<p style=\"padding-left: 30px;\">Anstatt, dass nun Worte mit \\(\\{a,b,B\\}\\) auf unserem Band stehen, bestehen sie aus \\(\\{a,b,B,aa,ab,aB,&#8230;,\\overline{B},\\overline{B}\\}\\).<\/p>\n<p style=\"padding-left: 30px;\">Mit zwei B\u00e4ndern uns zwei Zeichen haben wir bereits \\(39\\) neue Zeichen. Mit drei B\u00e4ndern h\u00e4tten wir \\(219\\), mit vier bereits \\(1299\\). Etwas viel, nicht? Was k\u00f6nnen wir dagegen tun? Das Hilfssymbollemma anwenden!<\/p>\n<p style=\"padding-left: 30px;\">Wie werden wir die neuen Zeichen wieder los? Kommen wir denn nicht mit unserem urspr\u00fcnglichen Arbeitsalphabet aus? Doch! Wir codieren mit den Zeichen aus unserem Ursprungsalphabet einfach unsere insg. \\(39\\) Zeichen des neuen Arbeitsalphabets.\u00a0 Wie? Wir variieren einfach die L\u00e4nge!<\/p>\n<p style=\"padding-left: 30px;\">Wie viele Kombinationen der Zeichen aus dem Alphabet \\(\\Sigma\\) bekommen wir mit der L\u00e4nge \\(1\\) dargestellt? Genau \\(2^1\\): \\(a,b\\). Und L\u00e4nge 2? Genau \\(2^2\\): \\(aa,ab,ba,bb\\). Welche L\u00e4nge brauchen wir um unsere \\(39\\) Zeichen darstellen zu k\u00f6nnen? F\u00fcr die Darstellung der Zahl \\(39\\) in bin\u00e4r reichen uns \\(6\\) Bit, also \\(2^6=64\\) (\\(2^5=32\\) w\u00e4re uns zu klein).<\/p>\n<p style=\"padding-left: 30px;\">Also w\u00e4hlt euer \\(m\\) f\u00fcr die L\u00e4nge \\(n^m\\) (\\(n\\) ist die Anzahl der Zeichen im Ursprungs-Zeichensatz) entsprechend, damit ihr mindestens so viele Kombinationen aus den Zeichen aus \\(\\Sigma\\) habt um eure alten und neuen Symbole damit zu codieren.<\/p>\n<p style=\"padding-left: 30px;\">Wir brauchen das riesen Arbeitsalphabet mit den Hilfssymbolen damit nicht mehr und bleiben durch die neue Form der Codierung bei geschmeidigen \\(\\{a,b,B\\}\\). Nur die L\u00e4nge ist halt ein St\u00fcck gr\u00f6\u00dfer geworden. Eine <strong>willk\u00fcrliche<\/strong> Codierung der \\(39\\) Symbole unseren urspr\u00fcnglich aufgeblasenen Bandalphabets w\u00fcrde z.B. so aussehen k\u00f6nnen:<\/p>\n<p style=\"padding-left: 60px;\">\\(a\\rightarrow aaaaaa\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(b\\rightarrow bbbbbb\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B\\rightarrow aaaaab\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(aa\\rightarrow aabbbb\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(ab\\rightarrow aaabbb\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(aB\\rightarrow aaabba\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(a\\overline{a}\\rightarrow aabaaa\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(a\\overline{b}\\rightarrow abbaaa\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(&#8230;\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(\\overline{B}\\overline{B}\\overline{B}\\rightarrow ababab\\)<\/p>\n<p style=\"padding-left: 30px;\">Done.<\/p>\n<p>Wir k\u00f6nnen also beliebige Zeichen mittels nur zwei Symbolen codieren. Genau das besagt das Hilfssymbollemma:<\/p>\n<blockquote><p>Zu jeder Bandmaschine \\(M\\) mit Ein\/Ausgabealphabet \\(\\Sigma\\) gibt es eine Bandmaschine \\(M^{&#8218;}\\) mit dem Arbeitsalphabet \\(\\Gamma^{&#8218;}=\\Sigma\\cup\\{B\\}\\), so dass \\(f_M=f_{M^{&#8218;}}\\) gilt.<\/p><\/blockquote>\n<p>Wahrscheinlich ist euch noch nicht ganz klar, warum das so wichtig ist.<\/p>\n<p>Es ist eig. ganz einfach: Wir haben uns hier auf \\(a\\) und \\(b\\) als Ein\/Ausgabealphabet versteift. Wir k\u00f6nnen aber auch \\(\\Sigma=\\{1,0\\}\\) nehmen. Nun k\u00f6nnen wir mit dem Lemma beliebige Zeichen eines Arbeitsalphabets auch mittels \\(1\\) und \\(0\\) codieren und uns nur noch darauf beschr\u00e4nken. Ab hier \u00fcbernehmen dann unsere Computer, denn sie kennen nur Strom an (\\(1\\)) und Strom aus (\\(0\\)).<\/p>\n<p><strong>Fazit<\/strong>: damit haben wir nun alle Lernziele aus der Kurseinheit durch. Wer noch Fragen hat oder grobe Schnitzer findet: ab in die Kommentare!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Update 3: Nach Olivers Einwand (Danke hier nochmal!) habe ich den Abschnitt \u00fcber Hilfssymbole erneut \u00fcberarbeitet. Update 2: Wow, beim Durchgehen des Eintrags sind mir massive Schnitzer bei den Hilfssymbolen aufgefallen. Hoffentlich sind die jetzt raus. Sorry! Update: mit dem Eintrag sollten nun alle Lernziele aus KE3 erschlagen worden sein. Ist zwar etwas lang geworden, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/fernuni.digreb.net\/?p=754\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eTIA: Turing-Maschinen, Hilfssymbole (Lernziele KE3, Update 3)\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-754","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\/754","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=754"}],"version-history":[{"count":111,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/754\/revisions"}],"predecessor-version":[{"id":3526,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/754\/revisions\/3526"}],"wp:attachment":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=754"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=754"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}