Вычислимые числа — различия между версиями
AMaltsev (обсуждение | вклад) м (правки форматирования) |
AMaltsev (обсуждение | вклад) |
||
Строка 19: | Строка 19: | ||
: В противном случае, построим разрешитель для <tex> A </tex>: | : В противном случае, построим разрешитель для <tex> A </tex>: | ||
− | ''' | + | '''function''' <tex> p(x)</tex>: |
− | '''for''' <tex> n = 1 | + | '''for''' <tex> n = 1</tex> '''to''' <tex>\infty </tex>: |
'''if''' <tex> x < a(\dfrac1n) - \dfrac1n </tex>: | '''if''' <tex> x < a(\dfrac1n) - \dfrac1n </tex>: | ||
'''return''' 1 | '''return''' 1 | ||
Строка 30: | Строка 30: | ||
: Построим функцию <tex> a(\varepsilon) </tex>: | : Построим функцию <tex> a(\varepsilon) </tex>: | ||
− | ''' | + | '''function''' <tex> a(\varepsilon) </tex>: |
'''for''' <tex> x \in A </tex>: | '''for''' <tex> x \in A </tex>: | ||
'''if''' <tex> x + \varepsilon \notin A </tex>: | '''if''' <tex> x + \varepsilon \notin A </tex>: | ||
Строка 54: | Строка 54: | ||
: Напишем программу, которая по числу <tex> n </tex> вычисляет <tex> n </tex>-ный знак числа <tex> \alpha </tex> после запятой: | : Напишем программу, которая по числу <tex> n </tex> вычисляет <tex> n </tex>-ный знак числа <tex> \alpha </tex> после запятой: | ||
− | ''' | + | '''function''' <tex>p(n)</tex>: |
l = 0, r = 1 | l = 0, r = 1 | ||
− | '''for''' <tex> k = 1 | + | '''for''' <tex> k = 1</tex> '''to''' <tex>n </tex>: |
<tex> m = \dfrac{l+r}2 </tex> | <tex> m = \dfrac{l+r}2 </tex> | ||
'''if''' <tex> m < \alpha</tex>: | '''if''' <tex> m < \alpha</tex>: | ||
Строка 83: | Строка 83: | ||
<tex> \Longleftarrow </tex>: | <tex> \Longleftarrow </tex>: | ||
− | : Пусть <tex> a(\varepsilon) = r_{N(\varepsilon)} </tex>, тогда <tex> \alpha </tex> вычислимо по определению. | + | : Пусть <tex dpi="150"> a(\varepsilon) = r_{N(\varepsilon)} </tex>, тогда <tex> \alpha </tex> вычислимо по определению. |
}} | }} | ||
Строка 97: | Строка 97: | ||
Заметим, что <tex> |(\alpha \pm \beta) - (a \pm b)| \le |\alpha - a| \pm |\beta - b| </tex>, для произвольных рациональных <tex> a, b </tex>, значит, в качестве необходимых функций для <tex> \alpha + \beta </tex> и <tex> \alpha - \beta </tex> можно взять | Заметим, что <tex> |(\alpha \pm \beta) - (a \pm b)| \le |\alpha - a| \pm |\beta - b| </tex>, для произвольных рациональных <tex> a, b </tex>, значит, в качестве необходимых функций для <tex> \alpha + \beta </tex> и <tex> \alpha - \beta </tex> можно взять | ||
− | <tex> 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 - \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 \pm \beta} </tex> не превосходит <tex> \varepsilon </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>). | ||
Строка 115: | Строка 115: | ||
Убедимся в вычислимости числа <tex> \dfrac 1 \alpha </tex>: | Убедимся в вычислимости числа <tex> \dfrac 1 \alpha </tex>: | ||
− | <tex> |\dfrac 1 \alpha - \dfrac1a| \le \dfrac {|a - \alpha|}{a a_\alpha} </tex>, где <tex> a_\alpha \in \mathbb Q, |a_\alpha| < |\alpha| </tex>. | + | <tex dpi="150"> |\dfrac 1 \alpha - \dfrac1a| \le \dfrac {|a - \alpha|}{a a_\alpha} </tex>, где <tex> a_\alpha \in \mathbb Q, |a_\alpha| < |\alpha| </tex>. |
− | <tex> f_{\ | + | <tex dpi="150"> f_{\frac 1 \alpha}(\varepsilon) = f_{\alpha}(\varepsilon a a_\alpha) </tex>. |
Отсюда, <tex> \dfrac \alpha \beta = \dfrac1 \alpha \beta </tex> также вычислимо. | Отсюда, <tex> \dfrac \alpha \beta = \dfrac1 \alpha \beta </tex> также вычислимо. | ||
Строка 135: | Строка 135: | ||
Заметим, что для вычислимого <tex> t </tex> значение <tex> P(t) </tex> также вычислимо, так как в процессе его вычисления используются только операции, вычислимость значений которых уже была ранее доказана. | Заметим, что для вычислимого <tex> t </tex> значение <tex> P(t) </tex> также вычислимо, так как в процессе его вычисления используются только операции, вычислимость значений которых уже была ранее доказана. | ||
− | Теперь, если полином имеет разные знаки на отрезках <tex> [a; x] </tex> и <tex> [x; b] </tex>, то для поиска <tex> x </tex> можно воспользоваться двоичным поиском | + | Теперь, если полином имеет разные знаки на отрезках <tex> [a; x] </tex> и <tex> [x; b] </tex>, то для поиска <tex> x </tex> можно воспользоваться двоичным поиском нуля на <tex> [a; b] </tex>, иначе {{---}} троичным поиском экстремума на <tex> [a; b] </tex>. |
Останавливая тот или иной алгоритм, когда текущая длина интервала становится меньше <tex> \varepsilon </tex> и возвращая левую границу в качестве ответа, получаем функцию <tex> a_x(\varepsilon) </tex>. | Останавливая тот или иной алгоритм, когда текущая длина интервала становится меньше <tex> \varepsilon </tex> и возвращая левую границу в качестве ответа, получаем функцию <tex> a_x(\varepsilon) </tex>. | ||
Строка 154: | Строка 154: | ||
Построим функцию <tex> a(\varepsilon) </tex>, которая дает приближение к <tex> \alpha </tex> с точностью до <tex> \varepsilon </tex>: | Построим функцию <tex> a(\varepsilon) </tex>, которая дает приближение к <tex> \alpha </tex> с точностью до <tex> \varepsilon </tex>: | ||
− | ''' | + | '''function''' <tex> a(\varepsilon) </tex>: |
n = <tex> N(\dfrac \varepsilon 2) + 1 </tex> | n = <tex> N(\dfrac \varepsilon 2) + 1 </tex> | ||
'''return''' <tex> p_n(\dfrac \varepsilon 2) </tex> | '''return''' <tex> p_n(\dfrac \varepsilon 2) </tex> | ||
Строка 183: | Строка 183: | ||
: По определению <tex> \alpha </tex>, множество <tex> A = \{ a \in \mathbb Q \mid a < \alpha \} </tex> перечислимо. Кроме того, <tex> \sup A = \alpha </tex>. | : По определению <tex> \alpha </tex>, множество <tex> A = \{ a \in \mathbb 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_{\ | + | : По определению нижней грани, <tex> \forall \varepsilon > 0\ \exists x_\varepsilon \in A: \varepsilon > \alpha - x_\varepsilon </tex>. Тогда можно взять, например, последовательность <tex dpi="150"> a_n = x_{\frac{1}{n}} </tex>. |
<tex>\Longleftarrow</tex>: | <tex>\Longleftarrow</tex>: | ||
Строка 189: | Строка 189: | ||
: Построим полуразрешитель для множества <tex> A </tex>: | : Построим полуразрешитель для множества <tex> A </tex>: | ||
− | ''' | + | '''function''' <tex>p(x)</tex>: |
− | '''for''' n in <tex>1 | + | '''for''' n in <tex>1</tex> '''to''' <tex>\infty</tex>: |
'''if''' <tex> x < a_n </tex>: | '''if''' <tex> x < a_n </tex>: | ||
'''return''' 1 | '''return''' 1 | ||
Строка 210: | Строка 210: | ||
== Последовательность Шпеккера == | == Последовательность Шпеккера == | ||
− | Множество всех программ | + | Множество всех программ счётно, поэтому множество вычислимых чисел также счётно. Однако, множество вещественных чисел несчётно, значит, существуют невычислимые вещественные числа. Построим явно пример такого числа. |
{{Определение | {{Определение | ||
Строка 231: | Строка 231: | ||
== Источники информации == | == Источники информации == | ||
− | * ''Верещагин Н. К., Шень А.'' Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции — М.: МЦНМО, 1999 - | + | * ''Верещагин Н. К., Шень А.'' {{---}} Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции — М.: МЦНМО, 1999 {{---}} стр. 14 |
* [http://en.wikipedia.org/wiki/Computable_number Computable number] | * [http://en.wikipedia.org/wiki/Computable_number Computable number] | ||
* [http://en.wikipedia.org/wiki/Specker_sequence Specker sequence] | * [http://en.wikipedia.org/wiki/Specker_sequence Specker sequence] | ||
+ | [[Категория: Теория формальных языков]] | ||
[[Категория: Теория вычислимости]] | [[Категория: Теория вычислимости]] | ||
− |
Версия 21:24, 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 in to : if : return 1
|
Теорема: |
Число вычислимо тогда и только тогда, когда оно перечислимо сверху и снизу. |
Доказательство: |
Обозначим множества и за и соответственно.Если В противном случае, так как рационально, то необходимые (полу)разрешители строятся тривиально. , то перечислимость множеств и равносильна разрешимости множества , которая, в свою очередь, равносильна вычислимости . |
Последовательность Шпеккера
Множество всех программ счётно, поэтому множество вычислимых чисел также счётно. Однако, множество вещественных чисел несчётно, значит, существуют невычислимые вещественные числа. Построим явно пример такого числа.
Определение: |
Пусть | — некоторое перечислимое, но неразрешимое множество натуральных чисел. Занумеруем его элементы. Последовательностью Шпеккера называется последовательность рациональных чисел, -ный член которой определяется как .
Данная последовательность строго возрастает и ограничена числом , следовательно, по признаку Вейерштрасса, она сходится.
Теорема: |
Число перечислимо снизу, но невычислимо. |
Доказательство: |
перечислимо снизу, как предел возрастающей вычислимой последовательности рациональных чисел. Допустим теперь, что Пусть вычислимо. . Рассмотрим двоичную запись числа , если ее -ный знак после запятой равен 1, то , иначе — . Мы построили разрешитель для множества . Тем не менее, мы знаем, что — неразрешимое множество, и это невозможно, значит, невычислимо. |
Источники информации
- Верещагин Н. К., Шень А. — Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции — М.: МЦНМО, 1999 — стр. 14
- Computable number
- Specker sequence