Это теоретический вопрос, поэтому ожидайте, что многие детали здесь не могут быть вычислены на практике или даже теоретически.
Скажем, у меня есть строка s
, которую я хочу сжать. Результатом должен быть самораспаковывающийся двоичный файл (может быть ассемблером x86, но он также может быть каким-то другим гипотетическим полным языком Turing), который выводит s
.
Теперь мы можем легко перебирать все возможные бинарные файлы и программы, упорядоченные по размеру. Пусть B_s
- под-список этих двоичных файлов, которые выводят s
(конечно, B_s
невычислимо).
Поскольку каждый набор положительных целых чисел должен иметь минимум, в B_s
должна быть наименьшая программа b_min_s
.
Для каких языков (т.е. набора строк) мы знаем что-то о размере b_min_s
? Может быть, только оценка. (Я могу построить некоторые тривиальные примеры, где я всегда могу рассчитать B_s
, а также b_min_s
, но меня интересуют более интересные языки.)