Ich habe gehört, das Motto Interaktion ist mächtiger als Algorithmen von Peter Wegner . Die Grundlage der Idee ist, dass eine (klassische) Turing-Maschine keine Interaktion, dh keine Kommunikation (Eingabe / Ausgabe) mit der Außenwelt / Umgebung, bewältigen kann.
Wie kann das so sein? Wie kann etwas leistungsfähiger sein als eine Turingmaschine? Was ist das Wesentliche dieser Geschichte? Warum ist es nicht bekannter?
computability
computation-models
Dave Clarke
quelle
quelle
Antworten:
Turingmaschinen können mit Orakelbändern problemlos mit Interaktionen umgehen. Es funktioniert folgendermaßen: Aus der Sicht eines Computers, der die Interaktion handhabt, ist die Eingabe des Operators einfach eine andere Folge von Bits, die er von Zeit zu Zeit an den Computer sendet. Wir alle wissen, dass ein fauler Sysadmin ein Skript schreiben kann, um die Eingabe an das Programm zu senden, wenn es angefordert wird, sodass der Sysadmin früher in die Pause gehen kann. Die Interaktionsmaschine kann nicht wissen, ob sich tatsächlich ein Live-Operator an der Konsole befindet oder ob die Eingabe von einem anderen Programm weitergeleitet wird.
Wenn alle Interaktionseingaben im Voraus vorbereitet werden, entspricht dies theoretisch den Eingaben auf einem separaten Band, das von einer Oracle Turing-Maschine verwendet wird. Wann immer der Computer normalerweise eine Interaktion vom Bediener anfordert, liest das Gerät stattdessen vom Eingabeband. Wenn das vom Band gelesene Ding in irgendeiner Weise ungültig erscheint, tut die Turing-Maschine genau das, was die Interaktionsmaschine beim Empfang dieser Eingabe tun würde.
Ich würde vermuten, dass Wagner sich der Fähigkeit bewusst ist, Orakelbänder für die Codeeingabe zu verwenden. Sie müssen also seine Kommentare mit einem Körnchen Salz auffassen oder sich fragen, was er eigentlich meint. Ich glaube, dass Menschen, die über Interaktion nachdenken, im Allgemeinen zwei Dinge befürchten:
"Echte" Computer haben eine Interaktion, Algorithmen, wie sie von Turing definiert wurden, jedoch nicht. Wir können dies umgehen, indem wir die Eingabe auf Oracle-Bändern codieren, aber dies entspricht immer noch nicht der Art und Weise, wie echte Computer funktionieren. Es könnte hilfreich sein, Rechenmodelle zu studieren, die näher an realen Computern ausgerichtet sind.
Oracle-basierte Algorithmen werden in der täglichen Arbeit kaum berücksichtigt, da normale Computer kein magisches "Orakel" für die Datenbereitstellung besitzen. Aber vielleicht können wir tatsächlich nur eine Person als Orakel benutzen. Wenn die Person die angeforderten Daten versteht, kann sie dem Algorithmus möglicherweise sogar weiterhelfen und so seine Leistung verbessern. Mit anderen Worten, ein Mensch ist möglicherweise in der Lage, ein nützliches Orakelband anstelle eines zufälligen zur Verfügung zu stellen, und dies kann prinzipiell zu schnelleren oder leistungsstärkeren Rechenmethoden führen als bei nicht auf Orakel basierenden. Ähnliches passiert schließlich beim randomisierten Rechnen, bei dem die Maschine eine Folge von Zufallsbits als zusätzliche Eingabe erhält.
quelle
Turning Machines Modellberechnung, und haben kein Konzept der Interaktion. In diesem Sinne kann eine Maschine, die die Interaktion mit einem externen System unterstützt, Dinge tun, die eine Drehmaschine nicht kann. Aber die Berechnung zwischen Eingaben von einer externen Quelle kann natürlich immer von einer Turing-Maschine modelliert werden, so dass selbst eine "IO-Maschine" mit Eingaben von außen nichts anfangen kann, was eine Turing-Maschine nicht kann.
In gewissem Sinne ist eine solche Maschine möglicherweise in der Lage, Probleme zu "entscheiden", die von Turing Machines nicht entschieden werden können, aber nur, wenn Sie sich vorstellen, dass das System, mit dem sie interagiert, über Super-Turing-Machine-Kräfte verfügt und zuverlässig ist (in gewisser Weise wahrscheinlichkeitstheoretische Zuverlässigkeit) wäre genug).
Stellen Sie sich ein Programm für eine IO-Maschine vor wie: "Drucken Sie für eine anfängliche Bandeingabe den Bandinhalt aus und lesen Sie dann ein Symbol von einer externen Eingabe. Akzeptieren Sie, wenn das Symbol 1 ist, und lehnen Sie dies ab." Dieses Programm kann jedes Problem entscheiden . Aber nur wenn das externe System, mit dem es interagieren kann, in der Lage ist, das Problem zu entscheiden; Für mich ist das keine sehr interessante Art zu sagen, dass die IO-Maschine von in der Lage ist, Probleme zu entscheiden, die von Turing Machines nicht entschieden werden können.
Ich denke, es wäre immer möglich, eine interaktive Berechnung darzustellen, indem man sich eine Maschine vorstellt, die auf ihrem Band eine Codierung einer früheren Konfiguration zusammen mit einer externen Eingabe als Eingabe verwendet und die Maschine anhält, während ihr Band eine Codierung einer Konfiguration zusammen enthält mit Ausgabe. Der Vorgang "Ausführen eines Programms" führt diese Turing-Maschine dann wiederholt auf mechanische Weise aus, wobei der einzige "nicht-mechanische" Teil jedoch die Eingabe von außen ist. Ich bin mir sicher, dass Sie das beweisen könnten, wenn ein solches System seine Eingabe erhalten würde, indem Sie seine Ausgabe an eine andere Turing-Maschine weitergebenWenn das kombinierte System auf ähnliche Weise eingerichtet ist, verfügt es über identische Rechenfähigkeiten wie eine einzelne Turing-Maschine. Ich finde, dass ein überzeugendes Argument, dass interaktive Berechnung nicht leistungsfähiger ist als nicht interaktive Berechnung, es sei denn, das System, mit dem die Berechnung interagiert, ist leistungsfähiger als eine Turing-Maschine .
Es gibt jedoch einen nicht-theoretischen Sinn, in dem Interaktivität dazu beitragen kann, dass ein Computer Probleme lösen kann. Es gibt viele Dinge, die Menschen sehr genau tun, und wir wissen nicht, wie wir Computer dazu bringen können, sehr gut zu funktionieren. Aber es gibt auch viele Dinge, bei denen Menschen Unsinn sind und bei denen wir Computer dazu bringen können, dies zu tun. Die Kombination dieser beiden Faktoren kann zu Projekten wie reCaptcha führen , bei dem Bücher automatisch digitalisiert werden, indem die Probleme der Erkennung von Wörtern für Menschen in schwierigen Fällen vermieden werden. Das sich ergebende System von Computer + menschlicher Arbeit erzielt ein Ergebnis, das gegenwärtig entweder mit der Berechnung alleine oder mit der menschlichen Arbeit alleine nicht zu erreichen ist.
quelle
Kürzlich veranstaltete ACM ein Ubiquity-Symposium zum Thema " Was ist Berechnung?". ', in dem Peter Wegner einen Artikel veröffentlichte, der seine Ansichten zu Interactive Computing widerspiegelt.
Hier zwei Auszüge aus dem Artikel von Peter Wegner:
Fortnow, der einen Artikel im selben Symposium verfasst hat, scheint jedoch mit den Ansichten von Wegner nicht einverstanden zu sein und ist der Ansicht, dass interaktives Computing keine zusätzliche Macht über Turing Machines bietet.
Um die Mischung zu ergänzen, scheint es, dass wir immer noch über Berechnungen diskutieren und sie definieren. Moshe Vardi hat einen Artikel, Was ist ein Algorithmus? Nr. 3, März 2012.
Vardi berichtet über zwei neue Definitionen von Algorithmen. Das erste wird von Gurevich und das zweite von Moschovakis vorgeschlagen.
quelle
Ich denke nicht, dass Modelle mit IO "leistungsstärker" sind als Turing-Maschinen, sie modellieren nur verschiedene Dinge.
Theoretisch könnten Sie IO als (lautes?) Orakel ansehen. Mit einem perfekten Orakel können Sie Turing-unberechenbare Funktionen rechnen; aber woher kommt das Orakel? Menschen sind die einzige "Super-Turing" Wahl (wenn es welche gibt) und wir sind dafür bekannt, sehr unzuverlässig zu sein.
Eine Klasse von Programmen, die zu diesem Modell passen, sind interaktive Proofassistenten (z. B. Isabelle / HOL , Coq ). Sie befassen sich mit unentscheidbaren Beweisräumen, aber (wohl) jeder Beweis kann durch geeignete Benutzereingaben gefunden (und überprüft) werden.
quelle
Check this out :) " Turings Ideen und Berechnungsmodelle " https://www.cs.montana.edu/~elser/turing%20papers/Turing%27s%20Ideas%20and%20Models%20of%20Computation.pdf
quelle