Вычислимые функции — различия между версиями
м |
|||
| Строка 1: | Строка 1: | ||
| + | == Основные определения == | ||
{{Определение | {{Определение | ||
| − | |definition = Функция <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>n</tex> и выводит <tex>f(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>. | ||
}} | }} | ||
| + | {{Определение | ||
| + | |definition = (2) Функция <tex>f : N \rightarrow N \cup \lbrace \bot \rbrace</tex> называется '''вычислимой''', если её график <tex>F = \lbrace \langle x, y\rangle | f(x)</tex> определено и равно <tex>y \rbrace</tex> является [[Перечислимые_языки|перечислимым]] множеством пар натуральных чисел. | ||
| + | }} | ||
| + | |||
''Замечание''<br/> | ''Замечание''<br/> | ||
Входами и выходами программ могут быть не только натуральные числа, но и двоичные строки, пары натуральных чисел, конечные последовательности слов и т.п. Поэтому аналогичным образом можно определить понятие вычислимой функции для счетных множеств. | Входами и выходами программ могут быть не только натуральные числа, но и двоичные строки, пары натуральных чисел, конечные последовательности слов и т.п. Поэтому аналогичным образом можно определить понятие вычислимой функции для счетных множеств. | ||
| Строка 14: | Строка 19: | ||
p(x) | p(x) | ||
'''return''' <tex>x^2</tex> | '''return''' <tex>x^2</tex> | ||
| + | |||
| + | {{Теорема | ||
| + | |statement = Определения (1) и (2) эквивалентны. | ||
| + | |proof = <tex>1 \Rightarrow 2</tex><br/> | ||
| + | Напишем программу полуразрешающую <tex>F</tex>. | ||
| + | p(<tex>\langle x, y\rangle</tex>) | ||
| + | '''for''' <tex>a \in D(f)</tex> | ||
| + | '''if''' a == x && f(a) == y | ||
| + | '''then return''' 1 | ||
| + | Так как [[#D(f)|область определения вычислимой функции перечислимо]], то можно перебрать элементы области определения.<br/> | ||
| + | <tex>2 \Rightarrow 1</tex><br/> | ||
| + | Напишем программу, вычисляющую <tex>f</tex>. | ||
| + | f(n) | ||
| + | '''for''' <tex>\langle x, y \rangle \in F</tex> | ||
| + | '''if''' x == n | ||
| + | '''then return''' y | ||
| + | Так как <tex>F</tex> перечислимое множество, то можно перебрать элементы этого множества. | ||
| + | }} | ||
== Свойства вычислимой функции == | == Свойства вычислимой функции == | ||
{{Утверждение | {{Утверждение | ||
| − | |statement = <tex>f</tex> — вычислимая функция. Тогда <tex>D(f)</tex> — | + | |id = D(f) |
| + | |statement = <tex>f</tex> — вычислимая функция. Тогда <tex>D(f)</tex> — перечислимое множество, где <tex>D(f)</tex> — область определения функции <tex>f</tex>. | ||
|proof = | |proof = | ||
Для доказательства достаточно написать полуразрешающую программу. | Для доказательства достаточно написать полуразрешающую программу. | ||
Версия 07:55, 10 декабря 2011
Содержание
Основные определения
| Определение: |
(1) Функция называется вычислимой, если существует программа, вычисляющая функцию . То есть существует такая программа, что:
|
| Определение: |
| (2) Функция называется вычислимой, если её график определено и равно является перечислимым множеством пар натуральных чисел. |
Замечание
Входами и выходами программ могут быть не только натуральные числа, но и двоичные строки, пары натуральных чисел, конечные последовательности слов и т.п. Поэтому аналогичным образом можно определить понятие вычислимой функции для счетных множеств.
Примеры вычислимых функций
- Нигде не определённая функция вычислима.
p(x)
return
- , где — рациональное число.
p(x)
return
| Теорема: |
Определения (1) и (2) эквивалентны. |
| Доказательство: |
|
p() for if a == x && f(a) == y then return 1 Так как область определения вычислимой функции перечислимо, то можно перебрать элементы области определения. f(n)
for
if x == n
then return y
Так как перечислимое множество, то можно перебрать элементы этого множества. |
Свойства вычислимой функции
| Утверждение: |
— вычислимая функция. Тогда — перечислимое множество, где — область определения функции . |
|
Для доказательства достаточно написать полуразрешающую программу. p(x) f(x) return 1Если функция определена на входе , следовательно, . Тогда необходимо вернуть 1. Иначе программа зависнет при вызове . |
| Утверждение: |
— вычислимая функция. Тогда — перечислимое множество, где — область изменения функции ; |
|
Для доказательства достаточно написать полуразрешающую программу. p(x)
for
if x == f(y)
then return 1
Так как перечислимо, то можно перебрать элементы этого множества. Если программа находит слово, то она возвращает 1. |
| Утверждение: |
— вычислимая функция. — перечислимое множество, где — перечислимое множество. |
|
Для доказательства достаточно написать полуразрешающую программу. p(x)
for
if x == f(y)
then return 1
Из замкнутости перечислимых языков относительно операции пересечения следует, что элементы множества можно перебрать. Если программа находит слов, то она возвращает 1. |
| Утверждение: |
— вычислимая функция. — перечислимое множество, где — разрешимое множество. |
| Для доказательства достаточно написать полуразрешающую программу. |
| Утверждение: |
— вычислимая функция. — перечислимое множество, где — перечислимое множество. |
| Для доказательства достаточно написать полуразрешающую программу. |
Теорема об униформизации
| Теорема: |
Пусть — перечислимое множество пар натуральных чисел. Тогда существует вычислимая функция , определенная на тех и только тех , для которых найдется , при котором , причем значение является одним из таких . |
| Доказательство: |
|
Напишем программу, вычисляющую функцию . f(x)
for
if x == a
then return b
Так как множество перечислимо, то его элементы можно перебрать. |
Теорема о псевдообратной функции
| Теорема: |
Для любой вычислимой функции существует вычислимая функция , являющаяся псевдообратной в следующем смысле: , и при этом для всех , при которых определена. |
Литература
- Верещагин Н. К., Шень А. Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции -- М.: МЦНМО, 1999 - С. 176