Wie kann man die Existenz einer Zahl beweisen, die von keinem Algorithmus geschrieben werden kann?

14

Ich habe das problem:

Zeigen Sie, dass es eine reelle Zahl gibt, für die kein Programm existiert, das unendlich lange läuft und die Dezimalstellen dieser Zahl schreibt.

Ich nehme an, es kann gelöst werden, indem man es auf das Halting-Problem reduziert, aber ich habe keine Ahnung, wie ich das tun soll.

Ich würde mich auch über Links zu ähnlichen Problemen für die weitere Praxis freuen.

erfrischt
quelle
Yuval Filmus hat eine interessante Antwort geliefert, die Sie sorgfältig lesen sollten. Das Problem des Anhaltens "ist die Sache", die Sie möglicherweise versuchen, auf Ihr Problem zu reduzieren , und nicht umgekehrt (reduzieren Sie Ihr Problem auf Anhalten - wie Sie in Ihrer Frage annehmen).
Quetzalcoatl
Könnte diese Frage durch Korrigieren der Grammatik im angegebenen Abschnitt verbessert werden? Ich finde es wirklich schwierig zu analysieren.
JimmyJames
@JimmyJames, tat ich mein Bestes , um es aus dem Russischen übersetzt: Объясните в одно предложение, почему существует такое вещественное число, для которого не существует программы, которая будет работать бесконечно долго и выписывать цифры его представления в десятичной системе счисления. Hoffe, jemand wird meine Übersetzung verbessern.
Erfrischt

Antworten:

18

Wie Sebastian angibt, gibt es nur (unendlich aber) zählbar viele Programme. Listen Sie sie auf, um eine Liste von Programmen zu erstellen. Die Liste ist (unendlich aber) zählbar lang. Jedes Programm erzeugt eine Zahl in R. Daraus können wir eine (unendlich aber) abzählbare Liste von Zahlen in R erstellen. Jetzt können wir Cantors diagonales Argument direkt anwenden, um zu beweisen, dass es noch andere Zahlen geben muss.

Übrigens, wenn der Algorithmus (endliche) Argumente hat, können Sie dies einfach als "längere" Liste von Programmen umschreiben, bei denen jedes Programm keine Argumente hat.

In Bezug auf Ihren Kommentar "Was ist, wenn reelle Zahlen als Argument zulässig sind?" Ist die Prämisse der Frage falsch: Alle Zahlen in R können dann generiert werden. Wenn jemand eine Zahl findet, sagen wir 皮 und behaupten, dass sie nicht berechnet werden kann, haben wir den folgenden "Algorithmus":

func(number):
    return number

und ruf func (皮) an

Albert Hendriks
quelle
17

Es ist eigentlich viel einfacher. Es gibt nur eine abzählbare Anzahl von Algorithmen. Dennoch gibt es unzählige reelle Zahlen. Wenn Sie also versuchen, sie zu verbinden, bleiben einige reelle Zahlen hängen.

Sebastian Oberhoff
quelle
9

k1k0

Yuval Filmus
quelle
1

Die Zahl ist eine unendlich lange Zahl, die nach dem Komma jedenfalls alle Turingmaschinen codiert, die nicht anhalten. Mit dieser Nummer könnten Sie das Halteproblem lösen.

Sie können das TM in der Nummer "suchen" und parallel ausführen. Wenn TM anhält, hält es an. Wenn nicht, würden Sie "seinen Code in der Nummer finden".

Es gibt viele Modifikationen des Beweises und Sie sollten in der Lage sein, sie nach der ersten Komplexitätsstunde zu reproduzieren :-)

smrt28
quelle
Dies hängt eng mit Chaitins Konstante zusammen .
David Richerby
yah, bud viel einfacher zu verstehen ...
smrt28
-2

Ein Punkt bewegt sich auf einem Pfad um die Funktion y = 2x. Wenn die Abszisse eine nicht berechenbare Zahl ist, gibt es keine Möglichkeit für den Punkt, seinen Pfad zu berechnen, aber wir wissen, dass es weitergeht. Es können also überhaupt nicht berechenbare Zahlen existieren.

Valmir
quelle