Вычислимые функции — различия между версиями
Leugenea (обсуждение | вклад) м |
м |
||
| Строка 2: | Строка 2: | ||
{{Определение | {{Определение | ||
|definition = (1) Функция <tex>f : N \rightarrow N \cup \lbrace \bot \rbrace</tex> называется '''вычислимой''', если существует программа, вычисляющая функцию <tex>f</tex>. То есть существует такая программа, что: | |definition = (1) Функция <tex>f : N \rightarrow N \cup \lbrace \bot \rbrace</tex> называется '''вычислимой''', если существует программа, вычисляющая функцию <tex>f</tex>. То есть существует такая программа, что: | ||
| − | # если <tex>f(n)</tex> определено для натурального числа <tex>n</tex>, то программа | + | # если <tex>f(n)</tex> определено для натурального числа <tex>n</tex>, то программа завершает свою работу на входе <tex>n</tex> и выводит <tex>f(n)</tex>; |
# если <tex>f(n)</tex> не определено, то программа зависает на входе <tex>n</tex>. | # если <tex>f(n)</tex> не определено, то программа зависает на входе <tex>n</tex>. | ||
}} | }} | ||
| Строка 9: | Строка 9: | ||
}} | }} | ||
| − | + | === Замечание === | |
| − | Входами и выходами программ могут быть не только натуральные числа, но и двоичные строки, пары натуральных чисел, конечные последовательности слов и т.п. Поэтому аналогичным образом можно определить понятие вычислимой функции для | + | Входами и выходами программ могут быть не только натуральные числа, но и двоичные строки, пары натуральных чисел, конечные последовательности слов и т.п. Поэтому аналогичным образом можно определить понятие вычислимой функции для счётных множеств. |
{{Теорема | {{Теорема | ||
| Строка 50: | Строка 50: | ||
}} | }} | ||
{{Утверждение | {{Утверждение | ||
| − | |statement = <tex>f</tex> — вычислимая функция. Тогда <tex>E(f)</tex> — перечислимое множество, где <tex>E(f)</tex> — область | + | |statement = <tex>f</tex> — вычислимая функция. Тогда <tex>E(f)</tex> — перечислимое множество, где <tex>E(f)</tex> — область значений функции <tex>f</tex>; |
|proof = | |proof = | ||
Для доказательства достаточно написать полуразрешающую программу. | Для доказательства достаточно написать полуразрешающую программу. | ||
Версия 02:40, 20 декабря 2011
Содержание
Основные определения
| Определение: |
(1) Функция называется вычислимой, если существует программа, вычисляющая функцию . То есть существует такая программа, что:
|
| Определение: |
| (2) Функция называется вычислимой, если её график определено и равно является перечислимым множеством пар натуральных чисел. |
Замечание
Входами и выходами программ могут быть не только натуральные числа, но и двоичные строки, пары натуральных чисел, конечные последовательности слов и т.п. Поэтому аналогичным образом можно определить понятие вычислимой функции для счётных множеств.
| Теорема: |
Определения (1) и (2) эквивалентны. |
| Доказательство: |
|
for if return 1 Так как область определения вычислимой функции перечислима, то можно перебрать элементы области определения. Если алгоритм нашел нужную нам пару, то вернуть 1. for if returnТак как перечислимое множество, то можно перебрать элементы этого множества. |
Примеры вычислимых функций
- Нигде не определённая функция вычислима.
return
- , где — рациональное число.
return
Свойства вычислимой функции
| Утверждение: |
— вычислимая функция. Тогда — перечислимое множество, где — область определения функции . |
|
Для доказательства достаточно написать полуразрешающую программу. return 1Если функция определена на входе , следовательно, . Тогда необходимо вернуть 1. Иначе программа зависнет при вызове . |
| Утверждение: |
— вычислимая функция. Тогда — перечислимое множество, где — область значений функции ; |
|
Для доказательства достаточно написать полуразрешающую программу. for if return 1Так как перечислимо, то можно перебрать элементы этого множества. Если программа находит слово, то она возвращает 1. |
| Утверждение: |
— вычислимая функция, — перечислимое множество. Тогда — перечислимое множество. |
|
Для доказательства достаточно написать полуразрешающую программу. for if return 1Из замкнутости перечислимых языков относительно операции пересечения следует, что элементы множества можно перебрать. Если программа находит слово, то она возвращает 1. |
| Утверждение: |
— вычислимая функция, — перечислимое множество. Тогда — перечислимое множество. |
|
Для доказательства достаточно написать полуразрешающую программу. if return 1На проверке условия программа может зависнут, если не определено или . Если не определено, то . Условие можно проверить, так как перечислимо. |
Теорема об униформизации
| Теорема: |
Пусть — перечислимое множество пар натуральных чисел. Тогда существует вычислимая функция , определенная на тех и только тех , для которых найдется , при котором , причем значение является одним из таких . |
| Доказательство: |
|
Напишем программу, вычисляющую функцию . for if returnТак как множество перечислимо, то его элементы можно перебрать. |
Теорема о псевдообратной функции
| Теорема: |
Для любой вычислимой функции существует вычислимая функция , являющаяся псевдообратной в следующем смысле: , и при этом для всех , при которых определена. |
| Доказательство: |
|
Напишем программу, вычисляющую функцию . for if returnТак как область определения вычислимой функции перечислима, то можно перебрать элементы области определения. |
Литература
- Верещагин Н. К., Шень А. Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции — М.: МЦНМО, 1999 - С. 176