Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
main_ta.doc
Скачиваний:
19
Добавлен:
16.09.2019
Размер:
2.29 Mб
Скачать

Лекція 4. Частково рекурсивні та примітив­но рекурсивні функції

В цьому парагрфі ми розглядатимемо функції / : N9 — N0, де N0 = N ЦІ {0}. Ми побудуємо клас всіх функцій такого виду з допомо­гою тільки трьох найпростіших функцій і двох операцій над такими функціями. Даний підхід до формалізації поняття алгоритму нале­жить Геделю. Основна ідея Геделя полягала в тому, щоб одержати всі обчислювальні функції із невеликої кількості базових функцій з допомогою найпростіших алгоритмічних засобів. Назвемо найпростішими такі функції:

  • нуль-функцію: О(х) = 0, х Є N0;

  • функцію наступності: 8(х) = х +1, х Є N0;

  • функції проектування: РП (х1 , , ... , і , . . . п ) — і , і ^Е N0.

До даних функцій будемо застосовувати такі операції.

Композиція. Нехай т,к Є N і нехай задано числові функції д : N9^ — N0 і Ні : N9 — N0, де і = 1,2,...,т. Визначимо функцію / : N — N0 за правилом

/ (т, ...,пк) = д(Н1 (п1,.. .,пк),..., Нт (п1,.. .,пк)).

Кажемо, що функція / одержана з допомогою операції композиції з функцій д і Н1,..., Нт. Функцію / позначимо через д о (Н1,..., Нт).

Примітивна рекурсія. Нехай к Є N0 і нехай задано числові функції д : N9 — N0 і Н : — N0 (в випадку, коли к = 0, функція

  1. Приклад. Довести, що сталі функції С%(п1 ,п2,... ,пк) = а, де к, а Є М0, є примітивно рекурсивними.

Дані функції можна зобразити у вигляді скінченної кількості композицій примітивно рекурсивних функцій

Ска (п1 ,П2, ...,пк) = 5 (5... (8к (п1 ,П2,.. .,пк)))...).

а

  1. Приклад. Довести, що функція 5ита : М2 ^ М0, 8пта(и,т) = п + т є примітивно рекурсивною.

Функцію 5ита можна визначити наступним чином.

5ита(п, 0) = п = РІ (п),

8ита(и, т + 1) = п +(т + 1) = (п+т) + 1 = 5(Р33(п, т, 8ита(и, т))). Отже, 5ита є примітивно рекурсивною функцією, оскільки її одер­жано з примітивно рекурсивних функцій Р1 : М0 ^ М0 і 5 о Р33 : М3 ^ М0 з допомогою операції примітивної рекурсії.

  1. Приклад. Довести, що функція Ргой : М2 ^ М0, Ртоії(и,т) = пт є примітивно рекурсивною.

Функцію Ргод, можна одержати з примітивно рекурсивних фун­кцій О і Бита о (Р| ,Р.3) з допомогою операції примітивної рекурсії наступним чином.

Ргоії(и, 0) = 0 = О(п), Ртой(и, т + 1) = п(т + 1) = пт + п = = 8ита(Р-33(п, т, Рго<і(п, т)), Р3(п, т, Рго<і(п, т))).

  1. Приклад. Довести, що функція Ехр(п,т) = пт є примітивно рекурсивною.

Функцію Ехр можна визначити як

Ехр(п, 0) = 1 = 5(О(п)), Ехр(п, т + 1) = пт+1 = птп = = Ргод^Рз3(п, т, Ехр(п, т)),Р3(п, т, Ехр(п, т))).

  1. Приклад. Довести, що функції

Г0 п = 0

а) Ргес : М0 ^ М0, Ргес(п) = п + 1 = < '

І п — 1,п > 0

І 0 п ^ ті

б) Міпиз : М2 ^ М0, Міпиз(п, т)= п + т = < ' _

п — т,п > т

в) А6й(п, т) = |п — т| є примітивно рекурсивними.

а) Функцію Ргес можна одержати з константи і проектування Р2 : М2 ^ М0 з допомогою операції примітивної рекурсії.

Ргес(0) = 0, Ргес(т + 1) = т = Рх2 (т,Ргес(т)).

б) Функцію Міппй можна одержати з допомогою функції Ргес на­ступним чином.

МІППЙ(П, 0) = п = Р^ (П), Міппй(п, т + 1) = п + (т + 1) = (п + т) + 1 =

= Ргес(Р33(п, т, Міппй(п, т))).

в) А6й(п, т) = |п — т| = (п + т) + (т + п) =

= 5ита(Міпи5(п, т), Міпи«(т, п)).

Оскільки метою цього розділу є з допомогою вправ показати, що клас примітивно рекурсивних функцій є досить великим, то потібно довести, що булеві функції, які використовуються в мовах програ­мування високого рівня є примітивно рекурсивними. В наступних вправах розглядатимемо деякі булеві операції і відошення. Через 1 позначаємо значення "істина", через 0 - хибність.

4.8. Приклад. Показати, що наступні функції є примітивно рекур­сивними.

Ч лг / Ч (О, П > 1

а) Жед(п) = і

І 1, п = 0

б) Ап^(п,т) = < ,П > ' т >

10, в протилежному випадку

І 1, п > 1 або т > 1

в) Ог(п, т) = <

0, в протилежному випадку

, _ „ . 7 , , ч |т,п > 1

г) I/-теп-еІ5е(п, т, к) = <

к, в протилежному випадку.

Дійсно, дані функції утворюються з примітивно рекурсивних фун­кцій наступним чином:

а) Жед(п) = Міпи«(1,п);

б) Ап^(п, т) = Жед(Жед(Рго^(п, т)));

в) Ог(п, т) = Жед(Ап^(Жед(п), Жед(т)));

г) I/-£^,еп-е/5е(п, т, к) =

= 5ита(Рго^(Жед(Жед(п)), т), Рго^(Жед(п), к))).

Надалі часто будемо писати "х ап^ у" замість Ап^(х, у), "х ог у" замість Ог(х,у), і "і£ х іЬеп у еІ8в £" замість //-£^,еп-е/5е(х, у, £).

  1. Приклад. Довести, що наступні функції є примітивно рекур­сивними.

\ т-і / ч І 1,п = т

а) Р^п т) = < п .

    1. 0, п = т

^ ^ ( \ /1,п > т

б) Сг(п т) = <

І 0, п < т

ч^ , ч /1,п > т

в) Сед(п,т) =

І 0, п < т /1,п < т

г) Ь5(п, т) = <

    1. 0, п > т

1, п < т

д) Ред(п,т) = <

0, п > т

Дійсно, дані функції утворюються з примітивно рекурсивних фун­кцій наступним чином:

а) Рд(п, т) = Жед(А^(Міпп5(п, т), Міпи5(т, п)));

б) Сг(п, т) = Жед(Жед(Міпи5(п, т)));

в) Сед(п, т) = Сг(п, т) ог Рд(п, т);

г) Р5(п, т) = Жед(Сед(п, т));

д) Ред(п, т) = Жед(Сг(п, т)).

  1. Приклад. Довести, що для кожного к Є N функція

Махк (п1, п2,...,пк) = тах{п1, п2,..., пк }

є примітивно рекурсивною.

Доведемо дане твердження індукцією по к. Для к = 1 тверджен­ня вірне, бо Мах1 (п1) = Р^ (п1). Припустимо, що твердження вико­нується для к - 1 і доведемо для к: Махк (п1,..., пк) =

= і£ пк > Махк-1 (п1 ,...,пк-1) іЬеп пк еІ8е Махк-1 (п1 ,...,пк-1).

4.11. Приклад. Застосувати операцію примітивної рекурсії до фун­кцій д : N0 ^ N0 і Н : N3 ^ N0.

а) д(п) = 3п, Н(пі2,пз) = 4п2 + П3;

б) д(п) = 2п, Н(п1 ,п2,п3) = 3П1 пП1 (вважаємо, що 00 = 1).

а) /(п, 0) = д(п) = 3п

/(п, т + 1) = Н(п, т, /(п, т)) = + /(п, т) /(п, 1) = 4 • 0 + /(п, 0) = 3п /(п, 2) = 4 • 1 + /(п, 1) = 4 + 3п /(п, 3) = 4 • 2 + /(п, 2) = 4 • 2 + 4 • 1 + 3п Доведемо індукцією по т, що

/ (п,т) = 4((т - 1) + ... + 2 + 1) + 3п = 4 (т-21)+1 (т - 1) + 3п = = 2т(т - 1) +3п.

Припустимо, що твердження виконується для т = к, тобто /(п, к) 2к(к - 1) +3п.

Для т = к+1 маємо /(п, к+1) = 4к+/(п, к) = 4к+2к(к-1)+3п = 2к(2 + к - 1) + 3п = 2(к + 1)к + 3п.

Таким чином, для будь-яких п,т Є N0

/(п,т) = 2т(т - 1) + 3п

Функція / отримана з примітивно рекурсивних функцій д і Н з допомогою операції примітивної рекурсії і, отже, є примітивно ре­курсивною.

б) /(п, 0)= д(п) = 2п

/(п, т + 1) = Н(п, т, /(п, т)) = 3п(/(п, т))п

2

/(п, 1) = 3п(/(п, 0))п = 3п2п

2 2 3 2 3

/(п, 2) = 3п(3п2п )п = 3п3п 2п = 3п+п 2п

23 2 3 4

/(п 3) 3п(3П+П 2П )п 3П+П +п 2П

Доведемо індукцією по т, що / (п,т) = 3п+п2+...пт 2пт+1 =3 ^^ 2пт+1.

Припустимо, що твердження виконується для т = к, тобто /(п, к)

3 2пк+1,

Для т = к + 1 маємо

п(пк-1) к+1ч п2(пк-1) к + 2 —^ї оп ^ \п — 9П9 ^Тї оп ^

/(п, к+1) = 3п(/(п,к))п = 3п(3 п-1 2п )п = 3п3 п-1 2

, п2(пк-1) к + 2 п2-п + пк + 2-п2 к + 2 п(пк + 1 -1) к + 2

3п+ п-1 ) 2п = 3 2пк+2 = = 3 ( п-1 ) 2пк+2.

Таким чином, для будь-яких п,т Є М0

п(пт-1) т+1

/(п, т) = 3 п-і 2П .

Функція / отримана з примітивно рекурсивних функцій д і Н з допомогою операції примітивної рекурсії і, отже, є примітивно ре­курсивною.

Мінімізація. Розглянемо частково визначену функцію п-змінних /12,..., хп). Визначимо функцію д1 ,...,хп) так. Зафіксуємо певні значення х1 ,...,хі_1і +1 ,...хп п — 1 аргументів функції / та розглянемо рівняння /1 ,...,хі_1 ,у,хі +1 ,...,хп) = хі. Обчи­слюватимемо послідовно значення /1,..., хі_1, у, хі+1,..., хп) для у = 0,1, 2,.... Позначимо через

а = тіп{у | / (х1,.. .,х-_1 ,у,х-+1, ...,хп) = хі }.

Зазначений процес є нескінченним у таких випадках:

  • значення /1,...і_1, 0, хі +1,...п) не визначено;

  • значення /1,..., х і _1 ,у, х і+1 ,..., хп) для у = 0,1,... ,а — 1 визначено, але вони відмінні від х а значення /1,..., х,і_1, а, х,і +1,..., хп) не визначено;

  • значення /1,..., х і _1, у, х і +1,... ,хп) визначено для всіх у = 0, 1 , . . . , причому вони відмінні від х .

В усіх цих випадках значення функції д(х1 ,...,хп) вважають невизначеним. У решті випадків зазначений процес зупиняється і дає найменший розв'язок у = а рівняння /1,..., хі_1, у, хі+1,..., хп) = хі, який є значенням функції д(х1,... ,хп) = о,. Значення функції д для заданої функції / залежить від значень параметрів х1,... ,хп, тому функція д є частково визначеною функцією змінних х1,... ,хп. Кажуть, що функція д отримана з функції / з допомогою операції мінімізації за змінною хі .

Функцію / називають частково рекрсивною, якщо вона може бу­ти утворена з найпростіших функцій за допомогою скінченної кіль­кості застосувань операцій композиції, примітивної рекурсії та міні­мізації. Всюди визначені частково рекурсивні функції називаються загальнорекурсивними.

4.12. Приклад. Розглянемо функцію / : М0 ^ М0, /(х) = х + 2. За допомогою операції мінімізації визначимо функцію д : М0 ^ М0. Для цього розглянемо рівняння у + 2 = х. Отже, функцію д не визначено, якщо х = 0 або х = 1, і д(х) = х — 2, якщо х > 2.

  1. Приклад. Доведемо, що функція д : N0 х N0 — N0,

д1, х2) = 1 ^012

є частково рекурсивною. Застосуємо операцію мінімізації за змінною х2 до примітивно рекурсивної функції /(х12) = (1 + х12. В ре­зультаті отримаємо рівняння (1 + х1 = х2. Отже,

х2, х1 = 0,

д(х1 ,х2 )={0,х2 =0, = - .

1 — х1 х2012

Т, х1 = 0 і х2 = 0,

В даному параграфі ми показали, що клас частково рекурсивних функцій є досить широкий. Поняття частково рекурсивної функції - одне з основних понять теорії алгоритмів. Його значення є таким. З одного боку, кожна стандартно задана частково рекурсивна функція є обчислювана за певною процедурою, яка відповідає інтуїтивному уявленню алгоритму, а з іншого - які б досі не будувалися класи то­чно визначених алгоритмів, завжди з'ясовувалося, що числові фун­кції, які обчислювалися за алгоритмами цих класів, були частково рекурсивними. Тому загальноприйнятою є така наукова гіпотеза:

Теза Черча. Клас алгоритмічно обчислюваних частково визначе­них числових функцій збігається з класом усіх частково рекурсив­них функцій.

У формулювання цієї тези входить інтуїтивне поняття обчислю- ваності, тому його не можна ні довести, ні спростувати в загаль- номатематичному значенні. Це факт, на користь якого свідчить ба­гаторічна математична практика. Проте, справедливою є наступна теорема, доведення якої читач може знайти в [?]:

  1. теорема. Функція є обчислюваною за Тюрінґом тоді і тільки тоді, коли вона є частково рекурсивною.

Вправи до лекції 4.

4.1. Довести, що наступні функції однієї змінної є примітивно ре­курсивними:

а) /(п) = п;

б) д(п) = 3п + 4;

в) д(п) = 2П + п2;

г) д(п) = п!;

  1. Довести, що наступні функції / : N0 — М0 є примітивно ре­курсивними:

а) /(п, т) = тіп{п, т};

б) /(п, т) = тах{п, т}.

  1. Застосувати операцію примітивної рекурсії до функцій д : М0 — М0 і к : М3 — М0. Записати результуючу функцію / : М2 — М0 аналі­тично.

а) д(п) = 2П, к(пі,П2,пз) = 3п2 + Пз;

б) д(п) = 2012п2012, к(п1 ,п2,п3) = 5п2 + п3;

в) д(п) = 3П, к(п1 ,п2,п3) = 2п1 + 5п3;

г) д(п) = 2012п, к(п1 ,п2,п3) = 5П1 п^1 (вважаємо, що 00 = 1);

д) д(п) = 2П + п2, к(п1 ,П2,П3) = щ + ЗП3;

е) д(п) = 1, к(п1 ,П2,П3) = П3($д|п1 + 2 — 2п31).

  1. Застосувати операцію мінімізації до функції / за всіма її змін­ними. Подати вихідні функції д аналітично.

а) /(п) = 2;

г) д(п) = ;

д) д(п,т) = т+2.

б) /(п) = [§];

в) /(п, т) = п + т;

г) /(п, т) = 2 — п — т;

д) /(п, т) = Р12(п, т);

е) /(п, т) = тах{п, т}; є) /(п, т) = тіп{п, т};

ж) /(п, т) = п + т.

4.5. Застосувавши операцію мінімізації до відповідної примітивно рекурсивної функції /, довести, що функція д частково рекурсивна:

а) д(п) =3 — п;

    1. Довести, що застосувавши один раз операцію мінімізації до всюди визначеної числової функції, отримаємо функцію, яка визна­чена принаймі в одній точці.

    2. Навести приклад функції / : N0 ^ N0, застосувавши до якої операцію мінімізації двічі, отримаємо ніде не визначену функцію.

    3. Сформулювати необхідну і достатню умову того, що функція д, отримана з функції / з допомогою операції мінімізації є

а) всюдивизначеною;

б) ніде не визначеною.

Лекція 5. Нормальні алгоритми Маркова. Ана­ліз НАМ.

В даному параграфі розглядається ще один важливий підхід до уточнення поняття алгоритму, розроблений А.А. Марковим. Нор­мальні алгоритми Маркова (НАМ) базуються на перетворенні слів в деякому скінченному алфавіті в відповідності з певним чином ви­значеними правилами. В НАМ використовується тільки одна елемен­тарна дія - підстановка, яка визначається наступними чином. Нехай А =1, а2,..., ап} - алфавіт. Якщо а і в - слова в алфавіті А, то вирази а ^ в і а ^ в називаються формулами підстановки в алфавіті А (вважаємо, що символи ^ та ^ не належать алфавіту А). При цьому формула а ^ в називається звичайною формулою підстановки, а формула а ^ в заключною формулою підстановки. Сама підстановка (як дія) задається формулою підстановки і засто­совується до слів ш в алфавіті А. Суть операції а ^ в (а ^ в) полягає в відшуканні в слові ш найлівішого входження підслова а і заміні цього підслова на слово в. При цьому інші частини слова ш залишаються незмінними. Якщо ліва частина формули підстановки входить в слово ш, то кажуть, що дана формула застосовна до слова ш. В іншому випадку кажемо, що формула підстановки незастосов­на до слова ш і в цьому випадку підстановка не виконується. Якщо права частина формули підстановки - порожнє слово (яке в НАМ не познається ніяким символом), то підстановка а ^ зводиться до за­креслення підслова а в слові ш. Домовимося, що якщо в лівій частині формули підстановки є порожнє слово, то підстановка ^ в полягає в

дописуванні зліва до слова ш слова в. Зауважимо, що згідно означе­ння, формула з порожньою лівою частиною застосовна до будь якого слова.

  1. Приклад. Нехай для слів в алфавіті А = {а, Ь, с} задані наступні підстановки:

а) аЬ ^ ас;

б) аЬс ^ Ьа;

в) Ьа

г) Ь ^ с.

Застосуємо кожну з них до слова аЬЬасЬа.

Для застосування марківської підстановки до слова ш необхідно знайти найлівіше входження в ш лівої частини підстановки. У випад­ку а) слово аЬ тільки раз входить в слово аЬЬасЬа, тому в результаті підстановки одержуємо слово асЬасЬа. Оскільки слово аЬс не є підсло- вом слова аЬЬасЬа, то підстановка з пункту б) не застосовна до даного слова. У пунктах в) та г) ліві частини підстановок входять декілька раз у слово аЬЬасЬа, а тому застосовуємо підстановки до першого вхо­дження їх у вхідне слово. Отримаємо слова аЬсЬа і аЬасЬа відповідно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]