Ich bin ein CS-Student. Ich verstehe, wie Turing zu seiner abstrakten Maschine kam (die eine Person modelliert, die eine Berechnung durchführt), aber es scheint mir eine umständliche, unelegante Abstraktion zu sein. Warum betrachten wir ein "Band" und einen Maschinenkopf, die Symbole schreiben, den Zustand ändern und das Band hin und her bewegen?
Was ist die zugrunde liegende Bedeutung? Ein DFA ist elegant - es scheint genau das zu erfassen, was zum Erkennen der regulären Sprachen erforderlich ist. Aber die Turing-Maschine ist meines Erachtens nur eine klobige abstrakte Erfindung.
Nachdem ich darüber nachgedacht habe, denke ich, dass das idealisierteste Berechnungsmodell darin besteht, zu sagen, dass ein physikalisches System, das der eingegebenen Zeichenfolge entspricht, nach dem Ingangsetzen ein statisches Gleichgewicht erreicht, das bei der Interpretation dem zur Bildung verwendeten äquivalent ist Das System aus der ursprünglichen Zeichenfolge würde der richtigen Ausgabezeichenfolge entsprechen. Dies fängt den Begriff "Automatisierung" ein, da sich das System deterministisch nur basierend auf dem ursprünglichen Zustand ändern würde.
Bearbeiten :
Nachdem ich ein paar Antworten gelesen hatte, wurde mir klar, dass das, was mich an der Turing-Maschine verwirrt, nicht minimal zu sein scheint. Sollte das kanonische Rechenmodell nicht offensichtlich die Essenz der Berechenbarkeit vermitteln?
Für den Fall, dass nicht klar ist, dass DFAs keine vollständigen Berechnungsmodelle sind.
Vielen Dank für die Antworten.
Antworten:
Nun, ein DFA ist nur eine Turing-Maschine, die sich nur nach rechts bewegen darf und die akzeptieren oder ablehnen muss, sobald die eingegebenen Zeichen aufgebraucht sind. Ich bin mir nicht sicher, ob man wirklich sagen kann, dass ein DFA natürlich ist, eine Turing-Maschine jedoch nicht.
Abgesehen von der Kritik an der Frage, denken Sie daran, dass Turing funktioniert hat, bevor es Computer gab. Als solcher versuchte er nicht zu kodifizieren, was elektronische Computer tun, sondern zu berechnen im Allgemeinen. Meine Eltern haben ein Wörterbuch aus den 1930er Jahren, das Computer als "jemanden, der rechnet" definiert, und das ist im Grunde genommen der Ursprung von Turing: Für ihn handelte es sich damals bei der Berechnung um Rechenschieber, Protokolltabellen, Bleistifte und Zettel. In dieser Denkweise scheint das Umschreiben von Symbolen auf ein Papierband keine schlechte Abstraktion zu sein.
Okay, gut, sagen Sie (hoffe ich!), Aber wir sind nicht mehr in den 1930er Jahren. Warum verwenden wir das immer noch? Hier gibt es meines Erachtens keinen bestimmten Grund. Der Vorteil von Turing-Maschinen ist, dass sie einigermaßen einfach sind und wir gut darin sind, Dinge über sie zu beweisen. Obwohl es sehr mühsam ist, ein Turing-Maschinenprogramm für eine bestimmte Aufgabe formal festzulegen, haben Sie nach einigen Versuchen eine vernünftige Vorstellung davon, was sie können, und müssen die formalen Spezifikationen nicht mehr schreiben. Das Modell kann auch problemlos um andere natürliche Funktionen erweitert werden, z. B. um den wahlfreien Zugriff auf das Band. Sie sind also ein ziemlich nützliches Modell, das wir gut verstehen, und wir haben auch ein ziemlich gutes Verständnis dafür, wie sie sich auf tatsächliche Computer beziehen.
Man könnte andere Modelle verwenden, aber dann müsste man eine große Menge an Übersetzungen zwischen den Ergebnissen des neuen Modells und der Vielzahl vorhandener Arbeiten an den Möglichkeiten von Turing-Maschinen durchführen. Niemand hat sich einen Ersatz für Turing-Maschinen ausgedacht, der groß genug ist, um das als gute Idee erscheinen zu lassen.
quelle
Sie stellen verschiedene Fragen. Lassen Sie mich kurz nacheinander antworten.
Was ist am Turing-Maschinenmodell so wichtig?
Zu dieser Zeit schien Turings Versuch, die Berechenbarkeit zu definieren, am zufriedenstellendsten zu sein. Es stellte sich schließlich heraus, dass alle oben beschriebenen Rechenmodelle gleichwertig sind - sie alle beschreiben den gleichen Begriff der Berechenbarkeit. Aus historischen Gründen erwies sich das Modell von Turing als die kanonischste Methode zur Definition der Berechenbarkeit. Das Modell ist auch sehr rudimentär und so einfach zu bearbeiten, im Vergleich zu vielen anderen Modellen, einschließlich der oben aufgeführten.
In der üblichen Informatik werden Turing-Maschinen als Definition von Berechenbarkeit unterrichtet und dann auch zur Erforschung der Komplexitätstheorie verwendet. Algorithmen werden jedoch in Bezug auf ein realistischeres Modell analysiert, das als RAM-Maschine bekannt ist, obwohl dieses Problem normalerweise als Geheimnis für die Cognoscenti unter den Teppich gekehrt wird.
Sind DFAs nicht ein besseres Modell?
Dies war die ursprüngliche Motivation für Rabins und Scotts berühmtes Papier Finite Automaten und ihre Entscheidungsprobleme:
Es stellte sich jedoch heraus, dass Turing-Maschinen zu stark und DFAs zu schwach sind . Heutzutage bevorzugen Theoretiker den Begriff der Polynomzeitberechnung , obwohl dieser Begriff auch nicht unproblematisch ist. DFAs und NFAs werden jedoch weiterhin hauptsächlich in Compilern (zur lexikalischen Analyse) und Netzwerkgeräten (zur äußerst effizienten Filterung) verwendet.
Ist das Modell der Turing-Maschine nicht zu limitiert?
Die Church-Turing-These besagt, dass Turing-Maschinen den physikalischen Begriff der Berechenbarkeit erfassen. Juri Gurewitsch hat einen Versuch unternommen, diese These zu beweisen, indem er eine allgemeinere Klasse von Rechengeräten formulierte, die als abstrakte Zustandsmaschinen bekannt sind, und nachwies, dass sie in ihrer Leistung Turingmaschinen gleichwertig sind. Vielleicht entsprechen diese Maschinen Ihrem idealisierten Modell.
quelle
Die zugrunde liegende Bedeutung handelt von der Idee der Turing-Äquivalenz. Das genaue Modell ist nicht wichtig, solange es Turing-äquivalent ist. Es ist jedoch besser, ein einfacheres Modell zu verwenden, damit Sie die Gleichwertigkeit mit anderen Modellen leichter nachweisen können.
Genauer gesagt ist es besser, die Simulation dieses Modells in anderen Modellen zu vereinfachen, da wir wissen, dass die meisten erweiterten Programmiersprachen Turing-äquivalent sind (mit bestimmten Annahmen zu Speicheradressen) und zur Simulation anderer Modelle verwendet werden können.
Es gibt andere Modelle, wie zum Beispiel die Lambda-Berechnung und die Grammatik (Zeichenfolgenumschreibung). Es ist jedoch einfacher, zeitliche und räumliche Einschränkungen in einer Turing-Maschine zu definieren. Sie könnten auch eine Programmiersprache wie Brainfuck verwenden, aber es erfordert unnötigen Aufwand, zum Beispiel die Symbole neu zu definieren, um manchmal eine logisch triviale Änderung zu erhalten.
Die Turing-Maschine schien mir also durchaus angemessen, wenn man für alles ein einziges Modell lernen muss. Aber wenn Sie trotzdem mehrere Modelle lernen wollen, sehe ich nichts falsches darin, Lambda-Kalkül für die Idee der Turing-Äquivalenz, Brainfuck für den Nachweis anderer Modelle, Turing-Äquivalent und praktische Programmiersprachen zu lernen (besser mit zugänglichem Stack und ohne versteckte Variablen). aus zeitlichen und räumlichen Gründen, und betrachten Sie die Turing-Maschine nur als Werkzeug, um diese Dinge als gleichwertig zu beweisen, wenn sich niemand die Mühe macht, einen Weg zu finden, um sie zu umgehen. Dies ist natürlich der Fall, wenn Sie die zugrunde liegende Theorie nicht zuerst gelernt haben, sondern erst, wenn Sie sie für nützlich befunden haben.
quelle
Ich möchte auf diesen Teil der Frage antworten, der in einer Bearbeitung hinzugefügt wurde:
Das ist eine der Grundlagen der Berechenbarkeit: Unabhängig vom allgemeinen Begriff der Berechenbarkeit sollte es eine einzige Maschine geben, die alles kann. Genau das leistet eine universelle Turingmaschine. Es ist auch das, was moderne Computer tun (vorbehaltlich der physikalisch unrealistischen Idealisierung, unendlichen Speicher zu haben).
Eine andere Möglichkeit, um dies auszudrücken, die direkt auf Ihre Besorgnis eingeht, dass Turing-Maschinen nicht minimal sind, besteht darin, dass sie so minimal wie möglich sind, unter der Voraussetzung, dass sie einen allgemeinen Begriff der Berechenbarkeit beschreiben, für den es eine universelle Maschine gibt.
quelle
Turingmaschinen sind nicht für den wörtlichen Gebrauch gedacht. Das Programmieren in ihnen ist etwas, das man nur einmal als Übung machen würde, um zu verstehen, wie sie funktionieren.
Sie sind ausdrücklich nicht dazu gemacht, irgendetwas zu "tun". Sie müssen nicht minimal sein, sie müssen nicht angenehm zu handhaben sein.
Sie sind lediglich ein Modell einer Maschine, die Sie bauen könnten. Sie wäre so ausdrucksstark und leistungsstark wie jede andere Maschine, die Sie jemals im physischen Universum bauen könnten (soweit wir heute wissen).
Sie wurden von Turing aus folgenden Gründen so definiert, wie sie sind:
Wäre es möglich gewesen, eine andere Sprache zu wählen? Sicher! Alle Sprachen, die wir heute kennen, hätten verwendet werden können. Es wäre jedoch viel schwieriger gewesen, die theoretischen Grundlagen auf einer komplexeren Maschine aufzubauen.
Ich würde argumentieren, dass sie nicht einmal ein "populäres Rechenmodell" sind; Niemand würde jemals etwas mit einer Turing-Maschine berechnen. Es ist ein rein theoretisches Konzept, das von theoretischen Informatikern für tcs entwickelt wurde.
quelle
Warum ist es beliebt, vielleicht am beliebtesten? Sie müssen sich daran erinnern, dass Turing diese "Maschine" viele Jahre vor elektronischen Computern ins Leben gerufen hat. Das TM wird mit einem Papier, einem Stift, einem Gummi und nicht zuletzt einem menschlichen Gehirn bedient. Somit kann jeder mit dieser Maschine eine "Berechnung" durchführen. Jeder meint eine Person, die nie Computer gelernt hat und Sprachen programmiert. Es ist einfach zu bedienen. Wenn Sie darüber nachdenken, entdecken Sie ein Paradoxon: Diese Maschine ist eine Ansammlung von fast nichts, aber Sie können alles bedienen. Meiner Meinung nach ist das Paradoxon "fast-nichts / versus / alles" der Grund, warum es beliebt ist. Ich würde bemerken, dass das TM Rekursion nicht explizit erklärt, das TM befasst sich nur mit "Sprung". Diese Funktion (die explizit von Rekursion spricht) kann Anfängern Kopfschmerzen bereiten. Zum Beispiel ist in der Lambda-Rechnung das Konzept des Y-Kombinators fast unverständlich. Genauer gesagt ist das TM beliebt, weil das Paradoxon "fast nichts / versus / alles" ohne die rekursiven Kopfschmerzen ist.
quelle