Come provare l'esistenza di un numero che non può essere scritto da nessun algoritmo?


14

Ho il problema:

Mostra che esiste un numero reale per il quale non esiste un programma che funziona in modo infinitamente lungo e scrive le cifre decimali di quel numero.

Suppongo che possa essere risolto riducendolo al problema di Halting, ma non ho idea di come farlo.

Gradirei anche collegamenti a problemi simili per ulteriori pratiche.




Yuval Filmus ha fornito una risposta interessante che dovresti leggere attentamente. Il problema dell'arresto "è la cosa" che potresti tentare di ridurre al problema, non viceversa (riduci il problema all'arresto - come ipotizzi nella tua domanda).
quetzalcoatl

Questa domanda potrebbe essere migliorata correggendo la grammatica nella sezione citata? Trovo davvero difficile analizzare.
JimmyJames

@JimmyJames, ho fatto del mio meglio per tradurla dal russo: Объясните в одно предложение, почему существует такое вещественное число, для которого не существует программы, которая будет работать бесконечно долго и выписывать цифры его представления в десятичной системе счисления. Spero che qualcuno possa migliorare la mia traduzione.
aggiornato

Risposte:


18

Come indica Sebastian, ci sono solo (infintamente ma) numerosamente molti programmi. Elencali per creare un elenco di programmi. L'elenco è (infinitamente ma) numerosamente lungo. Ogni programma genera un numero in R. Da questo possiamo creare un elenco (infinito ma) numerabile di numeri in R. Ora possiamo applicare direttamente l' argomento diagonale di Cantor per dimostrare che devono esserci ancora altri numeri.

A proposito se l'algoritmo ha argomenti (finiti), puoi semplicemente riscriverlo come un elenco "più lungo" di programmi in cui ogni programma non ha argomenti.

Per quanto riguarda il tuo commento "Che cosa succede se i numeri reali sono ammessi come argomento", allora la premessa della domanda è sbagliata: tutti i numeri in R possono quindi essere generati. Se qualcuno trova un numero, dì 皮 e afferma che non può essere calcolato, abbiamo il seguente "algoritmo":

func(number):
    return number

e chiama func (皮)


17

In realtà è molto più semplice. C'è solo un numero numerabile di algoritmi. Eppure ci sono innumerevoli numeri reali. Quindi se provi ad accoppiarli, alcuni numeri reali rimarranno sospesi.



1

Il numero è un numero infinitamente lungo che dopo il punto decimale codifica comunque tutte le macchine di turing che non si fermano. Con questo numero, saresti in grado di risolvere il problema di arresto.

Puoi "cercare" il numero TM nel numero ed eseguirlo in parallelo. Se TM si ferma, si ferma. In caso contrario, "troverai il suo codice nel numero".

Esistono molte modifiche alla prova e dovresti essere in grado di riprodurle dopo la prima lezione di complessità :-)


Questo è strettamente correlato alla costante di Chaitin .
David Richerby,

sì, amico molto più facile da capire ...
smrt28

-2

Un punto si sposta in un tracciato con la funzione y = 2x. Quando l'ascissa è un numero non calcolabile, non c'è modo per il Punto di calcolare il suo percorso, ma sappiamo che continua. Quindi possono esistere numeri non calcolabili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.