Złożoność Kołmogorowa: Dlaczego potrzebujesz więcej bajtów niż samego łańcucha?

Odpowiedzi:

13

Dokładna wartość złożoności Kołmogorowa zależy od języka wybranego do reprezentowania łańcuchów. Ten język musi być kompletny Turinga, więc reprezentowanie wszystkich ciągów jako siebie nie jest opcją.

Zgodnie z zasadą szufladki, jeśli istnieje co najmniej jeden ciąg długości co najwyżej którego reprezentacja jest krótsza niż ona sama, wówczas istnieje również co najmniej jeden ciąg długości co najwyżej n, którego reprezentacja jest dłuższa niż ona sama. (Reprezentacja jest algorytmem kompresji).nn

Możesz mieć język opisu, w którym każdy ciąg ma reprezentację co najwyżej o jeden bit dłuższą niż on sam: każdą reprezentację zacznij od bitu, który wskazuje albo „drukuj dosłownie”, albo „interpretuj”. Jednak nie wszystkie języki opisu są takie proste.

dodo

Gilles „SO- przestań być zły”
źródło
6

Omawiany tutaj opis ciągu stanowi dane wejściowe do uniwersalnej maszyny Turinga. Możesz myśleć o tym jak o programie C. Łańcuch hello worldnie przez siebie, tworząc program w C, ale po jednym robi: int main(int argc, char *argv[]) { printf("hello world"); }. Jak widać, narzut jest stały, ale nie zerowy.

Yuval Filmus
źródło
3
Jako dodatkową subtelność, w C (lub w wyidealizowanym Turing-complete C) nie jest możliwe drukowanie dowolnych ciągów z narzutem spacji O (1), ponieważ niektóre znaki w literałach ciągów wymagają cytowania.
Gilles „SO - przestań być zły”,