Изменения

Перейти к: навигация, поиск

Универсальная функция

64 байта добавлено, 21:59, 16 октября 2016
Нет описания правки
{{Теорема
|statement=Существует универсальная функция для класса вычислимых функций одного аргумента
|proof=Зафиксируем какой-либо язык программирования. Пусть программами на этом языке являются слова над алфавитом <tex>\Sigma</tex>. Программа будет иметь номер <tex>n</tex>, если ее код {{--- }} <tex>n</tex>-е слово среди всех слов над алфавитом <tex>\Sigma</tex>, отсортированных сначала по возрастанию длины, а при равной длине {{- --}} в лексикографическом порядке. При этом если <tex>n</tex>-я программа не компилируется, будем считать, что она всегда зависает. Рассмотрим функцию <tex>U(n,x):\mathbb{N}\times\mathbb{N}\rightarrow\mathbb{N}\cup\perp</tex> такую, что <tex>U(n,x)=p_n(x)</tex>, где <tex>p_n</tex> {{-- -}} <tex>n</tex>-я программа. Заметим, что по определению вычислимой функции существует программа, вычисляющая ее. Но в заданной нумерации у любой программы есть номер. Таким образом для любой вычислимой функции <tex>f</tex> существует номер <tex>n: U(n,x)=f(x)</tex>. И наоборот {{- --}} <tex>f_n=U(n)</tex> - является вычислимой функцией. Вычисляющая программа для <tex>U</tex> содержит интерпретатор для зафиксированного языка программирования, по номеру программы (первый аргумент) восстанавливает ее код, и передает ей второй аргумент, возвращая результат ее работы. Таким образом <tex>U_n(x)=U(n,x)</tex> {{- --}} вычислима для любого <tex>n\in\mathbb{N}</tex>, и <tex>\forall f(x) \exists n\in\mathbb{N}: f(x)=U(n,x)</tex>, <tex>f(x)</tex> {{- --}} вычислима, значит U(n,x) {{- --}} универсальная функция.
}}
{{Теорема
|statement=Существует главная нумерация.
|proof=Рассмотрим универсальную функцию, построенную ранее, и нумерацию, соответствующую ей. Обозначим программу, вычисляющую функцию <tex>V(n,x)</tex> как <tex>v(n,x)</tex>. Построим программу (назовем ее <tex>s</tex>) с одним параметром {{- --}} <tex>m</tex>, которая генерирует код программы <tex>v(n,x)</tex>, но с фиксированным <tex>n = m</tex>, и возвращает ее номер в заданной нумерации. Построенная программа вычисляет искомую функцию для универсальной двуместной функции <tex>U</tex> и двуместной функции <tex>V</tex>, то есть <tex>V(n,x)=U(S(n),x)</tex>, где <tex>S</tex> {{--- }} функция, вычисляемая программой <tex>s</tex>. Из вычислимости <tex>v</tex> следует существование <tex>V</tex>, и за конечное время мы можем вернуть номер любой программы в выбранной нумерации. Таким образом <tex>S</tex> {{--- }} вычислимая, всюду определенная.
}}
не определённая функция имела единственный номер. Пусть <tex>U(n,x)</tex>- произвольная вычислимая универсальная функция.
Теперь возьмем перечислимое множество <tex>D</tex> всех <tex>U</tex>-номеров всех функций таких, что их область определения непуста. Пусть функция <tex>d</tex> есть всюду определенная функция перечисляющая множество <tex>D</tex>. Рассмотрим функцию <tex>V(i, x)</tex>, для которой <tex>V(0, x)</tex> не определено ни при каком <tex>x</tex>, а <tex>V(i+1, x) = U(d(i), x)</tex>. То есть, функция <tex>V_0</tex> нигде не определена, а функция <tex>V_{i+1}</tex> совпадает с <tex>U_{d(i)}</tex>. Очевидно, функция <tex>V</tex> вычислима и универсальна (по построению), а единственным <tex>V</tex>-номером нигде не определённой функции является число <tex>0</tex>. Тогда нумерация, соответствующая этой функции является неглавной.
b z
== Источники информации ==
* [http://www.mccme.ru/free-books/shen/shen-logic-part3-2.pdf ''Н. К. Верещагин, А. Шень.'' '''Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции.''' — М.: МЦНМО, 1999, с. 16. ISBN 5-900916-36-7 ]
Анонимный участник

Навигация