Вычислимые числа — различия между версиями
AMaltsev (обсуждение | вклад) м |
AMaltsev (обсуждение | вклад) м |
||
| Строка 52: | Строка 52: | ||
: Очевидно, двоичная запись целой части <tex> \alpha </tex> всегда вычислима (так как множество чисел, меньших <tex> \alpha </tex>, разрешимо, то можно перебрать все целые числа в порядке возрастания их абсолютных величин и найти наибольшее число, меньшее <tex> \alpha </tex>), поэтому будем считать, что <tex> \alpha \in (0; 1) </tex>. | : Очевидно, двоичная запись целой части <tex> \alpha </tex> всегда вычислима (так как множество чисел, меньших <tex> \alpha </tex>, разрешимо, то можно перебрать все целые числа в порядке возрастания их абсолютных величин и найти наибольшее число, меньшее <tex> \alpha </tex>), поэтому будем считать, что <tex> \alpha \in (0; 1) </tex>. | ||
| − | : Напишем программу, которая по числу <tex> n </tex> вычисляет <tex> n </tex>-ный знак числа <tex> \alpha </tex> после запятой: | + | : Напишем программу, которая по числу <tex> n </tex> вычисляет <tex> n </tex>-ный знак в двоичном представлении числа <tex> \alpha </tex> после запятой: |
'''function''' <tex>p(n)</tex>: | '''function''' <tex>p(n)</tex>: | ||
| Строка 103: | Строка 103: | ||
<tex dpi="150"> f_{\alpha - \beta}(\varepsilon) = f_{\alpha}(\dfrac \varepsilon 2) - f_{\beta}(\dfrac \varepsilon 2) </tex> | <tex dpi="150"> f_{\alpha - \beta}(\varepsilon) = f_{\alpha}(\dfrac \varepsilon 2) - f_{\beta}(\dfrac \varepsilon 2) </tex> | ||
| − | соответственно (при подстановке в неравенство <tex> f_{\alpha} </tex> и <tex> f_{\beta} </tex> вместо <tex> a </tex> и <tex> b </tex> каждый модуль в правой части не превосходит <tex> \dfrac \varepsilon 2 </tex>, поэтому | + | соответственно (при подстановке в неравенство <tex> f_{\alpha} </tex> и <tex> f_{\beta} </tex> вместо <tex> a </tex> и <tex> b </tex> каждый модуль в правой части не превосходит <tex> \dfrac \varepsilon 2 </tex>, поэтому <tex> f_{\alpha \pm \beta} </tex> не превосходит <tex> \varepsilon </tex>). |
Далее, так как | Далее, так как | ||
| Строка 109: | Строка 109: | ||
<tex dpi="150"> |\alpha \beta - ab| = |(\alpha \beta - a \beta) + (a \beta - ab)| \le |\beta||\alpha - a| + |a||\beta - b| \le |b_\beta||\alpha - a| + |a||\beta - b|</tex>, | <tex dpi="150"> |\alpha \beta - ab| = |(\alpha \beta - a \beta) + (a \beta - ab)| \le |\beta||\alpha - a| + |a||\beta - b| \le |b_\beta||\alpha - a| + |a||\beta - b|</tex>, | ||
| − | где <tex> b_\beta \in \mathbb Q, |b_\beta| > |\beta| </tex> | + | где <tex>b_\beta</tex> {{---}} наименьшее рациональное число, большее <tex>\beta</tex> по модулю (т.е. <tex> b_\beta \in \mathbb Q, |b_\beta| > |\beta| </tex>), то |
<tex dpi="150"> f_{\alpha \beta}(\varepsilon) = f_{\alpha}(\dfrac \varepsilon {b_\beta}) f_{\beta}(\dfrac \varepsilon a) </tex>. | <tex dpi="150"> f_{\alpha \beta}(\varepsilon) = f_{\alpha}(\dfrac \varepsilon {b_\beta}) f_{\beta}(\dfrac \varepsilon a) </tex>. | ||
| Строка 142: | Строка 142: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
| − | Предел вычислимо сходящейся вычислимой последовательности вычислимых чисел вычислим. | + | Предел вычислимо сходящейся вычислимой последовательности <tex> r_n </tex> вычислимых чисел вычислим. |
|proof= | |proof= | ||
| − | Пусть | + | Пусть <tex> \alpha = \lim\limits_{n \to \infty} r_n </tex>. Запишем формально данные нам условия: |
<tex> \forall \varepsilon_1 > 0\ \forall n > (\varepsilon_1): |r(n) - \alpha| < \varepsilon_1 </tex> | <tex> \forall \varepsilon_1 > 0\ \forall n > (\varepsilon_1): |r(n) - \alpha| < \varepsilon_1 </tex> | ||
| Строка 214: | Строка 214: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| − | Пусть <tex> A </tex> {{---}} некоторое перечислимое, но неразрешимое множество натуральных чисел. | + | Пусть <tex> A </tex> {{---}} некоторое перечислимое, но неразрешимое множество натуральных чисел. Пронумеруем его элементы. '''Последовательностью Шпеккера''' <tex> \{q_n\} </tex> называется последовательность рациональных чисел, <tex>n</tex>-ный член которой определяется как <tex dpi="150"> q_n = \sum\limits_{k=1}^{n} 2^{-A(n)-1} </tex>. |
}} | }} | ||
| Строка 225: | Строка 225: | ||
<tex> q </tex> перечислимо снизу, как предел возрастающей вычислимой последовательности рациональных чисел. | <tex> q </tex> перечислимо снизу, как предел возрастающей вычислимой последовательности рациональных чисел. | ||
| − | Допустим теперь, что <tex> q </tex> вычислимо. | + | Допустим теперь, что <tex> q </tex> {{---}} вычислимо. |
| − | Пусть <tex> A = \{p \mid p(p) = 1\}</tex>. Рассмотрим двоичную запись числа <tex> q </tex>, если ее <tex> n </tex>-ный знак после запятой равен 1, то <tex> n \in A </tex>, иначе {{---}} <tex> n \notin A </tex>. Мы построили разрешитель для множества <tex> A </tex>. Тем не менее, | + | Пусть <tex> A = \{p \mid p(p) = 1\}</tex>. Рассмотрим двоичную запись числа <tex> q </tex>, если ее <tex> n </tex>-ный знак после запятой равен 1, то <tex> n \in A </tex>, иначе {{---}} <tex> n \notin A </tex>. Мы построили разрешитель для множества <tex> A </tex>. Тем не менее, известно, что <tex> A </tex> {{---}} неразрешимое множество, а это невозможно, значит, <tex> q </tex> {{---}} невычислимо. |
}} | }} | ||
Версия 22:10, 20 ноября 2016
В математике натуральные, целые и рациональные числа являются конструктивными объектами, поэтому их использование в теории вычислимости не требует особых уточнений. В то же время, действительные числа, которые необходимы для применения методов математического анализа, определяются неконструктивно. Предложенный далее метод позволяет построить конструктивные объекты, во многом схожие с обычными действительными числами.
Содержание
Вычислимые числа
| Определение: |
| Действительное число называется вычислимым (англ. computable number), если существует вычислимая функция , такая, что для любого рационального . |
Свойства
| Теорема: |
Число вычислимо множество разрешимо. |
| Доказательство: |
|
:
function : for to : if : return 1 if : return 0 :
function : for : if : return x
|
Важное замечание: построенное нами доказательство неконструктивно, так как мы не знаем наперед, рационально ли число , и уж тем более не пытаемся понять в случае его рациональности, чему именно оно равно. Но, так как мы ставим целью исследование свойств вычислимых чисел, а не явное построение соответствующих этим свойствам программ, то нам это доказательство полностью подходит.
С учетом только что доказанной теоремы, далее при проверке на принадлежность числа множеству будем писать просто .
| Теорема: |
Число вычислимо последовательность знаков представляющей его двоичной записи вычислима. |
| Доказательство: |
|
:
function : l = 0, r = 1 for to : if : l = m, t = 1 else: r = m, t = 0 return t :
|
| Определение: |
| Последовательность рациональных чисел вычислимо сходится к , если существует вычислимая функция , такая, что для любого рационального выполняется . |
| Теорема: |
Число вычислимо существует вычислимая последовательность рациональных чисел, вычислимо сходящаяся к . |
| Доказательство: |
|
:
:
|
| Теорема: |
Пусть числа вычислимы. Тогда также вычислимы числа , , и . |
| Доказательство: |
|
В пределах этого доказательства будем обозначать функцию-приближение для произвольного вычислимого числа как . Для того, чтобы получить приближение для результата операции, нам нужно выразить функцию-результат через приближения для операндов. Заметим, что , для произвольных рациональных , значит, в качестве необходимых функций для и можно взять
и
соответственно (при подстановке в неравенство и вместо и каждый модуль в правой части не превосходит , поэтому не превосходит ). Далее, так как , где — наименьшее рациональное число, большее по модулю (т.е. ), то . Убедимся в вычислимости числа : , где . . Отсюда, также вычислимо. |
| Теорема: |
Корень многочлена с вычислимыми коэффициентами вычислим. |
| Доказательство: |
|
Пусть — корень многочлена с вычислимыми коэффициентами. Если , то его можно найти точно, перебрав все рациональные числа. Иначе, выберем некоторый интервал ( — вычислимы), достаточно малый, чтобы полином был монотонным на отрезках и . Заметим, что для вычислимого значение также вычислимо, так как в процессе его вычисления используются только операции, вычислимость значений которых уже была ранее доказана. Теперь, если полином имеет разные знаки на отрезках и , то для поиска можно воспользоваться двоичным поиском нуля на , иначе — троичным поиском экстремума на . Останавливая тот или иной алгоритм, когда текущая длина интервала становится меньше и возвращая левую границу в качестве ответа, получаем функцию . |
| Теорема: |
Предел вычислимо сходящейся вычислимой последовательности вычислимых чисел вычислим. |
| Доказательство: |
|
Пусть . Запишем формально данные нам условия:
Здесь функции , и все вычислимы. Построим функцию , которая дает приближение к с точностью до : function : n = returnТак как , первое слагаемое меньше по выбору , второе — в силу вычислимости , то , и действительно вычисляет требуемое приближение. |
Перечислимые числа
| Определение: |
| Действительное число называется перечислимым снизу (англ. recursively enumerable number), если множество перечислимо. |
| Определение: |
| Действительное число называется перечислимым сверху, если множество перечислимо. |
Свойства
| Теорема: |
Число перечислимо снизу существует вычислимая возрастающая последовательность рациональных чисел, пределом которой является . |
| Доказательство: |
|
:
:
function : for n = to : if : return 1
|
| Теорема: |
Число вычислимо оно перечислимо сверху и снизу. |
| Доказательство: |
|
Обозначим множества и за и соответственно. Если рационально, то необходимые (полу)разрешители строятся тривиально. В противном случае, так как , то перечислимость множеств и равносильна разрешимости множества , которая, в свою очередь, равносильна вычислимости . |
Последовательность Шпеккера
Множество всех программ счётно, поэтому множество вычислимых чисел также счётно. Однако, множество вещественных чисел несчётно, значит, существуют невычислимые вещественные числа. Построим явно пример такого числа.
| Определение: |
| Пусть — некоторое перечислимое, но неразрешимое множество натуральных чисел. Пронумеруем его элементы. Последовательностью Шпеккера называется последовательность рациональных чисел, -ный член которой определяется как . |
Данная последовательность строго возрастает и ограничена числом , следовательно, она сходится по признаку Вейерштрасса.
| Теорема: |
Число перечислимо снизу, но невычислимо. |
| Доказательство: |
|
перечислимо снизу, как предел возрастающей вычислимой последовательности рациональных чисел. Допустим теперь, что — вычислимо. Пусть . Рассмотрим двоичную запись числа , если ее -ный знак после запятой равен 1, то , иначе — . Мы построили разрешитель для множества . Тем не менее, известно, что — неразрешимое множество, а это невозможно, значит, — невычислимо. |
Источники информации
- Верещагин Н. К., Шень А. — Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции — М.: МЦНМО, 1999 — стр. 14
- Computable number
- Specker sequence