Разрешимые и перечислимые множества

advertisement
Разрешимые и перечислимые множества
Всякое математическое утверждение можно свести к утверждению о множествах. В этом
параграфе мы определим, что такое эффективный способ задания множества, что позволит формулировать утверждения о существовании или отсутствии алгоритмов решения
математических проблем на универсальном языке множеств.
Слово "алгоритм"далее мы понимаем в смысле любой точной модели. Как и ранее, понятие "вычислимая функция"мы употребляем как синоним понятия "частично рекурсивная
функция".
Определение. Множество X ⊆ N называется разрешимым (рекурсивным), если существует алгоритм, который по любому натуральному числу x определяет, принадлежит оно
множеству X или нет.
Характеристической функцией χX множества X называется функция
1, если x ∈ X;
χX (x) =
0, в противном случае.
Т.о., множество разрешимо, если его характеристическая функция общерекурсивна.
Упражнение. Показать, что объединение и пересечение конечного числа разрешимых
множеств, а также разность разрешимых множеств разрешимы. Любое конечное множество разрешимо.
Замечание. Существуют неразрешимые множества. Это следует из того, что алгоритмов счетное множество, а подмножеств натурального ряда несчетное множество.
Определение. Множество X
⊆ N называется перечислимым (рекурсивноперечислимым), если существует алгоритм, перечисляющий все элементы данного множества и только их.
Существует несколько эквивалентных определений перечислсмого множества.
1) Множество X ⊆ N перечислимо, если оно есть область определения частично рекурсивной функции.
2) Множество X ⊆ N перечислимо, если оно есть множество значений частично рекурсивной функции.
3) Множество X ⊆ N перечислимо, если его полухарактеристическая функция
0,
если x ∈ X;
0
χX (x) =
не определена в противном случае
частично рекурсивна.
4) Множество X ⊆ N перечислимо, если оно либо пусто, либо есть множество значений
общерекурсивной функции.
Доказательство эквивалентности определений.
Очевидны эквивалентность 2)⇔исходное определение и следования 4)⇒2), 3)⇒1). Если X – область определения частично рекурсивной функции f (x), то χ0X (x) = Z(f (x)).
Отсюда получаем 1)⇒3).
Пусть X перечислимо в смысле 4). Если X пусто, то оно является областью определения
нигде не определенной функции, которая частично рекурсивна (доказать!). В противном
случае X = E(f ) для некоторой общерекурсивной функции f . Но тогда функция g(x, y) =
f (x) − y частично рекурсивна и X является областью определения частично рекурсивной
функции µx(g(x, y) = 0). Таким образом, 4)⇒1).
1
2
Докажем 2)⇒4). Пусть X – множество значений частично рекурсивной функции g, и
пусть X 6= ∅. Существует машина Тьюринга Tg , вычисляющая значения данной функции.
Зафиксируем элемент x0 ∈ X. Определим функцию
g(x), если машина Tg останавливается на входе x не более чем через y шагов;
h(x, y) =
x0
в противном случае.
Эта функция всюду определена и вычислима, а значит, общерекурсивна по тезису Черча.
Тогда общерекурсивна и функция f (z) = h(l(z), r(z)), множество значений которой совпадает с X. (Здесь l(z) и r(z) - функции, которые восстанавливают по номеру z пары (x, y)
в канторовской нумерации соответственно первую и вторую компоненты. Эти функции
примитивно-рекурсивны.)
Пусть X = D(f ) для некоторой частично рекурсивной функции f . Для доказательства
1)⇒2) рассмотрим функцию h(x) = x + Z(f (x)). Она определена на том же множестве,
что и f , и ее множество значений совпадает с X.
C
Замечание 1. Имеется и еще одно, более сильное определение перечислимого множества: множество X ⊆ N перечислимо, если оно либо пусто, либо есть множество значений
примитивно-рекурсивной функции.
Замечание 2. Понятия разрешимости и перечислимости можно распространить и на
множества произвольной природы. В таком случае назовем множество X разрешимым
(перечислимым), если разрешимо (перечислимо) множество номеров его элементов в некоторой вычислимой нумерации.
Следующая теорема показывает, как связаны разрешимые и перечислимые множества.
Теорема (Пост). Множество X разрешимо тогда и только тогда, когда оно и его
дополнение до множества N перечислимы.
Доказательство. Неформальное, опирающееся на тезис Черча рассуждение таково.
Пусть X разрешимо и задается некоторым алгоритмом A. Тогда по очереди проверяем
принадлежность чисел 0, 1, 2,.. данному множеству и печатаем те, которые принадлежат
X, и те, которые не принадлежат X. Обратно, если X и его дополнение перечислимы,
то надо запустить оба перечисляющих алгоритма и ждать, который из них напечатает
x ∈ X.
Более формально: пусть X разрешимо и χX - его характеристическая функция. Тогда
функция χ0X = χX − 1 определена и равна 0 в точности на элементах из X, следовательно,
X перечислимо. В качестве полухарактеристической функции множества N \ X можно
взять χ0N\X = χX + (0 − χX ).
Пусть X и N \ X перечислимы. Если X = ∅ или X = N, то X разрешимо. Пусть
X & N. Тогда по определению 4) сушествуют такие общерекурсивные функции f1 и f2 ,
что X = E(f1 ), N \ X = E(f2 ). Положим g(z) = g(c(t, y)) = f1 (y)r(t, 2) + f2 (y)sg(r(t, 2)),
т.е. значение функции g в точке z0 = c(t0 , y0 ) совпадает со значением функции f1 в точке
y0 , если t0 – нечетное, и со значением f2 в точке y0 , если t0 четное. Функция g общерекурсивна. В качестве χX можно взять χX (x) = l(µz(|g(z) − x| = 0)). Поскольку мы выбираем
наименьшее значение z, такое, что |g(z) − x| = 0, то χX принимает только значения 0 или
1. При этом она всюду определена, а значит, общерекурсивна.
C
Из приведенных выше определений и теоремы мы видим, что перечислимость является
более слабым вариантом эффективности, чем разрешимость. Для перечислимого множества хотя и имеется порождающий его алгоритм, но попытка выяснить, принадлежит ли
некоторый элемент указанному множеству, может окончиться неудачей, если алгоритм не
выдаст искомый элемент достаточно быстро.
3
График вычислимой функции
В этом параграфе мы покажем связь введенного выше понятия перечислимого множества и понятия вычислимой функции.
Определение. Графиком функции f (x1 , .., xk ) называется множество
Γf = {(x1 , .., xn , f (x1 , .., xk )) | (x1 , .., xk ) ∈ D(f )} ⊆ Nk+1 .
Теорема. Функция f : N → N вычислима тогда и только тогда, когда ее график
является перечислимым множеством.
Доказательство. Для простоты ограничимся неформальным рассуждением. Пусть f
вычислима. Тогда существует алгоритм, перечисляющий ее область определения. Вычислим для каждого x из области определения значение f (x) и получим алгоритм, перечисляющий Γf .
Обратно, если имеется алгоритм, перечисляющий Γf , то f вычисляется следующим алгоритмом: имея на входе x, ждем появления пары, первый член которой равен x, и печатаем
ее второй член.
Точное доказательство теоремы проводится по плану:
– доказать, что графики исходных функций перечислимы;
– доказать, что если функция f получена из функций, графики которых перечислимы, по
правилу подстановки, рекурсии или применением µ-оператора, то график f перечислим.
Обратно, если Γf перечислимо, то по определению существует такая общерекурсивная
функция G двух переменных, что Γf = D(G). Но тогда f (x) = µy(Z(G(x, y)) = 0), откуда
получаем, что f частично рекурсивна.
C
Перечислимое неразрешимое множество
Далее везде считаем, что зафиксирована некоторая вычислимая нумерация вычислимых
функций.
Теорема. Существует перечислимое неразрешимое множество.
Доказательство. Рассмотрим вычислимую функцию f (x), не имеющую всюду определенного вычислимого продолжения (см. теорему 4 параграфа "Универсальные функции").
Ее область определения D(f ) и будет искомым множеством. В самом деле, D(f ) перечислимо по определению. По определению f ее область определения совпадает с множеством
тех x, при которых универсальная функция U (x, x) определена. По конструкции U это
множество есть множество самоприменимых программ. Если бы D(f ) было разрешимо,
то оказалась бы разрешимой проблема самоприменимости.
C
Теорема Райса
Выше мы доказали, что невозможно построить алгоритм, который по номеру n вычислимой функции f позволял бы определить, содержится n в D(f ) или нет. Оказывается, не
только это свойство вычислимых функций оказывается алгоритмически неразрешимым.
По номеру функции также нельзя узнать, например, будет ли она постоянной, периодической, ограниченной и т.д. А именно, имеет место следующая
Теорема (Райс). Никакое нетривиальное свойство вычислимых функций не является
алгоритмически разрешимым.
Переформулировка. Пусть C – произвольный непустой класс вычислимых функций одной переменной, не совпадающий с классом всех вычислимых функций одной переменной.
Тогда не существует алгоритма, который бы по номеру n функции fn определял, принадлежит fn классу C или нет.
4
Доказательство. Предположим, что множество M = {n | fn ∈ C} разрешимо, и пусть
χM – его характеристическая функция. Если нигде не определенная функция f0 не лежит
в C, то выберем какую-либо вычислимую функцию fa в C и зададим функцию F двух
переменных следующим образом:
fa (y), если fn (n) определено;
F (n, y) =
f0 (y), если fn (n) не определено.
Как нетрудно видеть, F вычислима. Если в F (n, y) зафиксировать n, то получим функцию от y. Номер этой функции зависит от значения n, т.е. является всюду определенной
функцией g(n). g(n) вычислима: применить алгоритм для fn к n, если он остановится, то
g(n) = a. Таким образом,
fa (y), если fn (n) определено;
fg(n) (y) =
f0 (y), если fn (n) не определено.
Следовательно, fg(n) лежит во множестве C (т.е. g(n) лежит во множестве M ) тогда и
только тогда, когда fn (n) определено. Рассмотрим функцию
1, если fn (n) определено;
χM (g(n)) =
0, если fn (n) не определено.
Поскольку по предположению множество M разрешимо, то мы получили разрешающую
функцию для проблемы самоприменимости. Противоречие.
Для случая f0 ∈ C выбираем fa , не лежащую в C; далее рассуждения аналогичны.
C
Не противоречит ли теорема Райса тому факту, что по номеру машины Тьюринга мы
всегда можем узнать, например, содержит ее программа более 10 команд или нет? Чтобы разобраться в смысле теоремы. нужно вспомнить. что номер вычислимой функции
f – это номер программы, вычисляющей f . По этому номеру однозначно восстанавливается программа, и разные номера соответствуют разным программам. Для функций это
неверно: разные номера могут соответствовать одной и той же функции. Смысл теоремы
Райса заключается в том, что невозможно составить алгоритм, по описанию программы
выясняющий свойства функции, которую данная программа вычисляет. Действительно,
на практике по тексту достаточно сложной программы трудно понять, что она делает,
не запуская ее в работу и не имея гипотезы о том, что она должна делать. В частности,
оказывается неразрешима проблема эквивалентности алгоритмов: составить алгоритм,
который позволяет по двум данным алгоритмам узнать, вычисляют они одну и ту же
функцию или нет.
Download