Complexité de Kolmogorov: Pourquoi auriez-vous besoin de plus d'octets que la chaîne elle-même?

Réponses:

13

La valeur exacte de la complexité de Kolmogorov dépend de la langue choisie pour représenter les chaînes. Ce langage doit être complet de Turing, donc représenter toutes les chaînes comme elles-mêmes n'est pas une option.

Selon le principe du pigeonhole, s'il y a au moins une chaîne de longueur au plus dont la représentation est plus courte qu'elle-même, alors il y a aussi au moins une chaîne de longueur au plus n dont la représentation est plus longue qu'elle-même. (La représentation est un algorithme de compression.)nn

Vous pouvez avoir un langage de description où chaque chaîne a une représentation qui est au plus un bit plus longue que lui-même: commencez chaque représentation avec un bit qui indique soit «imprimer littéralement» ou «interpréter». Cependant, tous les langages de description ne sont pas aussi simples.

CC

Gilles 'SO- arrête d'être méchant'
la source
6

La description d'une chaîne considérée ici est une entrée pour une machine de Turing universelle. Vous pouvez le considérer comme un programme C. La chaîne hello worldn'a pas, par lui - même, forment un programme C, mais celui qui suit fait: int main(int argc, char *argv[]) { printf("hello world"); }. Comme vous pouvez le voir, la surcharge est constante mais pas nulle.

Yuval Filmus
la source
3
Comme subtilité supplémentaire, il n'est pas possible en C (ou dans un C idéalisé de Turing-complet) d'imprimer des chaînes arbitraires avec un espace supplémentaire de O (1), car certains caractères des chaînes littérales doivent être cités.
Gilles 'SO- arrête d'être méchant'