Echte Computer haben nur begrenzten Speicher und nur eine begrenzte Anzahl von Zuständen. Sie sind also im Wesentlichen endliche Automaten. Warum verwenden theoretische Informatiker die Turing-Maschinen (und andere gleichwertige Modelle) zum Studium von Computern? Was bringt es, diese viel stärkeren Modelle in Bezug auf echte Computer zu untersuchen? Warum reicht das endliche Automatenmodell nicht aus?
42
Antworten:
Bei der Betrachtung dieser Frage gibt es zwei Ansätze: historische, die sich darauf beziehen, wie Konzepte entdeckt wurden, und technische, die erklären, warum bestimmte Konzepte übernommen und andere aufgegeben oder sogar vergessen wurden.
Historisch gesehen ist die Turing-Maschine vielleicht das intuitivste Modell von mehreren, die versucht haben, das Entscheidungsproblem zu lösen . Dies hängt eng mit den Bemühungen der ersten Jahrzehnte des 20. Jahrhunderts zusammen, die Mathematik vollständig zu axiomatisieren. Die Hoffnung war, dass Sie, sobald Sie eine kleine Menge von Axiomen als richtig erwiesen haben (was einen erheblichen Aufwand erfordert), eine systematische Methode verwenden könnten, um einen Beweis für die logische Aussage abzuleiten, die Sie interessiert. Selbst wenn jemand endliche Automaten in Betracht zieht In diesem Zusammenhang würden sie schnell verworfen, da sie selbst einfache Funktionen nicht berechnen können.
Technisch ist die Aussage, dass alle Computer endliche Automaten sind, falsch. Ein endlicher Automat hat einen konstanten Speicher, der je nach Größe der Eingabe nicht geändert werden kann. Es gibt weder in der Mathematik noch in der Realität eine Einschränkung, die verhindert, dass zusätzliches Band, Festplatten, RAM oder andere Arten von Speicher bereitgestellt werden, sobald der Speicher in der Maschine verwendet wurde. Ich glaube, dies wurde in den frühen Tagen des Rechnens oft angewendet, als sogar einfache Berechnungen den Speicher füllen konnten, während dies für die meisten Probleme und mit der modernen Infrastruktur, die eine weitaus effizientere Speicherverwaltung ermöglicht, zumeist kein Problem ist .
BEARBEITEN: Ich habe beide in den Kommentaren angesprochenen Punkte berücksichtigt, habe mich jedoch dafür entschieden, sie nicht sowohl der Kürze als auch der Zeit wegen aufzunehmen, die mir zur Verfügung standen, um die Antwort aufzuschreiben. Dies ist meine Begründung, warum ich glaube, dass diese Punkte die Wirksamkeit von Turing-Maschinen bei der Simulation moderner Computer nicht mindern, insbesondere im Vergleich zu endlichen Automaten:
Lassen Sie mich zunächst das physikalische Problem einer Speicherbeschränkung durch das Universum ansprechen. Zunächst wissen wir nicht wirklich, ob das Universum endlich ist oder nicht. Darüber hinaus ist das Konzept des beobachtbaren Universums, das per Definition endlich ist, per Definition auch für einen Benutzer irrelevant, der zu einem beliebigen Punkt des beobachtbaren Universums reisen kann, um das Gedächtnis zu nutzen. Der Grund ist, dass sich das beobachtbare Universum auf das bezieht, was wir von einem bestimmten Punkt aus beobachten können, nämlich der Erde, und es wäre anders, wenn der Beobachter zu einem anderen Ort im Universum reisen könnte. Jede Argumentation über das beobachtbare Universum geht also in die Frage nach der Endlichkeit des Universums über. Nehmen wir jedoch an, dass wir durch einen Durchbruch das Wissen erlangen, dass das Universum tatsächlich endlich ist. Obwohl dies einen großen Einfluss auf wissenschaftliche Angelegenheiten haben würde, Ich bezweifle, dass dies Auswirkungen auf die Nutzung von Computern haben würde. Einfach ausgedrückt könnte es sein, dass die Computer im Prinzip tatsächlich endliche Automaten und keine Turing-Maschinen sind. Aber für die schiere Mehrheit der Berechnungen und aller Wahrscheinlichkeit nach für alle Berechnungen, an denen Menschen interessiert sind, bieten uns Turing-Maschinen und die dazugehörige Theorie ein besseres Verständnis. Obwohl wir wissen, dass die Newtonsche Physik im Wesentlichen falsch ist, bezweifle ich, dass Maschinenbauer in erster Linie die Quantenphysik verwenden, um Autos oder Fabrikmaschinen zu konstruieren. Die Eckfälle, in denen dies erforderlich ist, können auf individueller Ebene behandelt werden. Aber für die schiere Mehrheit der Berechnungen und aller Wahrscheinlichkeit nach für alle Berechnungen, an denen Menschen interessiert sind, bieten uns Turing-Maschinen und die dazugehörige Theorie ein besseres Verständnis. Obwohl wir wissen, dass die Newtonsche Physik im Wesentlichen falsch ist, bezweifle ich, dass Maschinenbauer in erster Linie die Quantenphysik verwenden, um Autos oder Fabrikmaschinen zu konstruieren. Die Eckfälle, in denen dies erforderlich ist, können auf individueller Ebene behandelt werden. Aber für die schiere Mehrheit der Berechnungen und aller Wahrscheinlichkeit nach für alle Berechnungen, an denen Menschen interessiert sind, bieten uns Turing-Maschinen und die dazugehörige Theorie ein besseres Verständnis. Obwohl wir wissen, dass die Newtonsche Physik im Wesentlichen falsch ist, bezweifle ich, dass Maschinenbauer in erster Linie die Quantenphysik verwenden, um Autos oder Fabrikmaschinen zu konstruieren. Die Eckfälle, in denen dies erforderlich ist, können auf individueller Ebene behandelt werden.
quelle
Um die anderen Antworten zu vervollständigen: Ich denke, dass Turing Machine eine bessere Abstraktion dessen ist, was Computer tun, als endliche Automaten. In der Tat besteht der Hauptunterschied zwischen den beiden Modellen darin, dass wir bei endlichen Automaten erwarten, dass Daten, die größer als der Zustandsraum sind, behandelt werden, und dass Turing Machine ein Modell für den umgekehrten Fall (Zustandsraum >> Daten) ist, indem der Zustand erstellt wird Raum unendlich. Diese Unendlichkeit kann als eine Abstraktion von "sehr groß vor der Größe der Daten" wahrgenommen werden. Wenn Sie ein Computerprogramm schreiben, versuchen Sie, aus Gründen der Effizienz Speicherplatz zu sparen, gehen jedoch im Allgemeinen davon aus, dass Sie nicht durch den gesamten Speicherplatz auf dem Computer eingeschränkt werden. Dies ist einer der Gründe, warum Turing Machines eine bessere Abstraktion von Computern sind als endliche Automaten.
quelle
Andrej Bauer gab in den Kommentaren einen wichtigen Grund an:
Lassen Sie mich die anderen Antworten durch einige Punkte vervollständigen, die wahrscheinlich zu offensichtlich waren, um zu erwähnen:
quelle
Ein Formalismus ist nützlich oder nicht, basierend darauf, was die Leute mit dem Formalismus modellieren und verstehen wollen.
Die Turing-Maschine ist ein Formalismus, der zum Verständnis von Programmen hilfreich ist . Programme sind es wert, verstanden zu werden; Die meisten Berechnungen werden von Programmen und nicht von Spezialmaschinen durchgeführt. Mit dem Turing-Maschinenformalismus können wir wichtige reale Belange wie Zeit- und Raumkomplexität modellieren. Es ist weitaus weniger selbstverständlich, diese Begriffe unter Verwendung von Automaten mit endlichen Zuständen zu untersuchen.
Turing-Maschinen sind nicht sehr nützlich, wenn Sie versuchen, die Komplexität der Berechnung endlicher Funktionen zu untersuchen (z. B. Funktionen, deren Domäne aus Eingaben mit einer Länge von höchstens 10 Millionen besteht). Die Komplexität von Schaltkreisen kann die Komplexität von endlichen Funktionen viel besser beschreiben ... Turing-Maschinen waren jedoch wiederum sehr nützlich, um die Komplexität von Schaltkreisen zu verstehen.
Endliche Automaten waren auch nützlich, um die Komplexität von Schaltungen zu verstehen. Alle diese Modelle haben ihren Platz im mathematischen Arsenal.
Ich lehne das Argument ab, dass Automaten mit endlichen Zuständen ein besseres Modell der Realität sind, nur weil reale Computer nur eine begrenzte Anzahl von internen Zuständen haben. Die Untersuchung von Automaten mit endlichen Zuständen befasst sich entscheidend mit Eingaben aus der unendlichen Menge von Zeichenfolgen, wohingegen Computer in der realen Welt nur Eingaben mit einer festgelegten maximalen Länge verarbeiten (es sei denn, Sie glauben, dass wir räumlich in einem unendlichen Universum leben) oder Zeit).
Ein Modell sollte in Bezug auf seine Nützlichkeit beurteilt werden, um die Aspekte der Realität zu verstehen, die uns wichtig sind. Oder (alternativ) in Bezug auf die Nützlichkeit, ein mathematisches Universum zu verstehen, das die Menschen als ausreichend überzeugend empfinden, selbst wenn dieses mathematische Universum keine offensichtliche physikalische Manifestation aufweist.
Turingmaschinen, Zustandsmaschinen und Schaltkreise (und andere Modelle) haben sich alle als nützlich erwiesen.
quelle
Tatsächliche Computer sind keine FSAs. Ein tatsächlicher Computer ist ein universeller Computer in dem Sinne, dass wir einen Computer beschreiben können, den ein Computer emulieren soll, und der Computer wird ihn emulieren. Suchen Sie für viele Beispiele nach "virtueller Maschine".
Es ist möglich, eine Universal-Turing-Maschine zu konstruieren - ein TM, das eine Beschreibung eines anderen TM empfängt, emuliert dann den Betrieb dieses TM an einem bereitgestellten Eingang.
Als Ausgangspunkt für die Literatur kann ich " On the Existence of Universal Finite oder Pushdown Automata " empfehlen , das die Nichtexistenz von Universalautomaten untersucht. Sie können sich auch die Referenzen ansehen (und so weiter).
quelle
Das Besondere an der Turing-Maschine ist, dass sie zwar sehr, sehr einfach ist, aber alle (Klassen von) Algorithmen ausführen kann, die wir uns vorstellen können. Es ist keine leistungsstärkere Maschine bekannt (da sie Algorithmen ausführen kann, zu denen die Turing-Maschine nicht in der Lage ist).
Aufgrund der einfachen Mechanik lässt sich leicht zeigen, ob oder in welchem Maße andere Maschinen einer Turing-Maschine entsprechen. Dies macht es wiederum relativ einfach zu zeigen, ob ein bestimmter Computer (oder eine bestimmte Computersprache) wirklich universell ist (c / f "Turing-complete").
quelle
Während andere Antworten bereits viele relevante Aspekte erwähnt haben, glaube ich, dass der größte Vorteil von Turing-Maschinen gegenüber endlichen Automaten die Trennung von Daten und Programmen ist . Auf diese Weise können Sie ein ziemlich endliches Programm analysieren und Aussagen darüber treffen, wie dieses Programm mit unterschiedlichen Eingaben umgehen würde, ohne die Größe der Eingabe einzuschränken.
Während es theoretisch möglich ist, sowohl einen tatsächlichen Computer als auch so etwas wie eine Turing-Maschine mit endlichem Band als Zustandsmaschine zu beschreiben, ist dies nicht wirklich realisierbar: Die Anzahl der Zustände ist exponentiell in Bezug auf die Speicherkapazität Ihrer Maschine und die allgemeine Endlichkeit Für den Statusautomat-Formalismus müssen Sie die Übergänge zwischen diesen Status explizit auflisten. Für einen allgemeinen Automaten mit endlichen Zuständen dieser Größe ist es daher ziemlich unmöglich, irgendwelche Ableitungen auf der Grundlage einer vollständigen Aufzählung aller Zustandsübergänge vorzunehmen.
Natürlich können Zustandsübergänge in einem echten Computer nicht willkürlich erfolgen. Es gibt keinen Befehl, um ein Drittel der Bits im Speicher in einem einzelnen Schritt der Berechnung auszutauschen. Sie könnten also versuchen, eine kompaktere Spezifikation für die Zustandsübergänge zu finden. So etwas wie die Befehlssatzspezifikation Ihrer Architektur. Echte Computerarchitekturen sind natürlich aus Performancegründen kompliziert, daher können Sie dies mit einem sehr einfachen Befehlssatz weiter vereinfachen, der nur sehr kleine Schritte mit sehr begrenzter Eingabe und Ausgabe ausführt. Am Ende stellen Sie möglicherweise fest, dass Ihre Architektur einem Turing-Maschineninterpreter ähnelt: Verwenden Sie einige Bits Programmcode und ein Bit Eingabe, generieren Sie ein bisschen Ausgabe und bewegen Sie sich in Ihrem Programmcode.
Eine Alternative wäre die Verwendung der Zustände eines Automaten mit endlichen Zuständen, um nur die vom Programm verarbeiteten Daten darzustellen, während das Programm selbst in die Zustandsübergänge codiert wird. Das würde das gleiche Problem mit sich bringen, wie alle Zustände gezählt werden sollen, und eine kompakte Darstellung könnte wieder in der Nähe dessen sein, was eine Turing-Maschine tut.
Insgesamt würde ich sagen, dass eine Turing-Maschine mit endlichen Bändern wahrscheinlich ein besseres Modell für tatsächliche Computer wäre. Bei vielen wissenschaftlichen Fragen ist die Unterscheidung zwischen einem endlichen, aber großen und einem unendlichen Band irrelevant. Wenn Sie also nur ein unendliches Band beanspruchen, wird die Sache einfacher. Bei anderen Fragen steht die Menge des verwendeten Bandes im Mittelpunkt der Frage. Mit dem Modell können Sie jedoch problemlos über den Umfang der Bandnutzung sprechen, ohne angeben zu müssen, was passiert, wenn für die Berechnung kein Band mehr zur Verfügung steht.
quelle
Die meisten Probleme erfordern Turingmaschinen mit begrenzter Größe
Obwohl angenommen wird, dass unbegrenztes Band eine nützliche Vereinfachung darstellt, erfordern die meisten Probleme / Algorithmen tatsächlich eine begrenzte Menge an Band, und die Grenzen des erforderlichen Speichers (möglicherweise abhängig von der Größe der Eingabe) können analysiert und häufig bewiesen werden.
Dies lässt sich auch häufig auf andere Computertypen übertragen (für die gebundene Analysen oder Beweise möglicherweise sehr viel unübersichtlicher sind als auf einer Turing-Maschine) und ermöglicht die Schätzung des für ein bestimmtes Problem erforderlichen temporären Speichers - kann dies in einer festgelegten Menge erfolgen Raum? Proportional zum Eingang? Benötigt es exponentiell viel Platz, wenn die Eingaben zunehmen?
quelle
Ein wichtiges Merkmal von Turing-Maschinen, die von endlichen Automaten nicht gemeinsam genutzt werden, ist, dass sie die zur Lösung des Problems erforderliche Speichermenge an die Größe des Problems anpassen können .
Der Punkt: Viele Probleme haben natürliche Lösungen, die mehr Speicher belegen, je größer das Problem ist. Daher ist es selbstverständlich, diese Lösungen mit Darstellungen zu beschreiben, die unendlichen Speicher verwenden können - nicht, weil eine Instanz unendlich viel davon verwendet, sondern weil es eine Instanz gibt, die jede Menge verwendet. Das geht mit Turingmaschinen, aber auch mit Sequenzen endlicher Automaten.
quelle
Turingmaschinen sind Derivate endlicher Automaten. Turingmaschinen sind praktisch von Nuemann Architektur.
quelle