Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория алгоритмов.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

8.2. Рекурсивно перечислимые множества

Определение 8.4. Множество М называется рекурсивно перечислимым, если существует двуместная примитивно рекурсивная функция f(a, x) такая, что уравнение f(a, x)=0 имеет решение тогда и только тогда, когда a M.

Теорема 8.2. Непустое множество М рекурсивно перечислимо тогда и только тогда, когда оно совпадает с совокупностью всех значений некоторой одноместной примитивно рекурсивной функции F(x).

Доказательство. Необходимость. По условию М и М – рекурсивно перечислимо. Пусть f(a, x) та примитивно рекурсивная функция для М, о которой говорится в определении 8.4:

(1).

Построим примитивно рекурсивную функцию F(x), перечисляемую М. Для этого воспользуемся соотношением (1) и канторовскими нумерующими примитивно рекурсивными функциями С(x, y), l(x) и r(x) из §4. Заметим, что

F(l(t), r(t))=0 l(t) M (2).

Тогда искомую функцию F(x) можно определить следующим образом:

(3),

где m-некоторый фиксированный элемент М.

Убедимся вначале, что при любом t F(t) M:

  1. если t таково, что f(l(t), r(t))=0, то ( f(l(t), r(t)))=1 и F(t)=l(t) M;

  2. если же t таково, что f(l(t), r(t)) 0, то (f(l(t), r(t)))=0 и F(t)=m.

Следовательно, .

А теперь покажем,что любое a M порождается функцией F : возьмем t0=C(a,x0), где x0-какое-то решение уравнения f(a,x)=0. Тогда l(t0)=a, r(t0)=x0 и . Итак, М={F(x)} и F(x) – примитивна рекурсивна.

Достаточность. Пусть F(x) – некоторая примитивно рекурсивная функция, перечисляющая множество М, т. е. M={F(x)}. Тогда, уравнение |F(x)-a|=0 имеет решение тогда и только тогда, когда F(x)=a M, т. е. М – рекурсивно перечислимо в смысле определения 8.4.

Теорема 8.3. Множество М рекурсивно перечислимо тогда и только тогда, когда оно совпадает с совокупностью всех значений некоторой одноместной частично рекурсивной функции.

Теорема 8.2. и 8.3. позволяют нам сформулировать новые определения рекурсивно перечислимого множества, эквивалентные определению 8.4.

Определение 8.5. Множество М называется рекурсивно перечислимым, если оно или пустое, или совпадает с областью значений подходящей одноместной примитивно рекурсивной функции F(x), т.е. M={F(0),F(1),F(2),…} F(x) ).

Определение 8.6. Множество М называется рекурсивно перечислимым, если оно совпадает с областью значений подходящей одноместной частично рекурсивной функции F(x), т.е. M={F(x)}.

На интуитивном уровне множество считается рекурсивно перечислимым, если существует алгоритмический процесс для перечисления (возможно с повторениями) его элементов. Поэтому более естественным кажется определение 8.6. Однако в ходе дальнейших рассуждений мы будет пользоваться всеми тремя определениями.

Теорема 8.4. Любое рекурсивное множество является рекурсивно перечислимым.

Доказательство. Пусть М рекурсивно и f(x) – его характеристическая функция. Будем считать, что М не пусто и пусть число, а М.

Рассмотрим функцию

(4)

Заметим, что если x М, то f(x)=1 и F(x)=x. Если же x М, то f(x)=0 и поэтому F(x)=а.

Таким образом, функция F(x) перечисляет множество М, она общерекурсивна и, согласно определению 8.6, М – рекурсивно перечислимо.

Теорема 8.5. Объединение и пересечение любой конечной системы рекурсивно перечислимых множеств суть множества рекурсивно перечислима.

Доказательство. Пусть М0, М1,…,Мk-1 какие-то рекурсивно перечислимые множества, т.е. существуют (определение 8.5.) примитивно рекурсивные функции φ0(x),φ1(x),…,φk-1(x) такие, что: Mi={φi(x)}, (i=0, 1, 2, …, k-1). Докажем, что А= рекурсивно перечислимо.

Рассмотрим примитивно рекурсивные функции gi(x)= (|rest(x, k) i|), i=0, 1, …, (k-1). Заметим, что gi(x)=1 тогда и только тогда, когда остаток от деления х на k rest(x, k) равен i. Например, g0(x)=1 для всех чисел, кратных k.

А теперь убедимся, что примитивно рекурсивная функция

(5)

перечисляет множество А.

В самом деле, для любого x=aּk+s, где 0≤s<k, имеем: gs(x)=1, а другие gi(x)=0 (i s). Следовательно, F(x)=F(ak+s)=φs([ ])ּ1=φs(a) Ms A. Т.е. , получили, что {F(x)} A.

С другой стороны, если у0 А, то y0 Mr для некоторого 0≤ r <k и y0=φr(t0) при некотором t0. Поэтому при x=t0ּk+r из (5) получим: . Значит .

Таким образом, функция F(x) перечисляет множество А и она примитивно рекурсивна.

Доказательство второй части теоремы проведем для случая k=2.

Пусть B=M0 M1. Введем функцию

(6)

Заметим, что если G(x0) определена, то φ1(x0) B, потому что в этом случае φ0(t)= φ1(x0). А это значит, что φ1(x0) есть значение функции φ0 при некотором t т. е. φ1(x0) М0. В то же время φ1(x0) М1, поскольку φ1 перечисляет М1. Следовательно, φ1(x0) B.

Теперь покажем, что частично рекурсивная функция F(x)=φ0(G(x)) порождает множество B.

В самом деле, пусть x B. Тогда x М0 и при некотором наименьшем t1: φ0(t1)=x. В то же время x М1 и поэтому при некотором наименьшем t2: φ1(t2)=x. Посмотрим, чему равно F(t2)? .

Поскольку х – произвольный элемент B, то F(x) перечисляет множество B. Теорема доказана.

Сравнивая теоремы 8.1 и 8.5 естественно спросить: а является ли рекурсивно перечислимым дополнение любого рекурсивно перечислимого множества? Позднее мы убедимся, что это не так. Тем не менее, дополнения некоторых рекурсивно перечислимых множеств снова рекурсивно перечислимы.

Теорема 8.6 (Э. Пост). Если какое-либо множество М рекурсивно перечислимо и его дополнение также рекурсивно перечислимо, то множество М, а значит, и множество рекурсивны.

Доказательство. Допустим, что M={f(0),f(1),f(2),…} и ={g(0),g(1),g(2),…}, где f(x) и g(x) подходящие примитивно рекурсивные функции. Рассмотрим функцию

G(x)=μt{|f(t)-x|ּ|g(t)-x|=0} (7).

Заметим, что если x M, то ни при каком t g(t)≠x, а при некотором t f(t)=x. Пусть t1 наименьшее из таких. Тогда G(x)=t1 и f(t1)=x.

Если же x M, то x и, следовательно. Ни при каком t f(t)≠x, но при некотором наименьшем t2 g(t2)=x. Тогда G(x)=t2 и f(t2) x.

Получили: f(G(x))=x x M. Поэтому функция χ(x)= (|f(G(x))-x|) принимает единицу тогда и только тогда, когда x M. В остальных случаях значение ее равно нулю.

Итак, χ(x) – характеристическая функция множества М, она всюду определена и принадлежит классу Krp. Следовательно, М – рекурсивно.

Рекурсивность следует из теоремы 8.1.

Теорема 8.7. Область определения любой частично рекурсивной функции F(x) есть множество рекурсивно перечислимое.

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

Этап 1. Выполним один шаг в вычислении значения F(0). Если при этом процесс вычисления F(0) завершится, то это значит, что 0 M и назовем 0 первым элементом M. В противном случае вычисление F(0) продолжим и в следующем этапе.

Этап (n+1). Выполним по (n+1)-му шагу в вычислениях значений F(0), F(1), … , F(n) (если какие-то из этих вычислений завершились на раннем этапе, то их не продолжаем). Если для некоторого i≤n процесс вычисления F(i) завершится на (n+1)-ом этапе, то такие i являются элементами множества М и их засчитываем (нумеруем) по мере появления.

Заметим, что если a M то F(a) определена и вычисление значения F(a) завершится за конечное число шагов. Следовательно, число a обязательно появится на каком-то этапе нашего процесса.

Воспользуемся описанным процессом для задания функции α(х): α(0)=k, для которого процесс вычисления значения F(k) завершился первым;

В силу тезиса Чёрча частична рекурсивна. Нетрудно видеть, что перечисляет множество М. Следовательно, М – рекурсивно перечислима.

В заключение построим пример рекурсивно перечислимого множества, которое не является рекурсивным.

Определение 8.7. Пусть нам дана частичная функция f(x1,…, xn). Всюду определенная функция F(x1,…, xn) называется доопределением f, если для любых x1,…, xn, для некоторых функция f определена, имеет место равенство f(x1,…, xn)= F(x1,…, xn).

Например, является частичной. Функцию можно считать доопределением f.

Нетрудно догадаться, что любая частичная функция может иметь много доопределений.

Определение 8.8. Доопределение функции называется рекурсивным, если , т. е. когда общерекурсивная функция.

Теорема 8.8. а) Функция T(n, x), универсальная для класса одноместных частично рекурсивных функций (см §6), не имеет рекурсивных доопределений.

б) Существует частично рекурсивная функция W(x), принимающая лишь значения 0 и 1 и не имеющая рекурсивных доопределений.

Доказательство. Начнём с б) Докажем, что функция

(7)

Не имеет рекурсивных доопределений.

Допустим, что U(x)- рекурсивное доопределение W(x). Тогда U(x) и при некотором k мы имеем:

U(x)= T(n, x) (8)

причём, соотношение (8) верно при всех х, в том числе и при x=k:

U(k)= T(k, k) . Из этого следует, что

(9)

Но

(10)

А это говорит о том, что W(k) определена и поэтому

W(k)=U(k) (11)

Из (9), (10) и (11) получаем невозможное равенство: Следовательно, функция W(х) не может быть рекурсивно доопределена. Кроме того, она принимает лишь значения 0 и 1.

А теперь, поскольку из рекурсивной доопределимо функции T(n,x) легко следует рекурсивная доопределимость W(x), то и T(n,x) не имеет рекурсивных доопределений.

Теорема 8.9. Существует нерекурсивное рекурсивно перечислимое множество.

Доказательство. Рассмотрим функцию W(x) из теоремы 8.8, которая не имеет рекурсивных доопределений. Пусть M0 – область определения W(x) . Согласно теореме 8.7 M0 –рекурсивно перечислимо. Покажем, что М0 не рекурсивно.

Допустим, что М0 рекурсивно и χ(х) его характеристическая функция. Тогда χ(х) общерекурсивна и χ(х)=1 х М0. Пусть a какой-то элемент M0. Образуем частично рекурсивную функцию

.

Убедимся, что U(x) рекурсивное доопределение W(x): при любых х значение выражения

xχ(x)+a

принадлежит М0 и поэтому U(x) всюду определена. Далее, если x M0, то U(x)=W(x), а если x M0, то χ(x)=0, и поэтому U(x)=W(a).

Получили, что W(x) имеет рекурсивное доопределение, что противоречит предыдущей теореме. Следовательно, M0-не рекурсивно. Теорема доказано.

Если теперь рассмотрим – дополнение множества М0, то оно не является рекурсивно перечислимым, иначе по теореме Поста М0 было бы рекурсивным. Итак, - не рекурсивно перечислимо.

Вопросы для самоконтроля.

  1. Докажите примитивно рекурсивность:

а) множества чисел, кратных некоторому простому p;

б) совокупность всех простых чисел;

в) {1, 2, 4, 8, 16, 32, …, 2k, …}

2. Пользуясь десятичным представлением числа ℮=2,71828183…ak ּak+1…ak+s… ,образуем числовое множество: из первых десяти разрядов после запятой образуем одноразрядные числа, далее отделяя по два знака – сто двузначных чисел, из оставшейся последовательности выделим тысячу трёхзначных чисел и т. д. Будет ли полученное множество рекурсивным?

3. Рассмотрим множество М, полученное следующим образом: тогда и только тогда, когда в десятичной записи иррационального числа имеется подряд х нулей.

Обоснуйте, почему М рекурсивно перечислимо, но не рекурсивно?