Complessità di Kolmogorov: Perché avresti bisogno di più byte della stringa stessa?


Risposte:


13

Il valore esatto della complessità di Kolmogorov dipende dalla lingua scelta per rappresentare le stringhe. Questa lingua deve essere Turing completa, quindi rappresentare tutte le stringhe come esse stesse non è un'opzione.

Secondo il principio del buco del piccione, se c'è almeno una stringa di lunghezza al massimo cui rappresentazione è più corta di se stessa, allora c'è anche almeno una stringa di lunghezza al massimo n la cui rappresentazione è più lunga di se stessa. (La rappresentazione è un algoritmo di compressione.)nn

Puoi avere un linguaggio descrittivo in cui ogni stringa ha una rappresentazione che sia al massimo un po 'più lunga di se stessa: avvia ogni rappresentazione con un bit che indica "stampa letteralmente" o "interpreta". Tuttavia, non tutte le lingue descrittive sono così semplici.

CC


6

La descrizione di una stringa considerata qui è un input per alcune macchine universali di Turing. Puoi pensarlo come un programma C. La stringa hello worldnon, di per sé, formano un programma C, ma la successiva fa: int main(int argc, char *argv[]) { printf("hello world"); }. Come puoi vedere, l'overhead è costante ma non zero.


3
Come sottigliezza aggiuntiva, non è possibile in C (o in una C idealizzata completa di Turing) stampare stringhe arbitrarie con O (1) spazio in testa, perché alcuni caratteri nei letterali delle stringhe devono essere citati.
Gilles 'SO- smetti di essere malvagio' il
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.