Светлый фон
Рис. 9.11.

 

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

Сложность объекта – длина его самого короткого описания

Сложность объекта – длина его самого короткого описания

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