title: Complessità di Kolmogorov
text: # Complessità di Kolmogorov
  
  Nella teoria algoritmica dell'informazione, la complessità di Kolmogorov (dal nome del matematico russo A. N. Kolmogorov) di un oggetto (assumendo che possa essere rappresentato come una sequenza di bit, per esempio un pezzo di testo), è la lunghezza del più breve programma informatico (in un dato linguaggio di programmazione) che produca l'oggetto come output. Una definizione alternativa è: la quantità di informazione contenuta in una data sequenza x espressa come la lunghezza del più breve programma che stampa x e si arresta.
  
  ## Concetto generale
  
  Supponiamo sia data una stringa come 111111 ... che vada avanti cento volte nello stesso modo, la lunghezza della stringa sarebbe di 100 caratteri ma si può scrivere un breve programma che lo genera molto facilmente:
  
  Si consideri ora la stringa "231048322087232 .." e così via per cento cifre. La si supponga essere una stringa casuale, allora sarebbe difficile creare un programma più corto della stringa stessa in grado di stamparla. In altre parole, non c'è modo di specificare questa stringa dall'aspetto casuale se non citandola cifra per cifra. Questa osservazione della differenza tra queste due stringhe è ciò che conduce all'idea della complessità di Kolmogorov. La prima stringa può essere generata da un programma con circa 30 caratteri, e quindi si può dire che ha 30 byte di informazione, ma la seconda stringa richiede un programma di almeno cento caratteri per citare tutte le cifre come un letterali e così ha informazione da 100 byte. Chiaramente il numero di byte necessari per un programma che ne stampa cento non è un numero ben definito, dipende dal linguaggio di programmazione che si usa. Tuttavia, in qualsiasi linguaggio di programmazione possiamo definire la complessità di Kolomogorov come la lunghezza del programma più piccolo che genera la stringa in questione. Quindi la complessità è definita rispetto a un determinato linguaggio di descrizione. Per le stringhe infinite le cose sono un po' più interessanti perché, se non si dispone di un programma che genererà la stringa, in pratica non si ha la stringa in alcun senso pratico. Cioè, senza un programma che genera le cifre di una sequenza infinita non si può effettivamente definire la stringa.
  
  