Um die "Es ist unmöglich" -Aussagen etwas näher zu erläutern, hier eine einfache Beweisskizze.
Wir können Algorithmen mit Ausgabe von Turing Machines modellieren, die mit der Ausgabe auf ihrem Band anhalten. Wenn Sie Maschinen haben möchten, die anhalten können, indem Sie entweder die Ausgabe auf dem Band annehmen oder ablehnen (in diesem Fall gibt es keine Ausgabe), können Sie leicht eine Codierung erstellen, mit der Sie diese Maschinen mit der Option "anhalten oder nicht anhalten" modellieren können. Es gibt keine "Ausschuss" -Maschinen.
Angenommen , ich habe einen Algorithmus P, um zu bestimmen, ob zwei solcher TMs für jeden Eingang den gleichen Ausgang haben. Dann kann ich mit einem TM A und einer Eingabe X ein neues TM B konstruieren , das wie folgt funktioniert:
- Überprüfen Sie, ob die Eingabe genau X ist
- Wenn ja, geben Sie eine Endlosschleife ein
- Wenn nein, führen Sie A für die Eingabe aus
Jetzt kann ich P auf A und B ausführen . B hält nicht an X an , sondern hat dieselbe Ausgabe wie A für alle anderen Eingaben. Wenn A also nicht an X anhält, haben diese beiden Algorithmen für jede Eingabe dieselbe Ausgabe. Es wurde jedoch angenommen, dass P in der Lage ist, zu erkennen, ob zwei Algorithmen für jede Eingabe dieselbe Ausgabe haben. Wenn wir also P hätten , könnten wir feststellen, ob eine beliebige Maschine bei einer beliebigen Eingabe anhält, was das Halteproblem ist. Da das Halteproblem als unentscheidbar bekannt ist, kann P nicht existieren.
Dies bedeutet, dass es keinen allgemeinen (berechenbaren) Ansatz gibt, um zu bestimmen, ob zwei Algorithmen die gleiche Ausgabe haben, die immer funktioniert. Daher müssen Sie die Argumentation speziell auf das zu analysierende Algorithmenpaar anwenden. In der Praxis kann es jedoch berechenbare Ansätze geben, die für große Klassen von Algorithmen funktionieren, und es gibt sicherlich Techniken, mit denen Sie versuchen können, einen Beweis für einen bestimmten Fall zu erarbeiten. Die Antwort von Dave Clarke gibt Ihnen einige relevante Dinge, die Sie hier ansehen sollten. Das Ergebnis "Unmöglichkeit" gilt nur für die Entwicklung einer generischen Methode, die das Problem für alle Algorithmenpaare ein für alle Mal löst.