Вычислимые числа — различия между версиями
| AMaltsev (обсуждение | вклад) м | AMaltsev (обсуждение | вклад)  м (убрал mathbb для множеств) | ||
| Строка 4: | Строка 4: | ||
| {{Определение | {{Определение | ||
| |definition= | |definition= | ||
| − | Действительное число <tex> \alpha </tex> называется '''вычислимым''' (computable number), если существует [[Вычислимые функции|вычислимая функция]] <tex> a:  | + | Действительное число <tex> \alpha </tex> называется '''вычислимым''' (computable number), если существует [[Вычислимые функции|вычислимая функция]] <tex> a:  Q \rightarrow  Q </tex>, такая, что <tex>|\alpha - a(\varepsilon)| < \varepsilon </tex> для любого рационального <tex> \varepsilon > 0 </tex>. | 
| }} | }} | ||
| Строка 48: | Строка 48: | ||
| <tex> \Longrightarrow </tex>: | <tex> \Longrightarrow </tex>: | ||
| − | Если число <tex> \alpha </tex> {{---}} рациональное, то необходимую последовательность можно получить, воспользовавшись стандартным алгоритмом перевода числа в двоичную систему счисления. Рассмотрим случай, когда <tex> \alpha \in  | + | Если число <tex> \alpha </tex> {{---}} рациональное, то необходимую последовательность можно получить, воспользовавшись стандартным алгоритмом перевода числа в двоичную систему счисления. Рассмотрим случай, когда <tex> \alpha \in  R \setminus Q </tex>. | 
| Очевидно, двоичная запись целой части <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>. | ||
| Строка 70: | Строка 70: | ||
| {{Определение | {{Определение | ||
| |definition= | |definition= | ||
| − | Последовательность рациональных чисел <tex> \{ r_n \} </tex> '''вычислимо сходится''' к <tex> \alpha </tex>, если существует вычислимая функция <tex> N:  | + | Последовательность рациональных чисел <tex> \{ r_n \} </tex> '''вычислимо сходится''' к <tex> \alpha </tex>, если существует вычислимая функция <tex> N:  Q \rightarrow  N </tex>, такая, что для любого рационального <tex> \varepsilon > 0 </tex> выполняется <tex>\forall n > N(\varepsilon): |r_n - \alpha| < \varepsilon </tex>. | 
| }} | }} | ||
| Строка 109: | Строка 109: | ||
| <tex> |\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> |\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  | + | где <tex> b_\beta \in  Q, |b_\beta| > |\beta| </tex> (<tex> b_\beta </tex>, очевидно, можно найти за конечное время), то | 
| <tex> f_{\alpha \beta}(\varepsilon) = f_{\alpha}(\frac \varepsilon {b_\beta}) f_{\beta}(\frac \varepsilon a) </tex>. | <tex> f_{\alpha \beta}(\varepsilon) = f_{\alpha}(\frac \varepsilon {b_\beta}) f_{\beta}(\frac \varepsilon a) </tex>. | ||
| Строка 115: | Строка 115: | ||
| Убедимся в вычислимости числа <tex> \frac 1 \alpha </tex>: | Убедимся в вычислимости числа <tex> \frac 1 \alpha </tex>: | ||
| − | <tex> |\frac 1 \alpha - \frac1a| \le \frac {|a - \alpha|}{a a_\alpha} </tex>, где <tex> a_\alpha \in  | + | <tex> |\frac 1 \alpha - \frac1a| \le \frac {|a - \alpha|}{a a_\alpha} </tex>, где <tex> a_\alpha \in  Q, |a_\alpha| < |\alpha| </tex>. | 
| <tex> f_{\frac 1 \alpha}(\varepsilon) = f_{\alpha}(\varepsilon a a_\alpha) </tex>. | <tex> f_{\frac 1 \alpha}(\varepsilon) = f_{\alpha}(\varepsilon a a_\alpha) </tex>. | ||
| Строка 129: | Строка 129: | ||
| Пусть <tex> x </tex> {{---}} корень многочлена <tex> P(x) </tex> с вычислимыми коэффициентами. | Пусть <tex> x </tex> {{---}} корень многочлена <tex> P(x) </tex> с вычислимыми коэффициентами. | ||
| − | Если <tex> x \in  | + | Если <tex> x \in  Q </tex>, то его можно найти точно, перебрав все рациональные числа. | 
| Иначе, выберем некоторый интервал <tex> [a; b]: x \in [a; b] </tex> (<tex> a, b </tex> {{---}} вычислимы), достаточно малый, чтобы полином <tex> P(x) </tex> был монотонным на отрезках <tex> [a; x] </tex> и <tex> [x; b] </tex>. | Иначе, выберем некоторый интервал <tex> [a; b]: x \in [a; b] </tex> (<tex> a, b </tex> {{---}} вычислимы), достаточно малый, чтобы полином <tex> P(x) </tex> был монотонным на отрезках <tex> [a; x] </tex> и <tex> [x; b] </tex>. | ||
| Строка 165: | Строка 165: | ||
| {{Определение | {{Определение | ||
| |definition= | |definition= | ||
| − | Действительное число <tex> \alpha </tex> называется '''перечислимым снизу''' (recursively enumerable number), если множество <tex> \{ a \in  | + | Действительное число <tex> \alpha </tex> называется '''перечислимым снизу''' (recursively enumerable number), если множество <tex> \{ a \in  Q \mid a < \alpha \} </tex> [[Перечислимые языки|перечислимо]]. | 
| }} | }} | ||
| {{Определение | {{Определение | ||
| |definition= | |definition= | ||
| − | Действительное число <tex> \alpha </tex> называется '''перечислимым сверху''', если множество <tex> \{ a \in  | + | Действительное число <tex> \alpha </tex> называется '''перечислимым сверху''', если множество <tex> \{ a \in  Q \mid a > \alpha \} </tex> перечислимо. | 
| }} | }} | ||
| Строка 181: | Строка 181: | ||
| <tex>\Rightarrow</tex>: | <tex>\Rightarrow</tex>: | ||
| − | По определению <tex> \alpha </tex>, множество <tex> A = \{ a \in  | + | По определению <tex> \alpha </tex>, множество <tex> A = \{ a \in  Q \mid a < \alpha \} </tex> перечислимо. Кроме того, <tex> \sup A = \alpha </tex>. | 
| По определению нижней грани, <tex> \forall \varepsilon > 0\ \exists x_\varepsilon \in A: \varepsilon > \alpha - x_\varepsilon </tex>. Тогда можно взять, например, последовательность <tex> a_n = x_{\frac 1 n} </tex>. | По определению нижней грани, <tex> \forall \varepsilon > 0\ \exists x_\varepsilon \in A: \varepsilon > \alpha - x_\varepsilon </tex>. Тогда можно взять, например, последовательность <tex> a_n = x_{\frac 1 n} </tex>. | ||
| Строка 201: | Строка 201: | ||
| Число <tex> \alpha </tex> вычислимо тогда и только тогда, когда оно перечислимо сверху и снизу. | Число <tex> \alpha </tex> вычислимо тогда и только тогда, когда оно перечислимо сверху и снизу. | ||
| |proof= | |proof= | ||
| − | Обозначим множества <tex> \{a \in  | + | Обозначим множества <tex> \{a \in  Q \mid a < \alpha \} </tex> и <tex> \{a \in  Q \mid a > \alpha \} </tex> за <tex> A </tex> и <tex> B </tex> соответственно. | 
| Если <tex> \alpha </tex> рационально, то необходимые (полу)разрешители строятся тривиально. | Если <tex> \alpha </tex> рационально, то необходимые (полу)разрешители строятся тривиально. | ||
| − | В противном случае, так как <tex> B =  | + | В противном случае, так как <tex> B =  Q \setminus A</tex>, то перечислимость множеств <tex> A </tex> и <tex> B </tex> равносильна разрешимости множества <tex> A </tex>, которая, в свою очередь, равносильна вычислимости <tex> \alpha </tex>. | 
| }} | }} | ||
Версия 04:53, 1 ноября 2016
В математике натуральные, целые и рациональные числа являются конструктивными объектами, поэтому их использование в теории вычислимости не требует особых уточнений. В то же время, действительные числа, которые необходимы для применения методов математического анализа, определяются неконструктивно. Предложенный далее метод позволяет построить конструктивные объекты, во многом схожие с обычными действительными числами.
Содержание
Вычислимые числа
| Определение: | 
| Действительное число называется вычислимым (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
