Dies ist ein Follow-up von einer anderen Frage hier , und ich hoffe , dass es nicht zu philosophisch ist. Wie Raphael in einem Kommentar zu meiner vorherigen Frage betonte, verstehe ich die Definition von "berechenbar" nicht wirklich, aber nach einigen von mir gelesenen Artikeln ist die Definition auch nicht wirklich klar, wenn es um Rechenmodelle geht, die schwächer sind als Turing Maschinen wegen der Kodierung der Ein- und Ausgabe.
Die typische Definition von turing computable lautet wie folgt:
Definition 1: Eine Funktion heißt turing berechenbar, wenn es eine turingmaschine , die Verwendung einer geeigneten Codierung der natürlichen Zahlen als Zeichenfolgen berechnet .f
Die Definitionen unterscheiden sich darin, was genau eine geeignete Codierung ist, aber die meisten beziehen sich auf Binärcodierung , unäre Codierung oder Dezimalcodierung als die eine feste und geeignete Codierung. Es kann auch gezeigt werden, dass das Festlegen einer Codierung für die Definition der Berechenbarkeit erforderlich ist. Aber was macht beispielsweise die binäre Codierung natürlicher Zahlen so besonders, dass wir sie als die geeignete Codierung axiomatisieren können? Wahrscheinlich, weil es der intuitiven Vorstellung entspricht, was Berechenbarkeit zufällig bedeutet .
Was ist nun, wenn wir schwächere Rechenmodelle betrachten als Maschinen? Betrachten wir zum Beispiel die Menge von "verkrüppelten" Turingmaschinen mit dem Alphabet die sich möglicherweise nur nach rechts bewegen, und eine Definition der verkrüppelten Turing-Berechenbarkeit, die mit der der Turing-Berechenbarkeit übereinstimmt: { 0 , 1 }
Definition 2: Eine Funktion wird in als verkrüppelte Turing-Berechenbare oder berechenbare wenn es eine verkrüppelte Turing-Maschine , die Verwendung einer geeigneten Codierung der natürlichen Zahlen als berechnet ein Faden.M c M f
Wenn wir "geeignete Codierung" als "binäre Codierung" zu definieren, dann ist die Funktion ist nicht berechenbar in . Wenn wir „geeignete Codierung“ als „einstellige Codierung“ axiomatisieren, dann ist berechenbar in . Dies erscheint unangenehm, da jeder eine der unendlich vielen intuitiven Codierungen nach Belieben korrigieren kann. Es sollte klar sein, ob ein Rechenmodell berechnen kann oder nicht, ohne auf eine bestimmte Codierung Bezug zu nehmen - zumindest habe ich noch nie jemanden gesehen, der erwähnt, welche Codierung verwendet wird, wenn angegeben wird, dass "Schleifenprogramme schwächer sind als Turing-Maschinen".M c f M c f
Nach dieser Einführung kann ich endlich meine Frage formulieren: Wie würde man "geeignete Codierungen" und "Berechenbarkeit" für beliebige Berechnungsmodelle definieren, die nicht mit dem intuitiven Begriff der Berechenbarkeit übereinstimmen? Ist dies im Rahmen der Berechenbarkeit möglich?
Bearbeiten: Ich habe die Einführung gekürzt, sie hat die Frage nicht ergänzt.