Ich sehe, dass die meisten Definitionen dessen, was es heißt, vollständig zu sein, bis zu einem gewissen Grad tautologisch sind. Zum Beispiel, wenn Sie Google "Was bedeutet es, Turing vollständig zu sein", erhalten Sie:
Ein Computer ist vollständig, wenn er ein Problem lösen kann, das eine Turing-Maschine ...
Obwohl es sehr gut definiert ist, ob verschiedene Systeme Turing vollständig sind oder nicht, habe ich keine Erklärung dafür gesehen, welche Auswirkungen / Konsequenzen es hat, wenn Turing vollständig ist.
Was kann eine Turing-Maschine tun, wenn es keine Nicht-Turing-Maschine gibt, die dieselbe Aufgabe ausführen kann? Zum Beispiel kann ein Computer einfache Berechnungen durchführen (1+5)/3=?
, aber ein gewöhnlicher Taschenrechner kann sie auch ausführen , was nicht vollständig ist, wenn ich richtig liege.
Gibt es eine Möglichkeit, die Funktionen von Turing Machine zu definieren, ohne nur zu sagen, dass "eine andere Turing Machine simuliert werden kann"?
quelle
Antworten:
Ich überlegte eine Weile, ob ich noch eine Antwort hinzufügen sollte. Die anderen Antworten konzentrieren sich auf die Mitte seiner Frage ("Turing Complete", "Tautology" usw.). Lassen Sie mich den ersten und letzten Teil und damit das größere und leicht philosophische Bild festhalten:
Aber was bedeutet es?
Informell ausgedrückt bedeutet Turing Complete, dass Ihr Mechanismus jeden erdenklichen Algorithmus ausführen kann , unabhängig davon, wie komplex, tief, rekursiv, kompliziert, lang (in Bezug auf Code) er ist und wie viel Speicherplatz oder Zeit benötigt wird benötigt, um es zu bewerten. Es ist selbstverständlich , dass es gelingt nur , wenn das Problem berechenbar ist, aber wenn es ist berechenbar, es wird (Halt) gelingen.
(NB: Um herauszufinden, warum dies "informell" ist, lesen Sie die Church-Turing-These, die in diesem Sinne verfasst ist. Da es sich um eine These handelt, könnte sie jedoch richtig sein oder auch nicht. Dank an @DavidRicherby für wies in einem Kommentar auf diese kleine Lücke hin.)
"Algorithmus" bedeutet das, was wir heute allgemein als Computeralgorithmus verstehen. dh eine Reihe von diskreten Schritten, die den Speicher manipulieren, wobei eine Steuerlogik eingemischt ist. Es ist jedoch nicht wie eine Oracle-Maschine, dh es kann nicht "erraten".
Beispiel für eine praktische Fremdsprache
Wenn Sie sich selbst programmiert haben, kennen Sie wahrscheinlich reguläre Ausdrücke, mit denen Zeichenfolgen einem Muster zugeordnet werden.
Dies ist ein Beispiel für ein Konstrukt, das nicht vollständig ist. Sie können leicht Übungen finden, bei denen es einfach unmöglich ist, einen regulären Ausdruck zu erstellen, der bestimmten Phrasen entspricht.
Zum Beispiel (und dies hat sicherlich viele Programmierer in der tatsächlichen realen Anwendungen geärgert), ist es theoretisch und praktisch unmöglich , einen regulären Ausdruck zu erstellen , die eine Programmiersprache oder ein XML - Dokument übereinstimmt: Es ist unmöglich für eine regexp die Blockstruktur zu finden (
do ... end
oder{ ... }
in Sprachen (Öffnen und Schließen von Tags in XML-Dokumenten), wenn sie beliebig tief sein dürfen. Wenn es dort eine Beschränkung gibt, können Sie beispielsweise nur drei Ebenen der "Rekursion" haben, dann könnten Sie einen regulären Ausdruck finden; aber wenn es nicht begrenzt ist, dann ist es ein No-Go.Da es offensichtlich möglich ist, ein Programm in einer Turing-vollständigen Sprache (wie C) zu erstellen, um den Quellcode zu analysieren (jeder Compiler tut dies), können reguläre Ausdrücke dieses Programm niemals simulieren, daher sind sie per Definition nicht Turing-vollständig
Motivation
Die Idee der Turingmaschine an sich ist nichts Praktisches; Das heißt, Turing hat es sicherlich nicht erfunden, um einen echten Computer oder so etwas zu erschaffen, im Gegensatz zu zum Beispiel Charles Babbage oder von Neumann. Das Konzept der Turing-Maschine ist äußerst einfach. Es besteht fast aus nichts. Es reduziert mögliche (und tatsächliche) Computer auf ein denkbar geringes Maß.
Der Sinn dieser Vereinfachung besteht wiederum darin, dass es so einfach (ish) ist, über theoretische Fragen nachzudenken (wie das Stoppen von Problemen, Komplexitätsklassen und was auch immer sich die theoretische Informatik selbst stört). Ein besonderes Merkmal ist, dass es normalerweise sehr einfach ist, zu überprüfen, ob eine bestimmte Sprache oder ein bestimmter Computer eine Turing-Maschine simulieren kann, indem einfach die Turing-Maschine (was so einfach ist!) In dieser Sprache programmiert wird.
Zur Unendlichkeit
Beachten Sie, dass Sie niemals unendlich viel Zeit oder Speicherplatz benötigen . aber sowohl Zeit als auch Speicher sind unbegrenzt. Sie haben einen Maximalwert für jeden einzelnen berechenbaren Lauf, aber es gibt keine Begrenzung dafür, wie groß dieser Wert werden kann. Die Tatsache, dass einem echten Computer irgendwann der Arbeitsspeicher ausgeht, wird hier beschönigt. Dies ist natürlich eine Grenze für jeden physischen Computer, aber es ist auch offensichtlich und für die theoretische "Rechenleistung" der Maschine nicht von Interesse. Außerdem interessiert es uns überhaupt nicht, wie lange es tatsächlich dauert. Unsere kleine Maschine kann also beliebig viel Zeit und Raum beanspruchen, was sie absolut unpraktisch macht.
... und darüber hinaus
Ein erstaunlicher letzter Punkt ist, dass so eine einfache Sache alles kann, was ein realer Computer im gesamten Universum jemals erreichen könnte (nur sehr viel langsamer) - zumindest soweit wir heute wissen.
quelle
while
- das ist bereits genug, um tc zu sein. Die (Un-) Begrenztheit der Kontrollstruktur ist eines der Schlüsselelemente.Es ist überhaupt nicht tautologisch.
Ein Berechnungsmodell ist Turing-vollständig, wenn es alle Turing-Maschinen simulieren kann, dh es ist mindestens so leistungsfähig wie Turing-Maschinen.
Eine Sache, die Turingmaschinen tun können, ist die Simulation anderer Turingmaschinen (über die universelle Turingmaschine). Das heißt, wenn Ihr Berechnungsmodell Turing-Maschinen nicht simulieren kann, kann es nicht mindestens eines tun, was Turing-Maschinen können, sodass es nicht der Definition entspricht und Turing nicht vollständig ist. Es gibt keine Zirkularität, weil wir die Turing-Vollständigkeit nicht in sich selbst definiert haben: Wir sagten, dass die Turing-Vollständigkeit die Eigenschaft ist, in der Lage zu sein, alles zu tun, was Turing-Maschinen können.
Ich bin mir nicht sicher, was Sie unter "die Fähigkeiten von Turing-Maschinen definieren" verstehen. Die Fähigkeiten werden in Bezug auf den endlichen Automaten definiert, der auf dem unendlichen Band arbeitet. (Ich werde die vollständige Definition nicht wiederholen, aber Sie finden sie z . B. auf Wikipedia .)
quelle
Turings Rechenmodell ist nur eines von vielen äquivalenten Rechenmodellen. Es hat die gleiche Kraft wie Gödels rekursive Funktionen und die etwa zur gleichen Zeit vorgeschlagene Lambda-Rechnung von Church sowie andere Modelle wie die Zeigermaschine. Das können Sie also sagen
Dies funktioniert, da Excel auch vollständig ist. Ich empfehle einen Blick auf die Wikipedia-Seite zur Church-Turing-These und auf ein Übersichtsblatt von Blass und Gurevich, Algorithmen: Eine Suche nach absoluten Definitionen .
In Bezug auf Ihre Frage, was eine Turing-Maschine kann, was eine Nicht-Turing-Maschine nicht kann, hängt die Antwort im Allgemeinen leider von der Nicht-Turing-Maschine ab.
Es ist jedoch möglich, nicht-triviale Begriffe von Turing-vollständigen Problemen zu definieren, zum Beispiel:
Unter dieser Definition sind geeignete Kodierungen des Halteproblems Turing-vollständig, und für eine vernünftige Klasse von Maschinen (abhängig von der Definition von "effizient berechenbar") ist die Maschine Turing-vollständig, wenn sie einige (äquivalent alle) realisieren kann ) Richtungsweisende Sprache.
Es gibt viele andere Turing-vollständige Probleme, die von diesem Formalismus erfasst werden, abhängig von der Definition von "effizient berechenbar", wie beispielsweise das Turing-Korrespondenzproblem und Probleme in Bezug auf Wang-Kacheln und das Spiel des Lebens. Jedes dieser Probleme kann anstelle des Halteproblems als Benchmark fungieren.
quelle
Excel is also Turing-complete.
- Nur wenn Sie Excel unendlich viel Speicher geben können. Excel ist auf 1.048.576 Zeilen und 16.384 Spalten beschränkt, was bei weitem nicht unendlich ist.Zunächst möchte ich darauf hinweisen, dass die Definition der Turing-Vollständigkeit überhaupt nicht tautologisch ist. Ein Rechenmodell nicht nur beweisen Turing-complete ist ein interessantes Ergebnis für sich, sondern ermöglicht es Ihnen auch, alle Ergebnisse der Rechenfähigkeitstheorie sofort auf dieses andere Rechenmodell zu übertragen. Beispiel: 2-Zähler-Maschinen sind Turing-vollständig. Turing-Maschinen können das Problem des Anhaltens nicht lösen, daher können es auch keine 2-Zähler-Maschinen.
Eine solche Klasse enthält jene Funktionen, die "intuitiv berechenbar" sind, dh die von einem Menschen nach einem genauen Algorithmus mit Bleistift und Papier berechnet werden könnten.
Offensichtlich ist "intuitiv berechenbar" keine formale Definition, die Identifikation von "intuitiv berechenbar" mit "Turing berechenbar" ist als "Church-Turing-These" bekannt. Da viele formale Versuche, die Berechenbarkeit zu charakterisieren, letztendlich zu einem Rechenmodell konvergieren, das Turing-vollständig ist, obwohl es niemals einen formalen Beweis für eine solche Behauptung im mathematischen Sinne geben wird, gibt es starke Gründe, dies zu glauben.
quelle
Eine Turing-Maschine kann dieselben Funktionen wie ein universeller Quantencomputer berechnen, der jedes physikalische System simulieren kann:
https://www.cs.princeton.edu/courses/archive/fall04/cos576/papers/deutsch85.pdf
Als solches kann eine Turing-Maschine jede nach den Gesetzen der Physik zulässige Informationsverarbeitung ausführen, obwohl sie eine solche Verarbeitung nicht immer so effizient wie möglich ausführt.
quelle