Mostra che ci sono infiniti problemi in più di quanti saremo mai in grado di calcolare


8

Stavo guardando questa lettura del MIT sulla complessità computazionale e al minuto 15:00 Erik Demaine si imbarca in una dimostrazione per mostrare ciò che è affermato nel titolo di questa domanda. Comunque non posso seguire il suo ragionamento, in pratica quello che dice è questo:
possiamo affermare un problema di decisione come una serie di0 e 1che in pratica è la tabella di verità della funzione.
Continua dicendo che un problema di decisione è una stringa infinita di bit mentre un programma è una stringa finita di bit e fino a qui nessun problema. Ciò che non capisco è la continuazione della dimostrazione da questo punto in poi: problemi di decisione sono presentiR perché puoi mettere un punto decimale prima della stringa che rappresenta il problema, ottenendo così la parte decimale di un reale

 for example if you have 0111011010101010101... it could become x.0111011010101010101... 

Un programma è "solo" un numero intero in Nperché è una stringa finita di bit. Il punto che non riesco a capire è come sia possibile che un problema decisionale sia paragonabile a un numero reale anziché a un numero intero ... Voglio dire, se usiamo l'argomento "metti un punto davanti al numero" non potrebbe lo stesso ragionamento si applica anche al numero di possibili algoritmi che possano mai essere prodotti?


11
Il punto è che il numero di algoritmi è numerabile, mentre il numero di problemi decisionali non è numerabile. Suggerisco di cercare questi termini in un libro di testo sulla teoria dell'insieme elementare.
Yuval Filmus,

1
@Yuval Filmus Sono perfettamente consapevole del significato di questi termini, ciò che faccio fatica ad assimilare è la ragione di queste diverse cardinalità (algoritmi / problemi di decisione).
Yamar69,

1
@JimmyB la stessa affermazione è vera per i numeri razionali, ma i numeri razionali sono ancora numerabili (avendo la stessa "dimensione" degli interi) mentre i numeri reali non lo sono.
Gregory J. Puleo,

1
Ancora più interessante forse, ci sono infiniti problemi di decisione finemente specificati che non possono essere decisi da nessuna macchina di Turing. Non hai bisogno di fare appello a insiemi non numerabili per ottenere la conclusione che ci sono infiniti problemi algoritmicamente irrisolvibili. Non è necessaria l'incountabilità dei numeri reali per concludere che l'insieme dei numeri reali calcolabili ha un complemento infinito.
John Coleman,

1
"... di quanto saremo mai in grado di calcolare" suggerisce che i problemi che possiamo calcolare variano nel tempo. La definizione di "calcolabile" non dipende dal tempo.
David Richerby,

Risposte:


9

Se ti capisco correttamente, la tua domanda è: perché una soluzione può essere codificata da un numero naturale e un problema con un numero reale. (Presumo che tu capisca la fase successiva della prova che si basa sulla differenza tra insiemi di cardinalitàc e 0.)

La ragione sta nella teoria degli insiemi, più specificamente nella cardinalità di insiemi diversi. Conta il numero di programmi: è la dimensione delle diverse stringhe di una lingua specifica o di un set di caratteri (ad esempio ASCII). Questa dimensione è equivalente alla dimensione del setN(numeri naturali). (Ogni stringa può essere rappresentata come il suo valore calcolato dalla sua rappresentazione binaria.)

Ma contando il numero di funzioni dai numeri naturali (o stringhe che li rappresentano) a {0,1}bene, questa è una storia completamente diversa, e qui abbiamo a che fare con differenze di dimensioni tra due serie infinite; la dimensione di questo set è più grande. C'è una bella prova che si basa sul fatto che le funzioni daNa tutti i set di cui sopra non può essere "su", il che porta alla conclusione della differenza di cardinalità. Puoi leggere la prova qui .


11

Riformulando in un modo matematicamente più preciso, ciò che il docente sta cercando di dire è questo: qualsiasi algoritmo può essere (in modo univoco) codificato come una stringa finita di bit e qualsiasi stringa finita di bit (in modo univoco) codifica un programma; quindi, c'è una biiezione traNe l'insieme di algoritmi, quindi entrambi sono insiemi numerabili. Al contrario, dopo aver corretto un ordinamento di stringhe, qualsiasi problema di decisioneP può essere (in modo univoco) codificato come una stringa infinita di bit, dove il file io-th bit indica se il io-th string è dentro Poppure no, e qualsiasi stringa infinita di bit (in modo univoco) codifica un problema decisionale (nello stesso modo); quindi,R e l'insieme dei problemi decisionali sono insiemi non numerabili.


6

Ogni algoritmo può essere descritto da una stringa finita, e quindi ci sono solo numerosi algoritmi. Al contrario, possiamo descrivere ogni problema decisionale come un decimale infinito nella base 2, e inoltre questa è una mappatura suriettiva : ogni numero in[0,1]può essere "decodificato" in un problema decisionale. Pertanto ci sono innumerevoli problemi di decisione.

L'argomento di decodifica non funziona per gli algoritmi - mentre ogni algoritmo corrisponde a un decimale finito, questo non copre tutto [0,1], ma solo un sottoinsieme numerabile di esso.

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.