Опубликован: 16.03.2007 | Доступ: свободный | Студентов: 531 / 43 | Оценка: 4.45 / 4.18 | Длительность: 15:50:00
Специальности: Программист, Математик
Лекция 7:

Вычисления с оракулом

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >

Релятивизация

Пусть фиксирована некоторая всюду определенная функция \alpha. Тогда вся теория вычислимых функций может быть, как говорят, " релятивизована" относительно \alpha, если во всех определениях и формулировках заменить вычислимые функции на функции, вычислимые относительно \alpha (которые для краткости называют также \alpha - вычислимыми ). При этом все сформулированные выше результаты остаются в силе, и доказательства остаются почти такими же.

В частности, можно определить понятие перечислимого относительно \alpha (или \alpha - перечислимого ) множества любым из эквивалентных способов: как область определения \alpha -вычислимой функции, как множество значений \alpha -вычислимой функции, как проекцию \alpha -разрешимого (разрешимого относительно \alpha ) множества и т.д. Можно указать и более прямое описание класса \alpha -перечислимых множеств.

Пусть E произвольноe множество пар вида \langle x,
t\rangle, где x число, а t образец. Пусть \alpha некоторая всюду определенная функция. Отберем в множестве E те пары, у которых вторые члены являются частью \alpha ; первые члены таких пар образуют множество, которое мы обозначим E[\alpha ].

Теорема 46. Множество X является \alpha -перечислимым тогда и только тогда, когда X=E[\alpha ] для некоторого перечислимого множества E. (Заметим, что в этом случае не требуется никакого специального условия типа корректности.)

Пусть X есть область определения вычислимой относительно \alpha функции f. Тогда f=M[\alpha ] для некоторого перечислимого корректного множества M. Оставим от всех троек в M только первый и третий члены; получится некоторое перечислимое множество E. Легко проверить, что E[\alpha ] будет областью определения функции M[\alpha ]=f, так что E[\alpha ]=X.

Напротив, пусть X=E[\alpha ] для некоторого \alpha. Тогда рассмотрим множество M, которое получится, если в середину каждой пары из E добавить число 0. Ясно, что множество M будет корректным и что M[\alpha ] будет функцией, определенной на X=E[\alpha ] и принимающей только нулевые значения.

В обычной (нерелятивизованной) теории алгоритмов, важную роль играет теорема об универсальной функции. Она остается верной и после релятивизации:

Теорема 47. Пусть \alpha всюду определенная функция. Существует вычислимая относительно \alpha функция двух аргументов, являющаяся универсальной для класса вычислимых относительно \alpha функций одного аргумента.

Как и в других случаях, можно почти без изменений воспроизвести доказательство соответствующей нерелятивизованной теоремы. Фиксируем какой-то язык программирования (предусматривающий на этот раз вызовы внешних процедур) и перенумеруем все программы, которые включают в себя вызовы внешней процедуры \alpha. Теперь в качестве универсальной можно взять функцию

U_{\alpha  }(i,x)=(результат\ применения\ i-ой\ программы\ к\ x).

Мы использовали нижний индекс, чтобы подчеркнуть, что функция U_{\alpha } зависит от \alpha. Впрочем, текст вычисляющей ее программы от \alpha не зависит (хотя, естественно, содержит вызовы функции \alpha ).

Поучительно привести и другое доказательство, которое опирается на определение вычислимости в терминах корректных перечислимых множеств.

Рассмотрим универсальное перечислимое множество Z четверок вида \langle n, x,y,t\rangle, где n, x и y числа, а t образец. Говоря об универсальности, мы имеем в виду, что при различных n среди сечений Zn содержатся все перечислимые множества троек.

Среди этих перечислимых множеств троек могут быть и корректные, и некорректные. Мы хотим принудительно корректировать некорректные сечения, не меняя корректных. Другими словами, мы хотим построить новое перечислимое множество Z' с такими свойствами: во-первых, все сечения Z' корректны; во-вторых, если сечение Zn при некотором n было корректно, то оно не изменилось ( Z'n=Zn ).

Это делается просто: нужно перечислять Z, отбрасывая (не пропуская в Z' ) элементы, добавление которых делает некоторое сечение некорректным. Итак, мы построили перечислимое множество Z', универсальное для класса корректных перечислимых множеств.

Теперь легко указать корректное множество W, задающее универсальную \alpha -вычислимую функцию. Именно, тройка \langle \langle n,x\rangle, y, t\rangle (теперь ее первым членом является пара, так как универсальная функция зависит от двух аргументов) принадлежит W, если \langle
n,x,y,t\rangle\hm\in Z'. Легко понять, что множество W корректно. При данной функции \alpha это корректное множество задает некоторую \alpha -вычислимую функцию U_{\alpha } двух аргументов; ее n -ое сечение есть Z'_{n}[\alpha ], где Z'n n -ое сечение множества Z'. Поэтому среди сечений функции U_{\alpha } встречаются все \alpha -вычислимые функции, что и требовалось доказать.

В релятивизованной теории алгоритмов имеется, конечно, и аналог понятия главной универсальной функции: \alpha -вычислимую функцию двух аргументов называют главной универсальной функцией для класса \alpha -вычислимых функций одного аргумента, если она \alpha -вычислима, универсальна для класса \alpha -вычислимых функций одного аргумента и для всякой \alpha -вычислимой функции V двух аргументов существует всюду определенная \alpha -вычислимая функция s одного аргумента (" транслятор"), для которой V(n,x)=U(s(n),x) при всех n и x.

Обычное доказательство (теорема 15) показывает, что главные универсальные функции для класса \alpha -вычислимых функций существуют. Более того, можно заметить, что построенная при доказательстве (см. выше) функция s будет не только \alpha -вычислимой, но и просто вычислимой (в одном из вариантов доказательства функция s имела вид x\hm\mapsto[n,x], где квадратные скобки обозначают фиксированную вычислимую нумерацию пар, а n некоторое фиксированное число).

Удобно, говоря о номерах \alpha -вычислимых функций, иметь в виду их номера в таких " сильно главных" нумерациях. Естественная нумерация (порядковые номера программ) является " сильно главной" нумерацией.

Говоря о релятивизованной теории алгоритмов, иногда употребляют такую метафору. Пусть A какое-то неразрешимое множество. Может оказаться, что есть такая внеземная цивилизация, которой множество A кажется разрешимым; глядя на число x, они сразу понимают, лежит ли оно в множестве A или нет, и эта проверка такое же элементарное действие в их программах, как у нас сравнение двух чисел. Тогда вся их теория алгоритмов будет автоматически релятивизованной относительно A, но они этого замечать не будут и потому прочтут наши рассуждения вплоть до этого раздела (не включая его) и согласятся со всеми теоремами. Более того, они могут прочесть и этот раздел о релятивизации но то, что для них будет B -вычислимым, для нас будет A - B -вычислимым (вычислимым с двумя оракулами A и B ).

Впрочем, к этой метафоре не стоит относиться слишком серьезно.

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >