Perché ci sono più funzioni non calcolabili di quelle calcolabili?


29

Attualmente sto leggendo un libro su algoritmi e complessità. Al momento sto leggendo le funzioni calcolabili e non calcolabili, e il mio libro afferma che ci sono molte più funzioni non calcolabili che calcolabili, in realtà la maggior parte non è calcolabile dice. In un certo senso posso accettarlo intuitivamente, ma il libro non fornisce una prova formale né elabora molto l'argomento.

Volevo solo vedere una prova / lasciare che qualcuno qui approfondisse / capire più rigorosamente perché ci sono molte più funzioni non calcolabili rispetto a quelle calcolabili.


Quando si confrontano due insiemi infiniti, la semantica di "altro" deve essere rivista.
Raffaello

Risposte:


31

L'sono numerabile molte funzioni computabili:

Ogni funzione calcolabile ha almeno un algoritmo. Ogni algoritmo ha una descrizione finita usando i simboli di un insieme finito, ad esempio stringhe binarie finite usando i simboli . Il numero di stringhe binarie finite indicato da è numerabile (cioè uguale al numero di numeri naturali ).{ 0 , 1 } N{0,1}{0,1}N

Pertanto possono esserci al massimo numerose funzioni calcolabili. Ci sono almeno molte funzioni calcolabili numerabili poiché per ogni , la funzione costante è calcolabile. f ( x ) = cc{0,1}f(x)=c

In altre parole, esiste una corrispondenza tra:

  • l'insieme di funzioni calcolabili,
  • il set di algoritmi,
  • { 0 , 1 }{0,1} , l'insieme di stringhe finite da e{0,1}
  • N , l'insieme dei numeri naturali.

D'altra parte, ci sono innumerevoli funzioni su stringhe (o numeri naturali). Una funzione (oppure ) assegna un valore per ciascun input. Ognuno di questi valori può essere scelto indipendentemente dagli altri. Quindi ci sono possibile funzione. Il numero di funzioni sui numeri naturali è uguale al numero di numeri reali. f : { 0 , 1 } { 0 , 1 } N N = 2 Nf:NNf:{0,1}{0,1}NN=2N

Poiché solo molte funzioni sono calcolabili, la maggior parte di esse non lo è. In effetti il ​​numero di funzioni non calcolabili è anche .2N

Se vuoi immaginarlo in modo intuitivo, pensa ai numeri naturali e ai numeri reali, o alle stringhe binarie finite e alle stringhe binarie infinite. Esistono molti più numeri reali e stringhe binarie infinite rispetto ai numeri naturali e alle stringhe finite. In altre parole (per una prova di questo fatto vedi l'argomentazione diagonale di Cantor e l' aritmetica cardinale ).N<2N


Buona risposta! Quello che non capisco (potrei perdere qualcosa di banale qui) è come ottieni ? NN=2N
hsalin,

È l'aritmetica cardinale. Scrivi i numeri naturali in una sequenza infinita di numeri naturali in binario, che dovrebbe dare l'intuizione.
Kaveh,

Perché questo presupposto è vero: "Ogni algoritmo ha una descrizione finita usando i simboli di un insieme finito"? Perché un algoritmo non può avere una descrizione infinita?
Roland Pihlakas,

@RolandPihlakas che fa parte della definizione di un algoritmo (se preferisci, un programma per computer).
Kaveh,

9

K

F={f:N{0,1}:xN,f(2x)=K(x)}.
fFF

Esiste una costruzione simile con funzioni calcolabili. Data una funzione calcolabile , sia In altre parole, se differisce da su valori finitamente molti. Tutte le funzioni in sono calcolabili (hard-code le differenze finitamente molte). Contrariamente alla situazione precedente, è numerabile.G = { g : N{ 0 , 1 } : n Nm n , g ( m ) = R ( m ) . } g G R G GR

G={g:N{0,1}:nNmn,g(m)=R(m).}
gGRGG

Quindi ci sono molte funzioni non calcolabili dal momento che abbiamo "infinitamente molti" gradi di libertà - l'infinito reale piuttosto che l'infinito "potenziale" come nel caso calcolabile.

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.