Вычислимые числа
В математике натуральные, целые и рациональные числа являются конструктивными объектами, поэтому их использование в теории вычислимости не требует особых уточнений. В то же время, действительные числа, которые необходимы для применения методов математического анализа, определяются неконструктивно. Предложенный далее метод позволяет построить конструктивные объекты, во многом схожие с обычными действительными числами.
Вычислимые числа
Определение: |
Действительное число | называется вычислимым (computable number), если существует вычислимая функция , такая, что для любого рационального .
Свойства
Теорема: |
Число вычислимо тогда и только тогда, когда множество разрешимо. |
Доказательство: |
: Если — рациональное, то существует тривиальный разрешитель для , который просто сравнивает полученный элемент с .В противном случае, построим разрешитель для :: for : if : return 1 if : return 0 : Построим функцию :Так как : for : if : return x разрешимо, и для любого проверка в условном операторе завершается за конечное время, то функция вычислима для любого рационального . |
Важное замечание: построенное нами доказательство неконструктивно, так как мы не знаем наперед, рационально ли число
, и уж тем более не пытаемся понять в случае его рациональности, чему именно оно равно. Но, так как мы ставим целью исследование свойств вычислимых чисел, а не явное построение соответствующих этим свойствам программ, то нам это доказательство полностью подходит.С учетом только что доказанной теоремы, далее при проверке на принадлежность числа
множеству будем писать просто .Теорема: |
Число вычислимо тогда и только тогда, когда последовательность знаков представляющей его двоичной записи вычислима. |
Доказательство: |
: Если число — рациональное, то необходимую последовательность можно получить, воспользовавшись стандартным алгоритмом перевода числа в двоичную систему счисления. Рассмотрим случай, когда .Очевидно, двоичная запись целой части всегда вычислима (так как множество чисел, меньших , разрешимо, то можно перебрать все целые числа в порядке возрастания их абсолютных величин и найти наибольшее число, меньшее ), поэтому будем считать, что .Напишем программу, которая по числу вычисляет -ный знак числа после запятой:: l = 0, r = 1 for : if : l = m, t = 1 else: r = m, t = 0 return t Для любого рационального : , найдем , тогда в качестве значения функции можно взять часть последовательности знаков двоичной записи с знаками после запятой. |
Определение: |
Последовательность рациональных чисел | вычислимо сходится к , если существует вычислимая функция , такая, что для любого рационального выполняется .
Теорема: |
Число вычислимо тогда и только тогда, когда существует вычислимая последовательность рациональных чисел, вычислимо сходящаяся к . |
Доказательство: |
: Так как вычислимо, то, согласно предыдущей теореме, вычислима и его двоичная запись. Пусть — часть последовательности знаков двоичной записи с знаками после запятой. Данная последовательность вычислима, а также вычислимо сходится к , так как .Пусть : , тогда вычислимо по определению. |
Теорема: |
Пусть числа вычислимы. Тогда также вычислимы числа , , и . |
Доказательство: |
В пределах этого доказательства будем обозначать функцию-приближение для произвольного вычислимого числа как .Для того, чтобы получить приближение для результата операции, нам нужно выразить функцию-результат через приближения для операндов. Заметим, что , для произвольных рациональных , значит, в качестве необходимых функций для и можно взять
и
соответственно (при подстановке в неравенство и вместо и каждый модуль в правой части не превосходит , поэтому, не превосходит ).Далее, так как , где ( , очевидно, можно найти за конечное время), то. Убедимся в вычислимости числа :, где . Отсюда, . также вычислимо. |
Теорема: |
Корень многочлена с вычислимыми коэффициентами вычислим. |
Доказательство: |
Пусть — корень многочлена с вычислимыми коэффициентами.Если , то его можно найти точно, перебрав все рациональные числа.Иначе, выберем некоторый интервал ( — вычислимы), достаточно малый, чтобы полином был монотонным на отрезках и .Заметим, что для вычислимого значение также вычислимо, так как в процессе его вычисления используются только операции, вычислимость значений которых уже была ранее доказана.Теперь, если полином имеет разные знаки на отрезках Останавливая тот или иной алгоритм, когда текущая длина интервала становится меньше и , то для поиска можно воспользоваться двоичным поиском для поиска нуля на , иначе — троичным поиском для поиска минимума или максимума на . и возвращая левую границу в качестве ответа, получаем функцию . |
Теорема: |
Предел вычислимо сходящейся вычислимой последовательности вычислимых чисел вычислим. |
Доказательство: |
Пусть рассматриваемая последовательность — , и . Запишем формально данные нам условия:
Здесь функции , и все вычислимы.Построим функцию , которая дает приближение к с точностью до :Так как : n = return , первое слагаемое меньше по выбору , второе — в силу вычислимости , то , и действительно вычисляет требуемое приближение. |
Перечислимые числа
Определение: |
Действительное число | называется перечислимым снизу (recursively enumerable number), если множество перечислимо.
Определение: |
Действительное число | называется перечислимым сверху, если множество перечислимо.
Свойства
Теорема: |
Число перечислимо снизу тогда и только тогда, когда существует вычислимая возрастающая последовательность рациональных чисел, пределом которой является . |
Доказательство: |
: По определению , множество перечислимо. Кроме того, .По определению нижней грани, . Тогда можно взять, например, последовательность .: Построим полуразрешитель для множества :p(x): for n inЕсли : if : return 1 , то , и так как , то программа вернет ответ при . |
Теорема: |
Число вычислимо тогда и только тогда, когда оно перечислимо сверху и снизу. |
Доказательство: |
Обозначим множества и за и соответственно.Если В противном случае, так как рационально, то необходимые (полу)разрешители строятся тривиально. , то перечислимость множеств и равносильна разрешимости множества , которая, в свою очередь, равносильна вычислимости . |
Последовательность Шпеккера
Множество всех программ счетно, поэтому множество вычислимых чисел также счетно. Однако, множество вещественных чисел несчетно, значит, существуют невычислимые вещественные числа. Построим явно пример такого числа.
Определение: |
Пусть | — некоторое перечислимое, но неразрешимое множество натуральных чисел. Занумеруем его элементы. Последовательностью Шпеккера называется последовательность рациональных чисел, -ный член которой определяется как .
Данная последовательность строго возрастает и ограничена числом , следовательно, по признаку Вейерштрасса, она сходится.
Теорема: |
Число перечислимо снизу, но невычислимо. |
Доказательство: |
перечислимо снизу, как предел возрастающей вычислимой последовательности рациональных чисел. Допустим теперь, что Пусть вычислимо. . Рассмотрим двоичную запись числа , если ее -ный знак после запятой равен 1, то , иначе — . Мы построили разрешитель для множества . Тем не менее, мы знаем, что — неразрешимое множество, и это невозможно, значит, невычислимо. |
Ссылки
- Верещагин Н. К., Шень А. Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции — М.: МЦНМО, 1999 - С. 14
- Computable number
- Specker sequence