Complexidade de Kolmogorov: Por que você precisaria de mais bytes do que a própria string?

Respostas:

13

O valor exato da complexidade de Kolmogorov depende do idioma escolhido para representar as strings. Esse idioma precisa ser Turing completo, portanto, representar todas as strings como elas mesmas não é uma opção.

Pelo princípio do pigeonhole, se houver pelo menos uma cadeia de comprimento no máximo cuja representação seja mais curta que ela mesma, também haverá pelo menos uma cadeia de comprimento no máximo n cuja representação seja maior que ela mesma. (A representação é um algoritmo de compactação.)nn

Você pode ter uma linguagem de descrição em que cada string tenha uma representação que seja no máximo um pouco maior que ela mesma: inicie cada representação com um bit que indique “imprimir literalmente” ou “interpretar”. Nem todas as linguagens de descrição são tão simples assim.

CC

Gilles 'SO- parar de ser mau'
fonte
6

A descrição de uma string considerada aqui é uma entrada para alguma máquina universal de Turing. Você pode pensar nisso como um programa em C. A corda hello worldnão, por si só, formar um programa C, mas o seguinte faz: int main(int argc, char *argv[]) { printf("hello world"); }. Como você pode ver, a sobrecarga é constante, mas não zero.

Yuval Filmus
fonte
3
Como uma sutileza adicional, não é possível em C (ou um C completo de Turing idealizado) imprimir seqüências arbitrárias com sobrecarga de espaço O (1), porque alguns caracteres em literais de cadeia precisam ser citados.
Gilles 'SO- stop be evil'