Демон может пуститься на хитрость: купить себе память достаточно большого объема и отложить ее зачистку, цикл за циклом накапливая в ней случайную последовательность нулей и единиц (уж что туда «запишется» по завершении каждого цикла работы). Конечно, в какой-то момент ему все же придется сделать то, что он так долго откладывал, потому что от переполнения памяти он потеряет способность к управлению. Казалось бы, стирание памяти бит за битом потребует как раз столько полезной работы, сколько он к этому времени извлек из теплового резервуара, и не стоило тратиться на приобретение памяти. Но не тут-то было! Эта часть битвы, начатой в 1867 г., разворачивалась уже в компьютерную эпоху, и демон оказался сведущ и в этом предмете. Он сначала архивирует – сжимает – накопленные данные, из-за чего последовательность нулей и единиц становится короче, а стирание ее требует меньше энергии. В итоге демон оказывается в выигрыше! Сжатие информации (как в любой из знакомых нам программ-архиваторов) – обратимая операция: более короткую строку из нулей и единиц можно превратить в исходную, более длинную, применяя алгоритм сжатия «в обратную сторону». Из-за этой обратимости демон в принципе может обойтись минимальными расходами на само сжатие, и экзорцисты, казалось бы, терпят поражение.
Сложность объекта – длина его самого короткого описания
Сложность объекта – длина его самого короткого описания
Сюжет становится все более закрученным. Для очередного изгнания демона потребовался новый массив научного знания. В середине XX в., с развитием теории информации, выяснилось, что последовательности из нулей и единиц могут быть устроены «более сложно» или «менее сложно», где сложность понимается не в человеческом, а скорее в «программном» (алгоритмическом) смысле: как длина самого короткого точного описания данной последовательности. Например, последовательность из 52 бит 0110011001100110011001100110011001100110011001100110 представляет собой тринадцать повторов последовательности 0110 и может быть так и описана, а про последовательность 11010001101001111000100000110110101110010011100010 заранее неизвестно, как описать ее короче. Строго говоря, алгоритмическая сложность определяется минимальной длиной