Колмогоров Складність: Навіщо вам потрібно більше байтів, ніж сам рядок?


13

Я читав запис Вікіпедії про Комплекс Колмогорова ( завдяки цьому питанню ), де зазначено:

Можна показати, що складність Колмогорова будь-якого рядка не може бути більше, ніж на кілька байт більше довжини самої рядка.

Навіщо вам коли-небудь потрібно щось більше, ніж сама рядок, щоб описати це?

Відповіді:


13

Точне значення складності Колмогорова залежить від мови, обраної для представлення рядків. Ця мова повинна бути Тюрінгом повною, тому представляти всі рядки як себе не є варіантом.

За принципом голубиного отвору, якщо є хоча б одна струна довжиною не більше , представлення якої коротше, ніж вона сама, то також існує принаймні одна довжина довжини не більше , представлення якої довше, ніж вона сама. (Представлення є алгоритмом стиснення.)nn

Ви можете мати мову опису, де кожна рядок має представлення, яке є щонайменше на один біт довше себе: розпочніть кожне представлення з біту, який вказує або "друкувати буквально", або "інтерпретувати". Не всі мови опису є такими простими.

Більш офіційне твердження подано далі у статті Вікіпедії, в розділі теореми інваріантності . Існують оптимальні мови опису, такі, що для будь-якої мови є постійною такою, що опис будь-якого рядка в оптимальній мові (незалежно від того, яка його довжина) є щонайменше на бітів довше, ніж у цій іншій мові. Інтуїтивно запишіть перекладача для іншої мови оптимальною мовою.CC


6

Опис рядка, що розглядається тут, є вкладом до якоїсь універсальної машини Тьюрінга. Ви можете думати про це як програму С. Рядок hello worldне сам по собі, сформувати програму C, але наступний один робить: int main(int argc, char *argv[]) { printf("hello world"); }. Як бачите, накладні витрати постійні, але не нульові.


3
В якості додаткової тонкощі в C (або ідеалізованому Turing-повному С) неможливо надрукувати довільні рядки з пробілом O (1), оскільки деякі символи в рядкових літералах потребують цитування.
Жил "ТАК - перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.