Warum ist die Turing-Maschine ein beliebtes Rechenmodell?


68

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.


2
Hoffentlich helfen zukünftige Klassen zu klären.
Yuval Filmus

19
Vielleicht finden Sie Lambda-Kalkül als ein natürlicheres Rechenmodell. Darauf basiert die funktionale Programmierung.
Bakuriu

4
Eigentlich bin ich kurz vor dem Abschluss. Der Kurs auf höchster Ebene, der die Automatentheorie beinhaltete, endete mit Turing-Maschinen, obwohl die Äquivalenz zwischen den verschiedenen Berechnungsmodellen erwähnt wurde. Ich habe sogar meinen fairen Anteil an TM "Programmierung" gemacht. Das TM nervte mich jedoch immer. Es schien nicht "minimal" zu sein; es hat mir nicht die Essenz der Berechnung enthüllt.
Alex

4
" ein physikalisches System, das der Eingabezeichenfolge entspricht " - wie würde diese Entsprechung aussehen? Die Turingmaschine ist ein recht einfaches und dennoch leistungsfähiges formales Modell für genau so etwas.
Bergi

2
Turing-Maschinen ändern sich deterministisch nur basierend auf dem ursprünglichen Zustand (wenn Sie die Konfiguration meinen). Also, was ist daran falsch?
user23013

Antworten:


72

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.


Kommentare sind nicht für längere Diskussionen gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Gilles

56

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:

Turingmaschinen gelten weithin als abstrakter Prototyp digitaler Computer. Die Mitarbeiter auf dem Gebiet sind jedoch immer mehr der Ansicht, dass die Vorstellung einer Turing-Maschine zu allgemein ist, um als genaues Modell der tatsächlichen Computer zu dienen. Es ist allgemein bekannt, dass es selbst für einfache Berechnungen unmöglich ist, eine Obergrenze für die Menge an Band anzugeben, die eine Turing-Maschine für eine bestimmte Berechnung benötigt. Genau diese Eigenschaft macht Turings Konzept unrealistisch.

In den letzten Jahren ist die Idee eines endlichen Automaten in der Literatur aufgetaucht. Dies sind Maschinen mit nur einer begrenzten Anzahl von internen Zuständen, die für Speicher und Berechnung verwendet werden können. Die Beschränkung der Endlichkeit scheint der Vorstellung einer physischen Maschine eine bessere Annäherung zu geben. Natürlich können solche Maschinen nicht so viel wie Turing-Maschinen, aber der Vorteil, eine willkürliche allgemeine rekursive Funktion berechnen zu können, ist fraglich, da nur sehr wenige dieser Funktionen in praktischen Anwendungen auftreten.

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.


17

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.


1
Grundsätzlich sind alle realen modernen CPUs Registermaschinen mit RAM. Sogar Mikrocontroller oder Spielzeugarchitekturen mit nur einem Akkumulatorregister haben normalerweise eine Art separates Adressregister, in das Sie Zeiger laden können, anstatt eine reine Akkumulatormaschine zu sein. Aber echte Hardware hat Adressen mit fester Größe und ist daher nicht vollständig. IDK, wenn das Registermaschinenmodell im theoretischen CS häufig verwendet wird, aber so funktioniert die Assemblersprache im realen Leben und kann für die Perf-Analyse hilfreich sein, da alles zu asm kompiliert wird.
Peter Cordes

14

Ich möchte auf diesen Teil der Frage antworten, der in einer Bearbeitung hinzugefügt wurde:

"Sollte das kanonische Rechenmodell nicht offensichtlich die Essenz der Berechenbarkeit vermitteln?"

TTT

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.


Vielen Dank, dass Sie mich an die Universalmaschine erinnert haben. Ich sehe, wie das "vollständige" Berechnung impliziert.
Alex

5

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:

  • Um zu beweisen, dass sie jeden Algorithmus umfassen, den wir uns jemals vorstellen konnten.
  • An dem Halteproblem / Entscheidungsproblem arbeiten.
  • In der Lage sein, jede andere Maschine / Sprache auf diese zu reduzieren.

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.


In allen Punkten einverstanden sein. Die Popularität ist vielleicht nur relativ zu den undurchsichtigen Modellen wie Thue-Maschinen und Lambda-Kalkül und Emil Post's Zeug.
Luser Droog

Tut mir leid, aber Sie verpassen einen sehr zentralen Punkt, den andere Sprachen schwer durcheinander gebracht hätten. Eine Turing-Maschine definiert, was Sie tatsächlich berechnen können. Alle anderen Sprachen würden die Frage einschränken, wie Sie es berechnen können, sodass es höchst unwahrscheinlich ist, dass Sie nachweisen können, was Sie berechnen können oder nicht.
Bent

Wenn Turingmaschinen ein Reduktionsziel für andere Modelle sein sollen, warum müssen sie dann nicht minimal sein?
Bergi

@ Bent, ich gebe zu, ich verstehe nicht ganz, was Sie zu sagen versuchen, zusätzlich zu dem, was ich mit "Aber es wäre viel schwieriger gewesen, die theoretischen Grundlagen auf einer komplexeren Maschine aufzubauen." (dh auf einer tatsächlichen Programmiersprache, wie wir sie kennen und verwenden).
AnoE

Mit Beliebtheit meine ich, was in Theoretical CS verwendet wird. Wieder war es das einzige Modell, das ich gelernt habe (obwohl ich glaube, ich war ein wenig der Lambda-Rechnung ausgesetzt). Ich habe mich nur gefragt, warum, vielleicht pädagogisch, es immer das erste ist, das unterrichtet wird. Ich sehe, wie seine Praktikabilität dies rechtfertigt.
Alex

5

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.