Читаю книгу
Верещагин, Успенский, Шень. Колмогоровская сложность и алгоритмическая вероятность. М.: МЦНМО, 2013.
И вот на с. 69 встретилось мне непонятное.
Сначала дам несколько определений, чтобы стал ясен контекст.
Назовем двоичным словом кортеж нулей и единиц, двоичной последовательностью - бесконечную последовательность нулей и единиц. Рассмотрим пространство всех двоичных последовательностей
. Назовем двоичную последовательность продолжением слова
, если она начинается со слова
. Обозначим
множество всех продолжений слова
. Легко показать, что система
для всевозможных
образует в
базу топологии, и что эта топология является также кольцом множеств.
Рассмотрим функцию
, где
- длина слова
.
Определим функцию множества
. Можно показать, что такая функция является мерой, заданной на кольце всех открытых множеств (откуда ее можно продолжить по Лебегу с образованием соответствующей сигма-алгебры). Кстати говоря, указанная топология метризуема как раз метрикой
, где
- номер (начиная с нуля) первого знака, в котором различаются последовательности
и
. Множество
представляет собой открытый шар, причем каждая точка этого шара является его центром.
Теперь вопрос. Как известно, множество имеет нулевую меру, если для каждого
найдется его покрытие мерой меньше
. Как построить конструктивный вариант этого понятия? Ясно, что действительные
можно заменить рациональными. Вывести
в качестве выходных данных алгоритма тоже просто - достаточно вывести
.
Так вот Верещагин и К. дают такое определение.
"Множество
называется эффективно нулевым (по данной мере), если существует вычислимая функция
двух аргументов (первый - положительное рациональное число, второй - натуральное число), значениями которой являются двоичные слова, причём
1)
2)
При этом мы
не требуем (выделение мое), чтобы функция
была всюду определена; если
не определено, то соответствующий член (в обоих условиях) пропускается".
И далее задача: "Покажите, что определение не изменится, если предполагать, что алгоритм получает на вход рациональное
, а на выходе перечисляет некоторое множество двоичных слов (печатая их одно за другим с произвольными пробелами), которые образуют покрытие интервалами с суммарной мерой (мерой объединения) не больше
".
Собственно, вопрос. Что-то мне совсем не ясна природа этого разрешения - "функция
может быть не всюду определена". Вычислимая функция называется не определенной в точке
, если вычисляющий ее алгоритм, получив на вход
, зацикливается. Как тогда можно построить алгоритм, который строит покрытие по данному
? По идее, он должен вычислить и вывести сначала
, потом
и так далее. Но тогда он зациклится на первом же
, для которого функция не определена, и получится не "соответствующий член пропускается", а просто "последовательность обрывается на предыдущем члене". Некоторый смысл этому можно придать, если потребовать, чтобы функция, не определенная в
, была не определена и во всяком
- тогда функция зациклится если и только если она вывела последний член конечного покрытия. Но авторы такого требования не заявляют. Или тут используется тот факт, что область определения всякой вычислимой функции перечислима, и, значит, есть алгоритм
, который для всякого натурального
выдает
-тое по счету натуральное число
, для которого
определена? Тогда почему сразу не встроить этот алгоритм в алгоритм вычисления
, потребовав, чтобы
выдавала
-ный член покрытия? Это естественнее, чем разрешать ей быть не всюду определенной...
В общем, чего-то я не понимаю во всей этой истории.