Сложность по Колмогорову: зачем вам больше байтов, чем сама строка?


13

Я читал статью Википедии о сложности Колмогорова ( благодаря этому вопросу ), в которой говорится:

Можно показать, что колмогоровская сложность любой строки не может быть более чем на несколько байтов больше, чем длина самой строки.

Зачем вам когда-либо что-то большее, чем сама строка, чтобы описать это?

Ответы:


13

Точное значение колмогоровской сложности зависит от языка, выбранного для представления строк. Этот язык должен быть завершен по Тьюрингу, поэтому представление всех строк как самих себя не вариант.

По принципу голубя, если существует хотя бы одна строка длиной не более , представление которой короче, чем она сама, то существует также как минимум одна строка длиной не более n , представление которой длиннее, чем она сама. (Представление является алгоритмом сжатия.)NN

У вас может быть язык описания, где каждая строка имеет представление, которое не более чем на один бит длиннее самого себя: начинайте каждое представление с бита, который указывает либо «печатать буквально», либо «интерпретировать». Не все языки описания настолько просты.

СС


6

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


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