1 ТЕОРІЯ АЛГОРИТМІВ Алгоритм – скінченна множину точно

Скачать презентацию 1 ТЕОРІЯ АЛГОРИТМІВ Алгоритм – скінченна множину точно Скачать презентацию 1 ТЕОРІЯ АЛГОРИТМІВ Алгоритм – скінченна множину точно

33500-ta_lect1.ppt

  • Количество слайдов: 49

>1 ТЕОРІЯ АЛГОРИТМІВ Алгоритм – скінченна множину точно визначених правил для чисто механічного розв’язку 1 ТЕОРІЯ АЛГОРИТМІВ Алгоритм – скінченна множину точно визначених правил для чисто механічного розв’язку задач певного класу. Характерні властивості алгоритму: Фінітність Масовість Дискретність Елементарність Результативність Детермінованість Для опису алгоритму вказуємо: – множину його початкових (вхідних) даних – множину вихідних даних, до яких належать результати роботи алгоритму.

>2 За допомогою алгоритму кожний конкретний результат отримується за скінченну кількість кроків із скінченної 2 За допомогою алгоритму кожний конкретний результат отримується за скінченну кількість кроків із скінченної множини вхідних даних. До таких даних алгоритм застосовний. В деяких ситуаціях процес виконання алгоритму для певних вхідних даних продовжується необмежено. До таких даних алгоритм незастосовний. Кожний алгоритм  із множиною вхідних даних X та вихідних Y визначає часткову функцію f : Х→Y. Якщо  застосовний до d, то значення f(d) рівне (d). Якщо  незастосовний до d, то f(d) невизначене. Такий алгоритм  обчислює функцію f.

>3 Функція алгоритмічно обчислювана (АОФ), якщо існує алгоритм, який її обчислює.  Множина L 3 Функція алгоритмічно обчислювана (АОФ), якщо існує алгоритм, який її обчислює. Множина L алгоритмічно перелічна, якщо L є множиною значень деякої АОФ, тобто існує алгоритм, який перелічує елементи множини L і тільки їх. Множина L алгоритмічно розв'язна відносно множини U, якщо існує алгоритм, який дозволяє для кожного xU визначати, xL чи xL.

>4 Відносний алгоритм (алгоритм з оракулом): на деяких кроках може звертатися до зовнішнього відносно 4 Відносний алгоритм (алгоритм з оракулом): на деяких кроках може звертатися до зовнішнього відносно алгоритму об’єкту – оракула. Видані оракулом відповіді – це дані, вироблені на таких кроках звертання. Функція алгоритмічно обчислювана відносно оракула , якщо існує алгоритм з оракулом , який її обчислює.

>5 Зв’язок алгоритмів та числень Поняття алгоритму можна звести до поняття числення в смислі 5 Зв’язок алгоритмів та числень Поняття алгоритму можна звести до поняття числення в смислі зведення алгоритмічного процесу до процесу породження: кожний алгоритм можна трактувати як числення з такими ПВ, що виконання кожного із них відповідає виконанню одного кроку алгоритму. Поняття числення можна звести до поняття алгоритму в смислі зведення розгалуженого процесу породження до послідовного процесу переліку так, щоб алгоритм переліку відтворив усі породжені численням об’єкти і тільки їх.

>6 Теорія алгоритмів – розділ математики, що вивчає загальні властивості алгоритмів. Усвідомлення неможливості існування 6 Теорія алгоритмів – розділ математики, що вивчає загальні властивості алгоритмів. Усвідомлення неможливості існування алгоритмів розв’язку низки масових проблем  необхідність математичного уточнення поняття алгоритму. Після сформування поняття алгоритму як нової та окремої сутності першочерговою стала проблема знаходження адекватних формальних моделей алгоритму та дослідження їх властивостей – моделі для первісного поняття алгоритму (машини Тьюрінга, регістрові машини, нормальні алгоритми Маркова) – моделі для похідного поняття АОФ (-означувані функції, частково рекурсивні функції та ін.).

>7 Доведено: кожна з відомих моделей задає       7 Доведено: кожна з відомих моделей задає (з точністю до кодування) один і той же клас функцій. Тому є всі підстави вважати, що кожна з таких моделей дає строге математичне уточнення інтуїтивного поняття АОФ. Таке твердження стосовно АОФ та строго визначеного класу частково рекурсивних функцій – теза Чорча (А.Чорч, 1936).

>8 МАШИНИ З НАТУРАЛЬНОЗНАЧНИМИ РЕГІСТРАМИ МНР є ідеалізованою моделлю комп’ютера.  МНР складається з 8 МАШИНИ З НАТУРАЛЬНОЗНАЧНИМИ РЕГІСТРАМИ МНР є ідеалізованою моделлю комп’ютера. МНР складається з регістрів, вмістом яких є натуральні числа. Регістри позначаємо так: R0, R1,..., Rn,... Вміст регістру Rn позначимо 'Rn Конфігурація МНР – це послідовність ('R0, 'R1,..., 'Rn,...) вмістів регістрів МНР. МНР-програма – скінченна послідовність команд МНР. Команди програми послідовно нумеруємо, починаючи з 1. Адреса команди – це номер команди в МНР-програмі. I1I2...Ik – МНР-програма з командами I1, I2,..., Ik |P| – довжина (кількість команд) МНР-програми P.

>9 Типи команд МНР Тип 1. Обнулення n-го регістру Z(n):  'Rn : 0. 9 Типи команд МНР Тип 1. Обнулення n-го регістру Z(n): 'Rn : 0. Тип 2. Збільшення вмісту n-го регістру на 1 S(n): 'Rn : 'Rn + 1. Тип 3. Копіювання вмісту регістру T(m, n): 'Rn : 'Rm ('Rm не змінюється). Команди типів 1–3 – арифметичні. Наступник арифметичної команди – наступна команда програми. Тип 4. Умовний перехід J(m, n, q): 'Rn = 'Rm,  перейти до q-ї команди, інакше виконувати наступну команда програми q – адреса переходу Крок МНР – виконання однієї команди МНР. Саме МНР-програми є формальними моделями алгоритмів. Поняття МНР викор-ся для опису функціонування МНР-програм.

>10  Виконання програми МНР починає з виконання першої команди.   Наступна для 10 Виконання програми МНР починає з виконання першої команди. Наступна для виконання команда програми – як описано вище. Виконання програми завершується, якщо наступник відсутній (номер наступної команди  номера останньої команди програми). Фінальна конфігурація МНР – у момент завершення виконання програми. Вона визначає результат роботи МНР-програми над даною початковою конфігурацією. P(a0, a1,...): МНР-програма P не зупиняється при роботі над початковою конфігурацією (a0, a1,...) P(a0, a1,...): МНР-програма P зупиниться при роботі над початковою конфігурацією (a0, a1,...) P(a0, a1,...)(b0, b1,...): МНР-програма P при роботі над початковою конфігурацією (a0, a1,...) зупиняється з фінальною конфігурацією (b0, b1,...)

>11 Кожна МНР-програма визначає однозначне відображення  NN→NN,  де  NN – множина 11 Кожна МНР-програма визначає однозначне відображення NN→NN, де NN – множина всіх нескінченних послідовностей нат. чисел. МНР-програми – фінітні об’єкти   МНР-програма в процесі виконання використовує тільки скінченну множину регістрів, усі вони явно вказані у МНР-програмі. Тому при розгляді відображень, заданих МНР-програмами, обмежимося скінченними послідовностями натуральних чисел. Надалі розглядаємо тільки скінченні конфігурації. Конфіг. (a0, a1,..., an, 0, 0,...), у якій 'Rm = 0  m > n – скінченна позначаємо (a0, a1,..., an) Якщо МНР-програма P починає роботу над скінченною початковою конфігурацією, то в процесі виконання P МНР перебуватиме тільки в скінченних конфігураціях.

>12 МНР-програми P та Q еквівалентні, якщо вони визначають однакові відображення послідовностей натуральних чисел. 12 МНР-програми P та Q еквівалентні, якщо вони визначають однакові відображення послідовностей натуральних чисел. Це означає: при роботі над однаковими початковими конфігураціями вони або обидві зупиняються з однаковими фінальними конфігураціями, або обидві не зупиняються. МНР-програма P стандартна, якщо q  |P| + 1  команди вигляду J(m, n, q). Конкатенація стандартних МНР-програм P = І1I2...Ik та Q = I1I2...Im – це стандартна МНР-програма I1...IkIk+1...Ik+m, де Ik+1,..., Ik+m – команди програми Q, у яких  команда J(m, n, q) замінена командою J(m, n, q + k).

>13 МНР-програма P обчислює часткову n-арну функцію  f : Nn→N:   13 МНР-програма P обчислює часткову n-арну функцію f : Nn→N: f(a1, a2,..., an) = b  P(a1, a2,..., an)b. Пишемо P(a1, a2,...)b замість P(a1, a2,...)(b,...) – значення аргументів посл-но розміщуються в регістрах, поч-чи із R0 – значення функції знімається з R0. Еквівалентне визначення обчислюваності f : Nn→N МНР-програмою P: – за умови (a1, a2,..., an)Df та f(a1, a2,..., an) = b P(a1, a2,..., an)b; – за умови (a1, a2,..., an)Df маємо P(a1, a2,..., an). f : Nn→N МНР-обчислювана, якщо існує МНР-програма, яка обчислює f.  МНР-програма обчислює безліч функцій нат. аргументів і значень. Фіксуємо наперед арність функцій (к-ть компонент початкових конфігурацій)   МНР-програма обчислює єдину функцію заданої арності.

>14 Приклад 1. МНР-програма для функції x + y:     1) 14 Приклад 1. МНР-програма для функції x + y: 1) J(1,2,5) 2) S(0) 3) S(2) 4) J(0,0,1) Приклад 2. МНР-програма для функції x – y: 1) J(0,1,5) 2) S(1) 3) S(2) 4) J(0,0,1) 5) Т(2,0)

>15  Приклад 3. МНР-програма для всюди невизначеної функції:     15 Приклад 3. МНР-програма для всюди невизначеної функції: 1) J(0,0,1) Приклад 4. МНР-програма для функції [x/2]: 1) J(0,2,7) 2) S(2) 3) J(0,2,7) 4) S(2) 5) S(1) 6) J(0,0,1) 7) Т(1,0)

>16  Приклад 5. МНР-програма для функції     1) J(0,1,7) 16 Приклад 5. МНР-програма для функції 1) J(0,1,7) 2) J(0,2,6) 3) S(1) 4) S(2) 5) J(0,0,1) 6) Z(2) 7) Т(2,0)

>17  Приклад 6. МНР-програма для функції  f(x, y) = xy:  17 Приклад 6. МНР-програма для функції f(x, y) = xy: 1) J(3,1,9) 2) J(0,2,6) 3) S(2) 4) S(4) 5) J(0,0,2) 6) Z(2) 7) S(3) 8) J(0,0,1) 9) Т(4,0)

>18 Нехай P – стандартна МНР-програма для n-арної функції f.  Найбільший номер регістру, 18 Нехай P – стандартна МНР-програма для n-арної функції f. Найбільший номер регістру, задіяного при обч-ні f, позначимо (P). Для n-арної функції вважатимемо (P)  n – 1. P[k1, k2,..., kn R] позначимо МНР-програму, яка обчислює ту саму f, що й МНР-програма P, але за умови: – початкові значення аргументів занесені в регістри k1,..., kn, – значення функції знімається з регістру R. Для обчисл-я f задіяно найбільше (P) + 1 регістрів – з 0-го по (P)-й. МНР-програма P[k1, k2,..., kn R] для вип. k1 < k2 <...< kn має вигляд T(ki, i – 1), 1 < i  n Z(k), n  k  (P) P' T(0, R) P' відрізняється від P тільки зміщенням адрес на (P).

>19 МАШИНИ ТЬЮРІНГА А.М. Тюрінг, Е.Пост  1936 р. Варіанти МТ: багатострічкові, машини з 19 МАШИНИ ТЬЮРІНГА А.М. Тюрінг, Е.Пост 1936 р. Варіанти МТ: багатострічкові, машини з еластичною стрічкою і т. п. МТ – це (Q, T, d, q0, F), де: – Q – скінченна множина внутрішніх станів; – T – ск. алфавіт символів стрічки, символ порожньої клітини T –  : Q  T → Q  T  {R, L, } – функція переходів; – q0Q – початковий стан; – F Q – множина фінальних станів. Функцію переходів задають ск. множиною команд одного з типів: qapbR qapbL qapb де p, qQ, a, bT, QT. Вважаємо  тотальною   пар (q, a)D неявно, не додаючи відп. команди qaqa, вводимо довизначення (q, a) = (q, a, e)

>20 Неформально МТ: – скінченна пам’ять – розділена на клітини необмежена з обох боків 20 Неформально МТ: – скінченна пам’ять – розділена на клітини необмежена з обох боків стрічка – голівка читання-запису. У кожній клітині – єдиний символ T, в  момент стрічка містить скінченну кількість символів  . Голівка читання-запису в  момент оглядає єдину клітину стрічки. Нехай МТ знаходиться в стані q та голівка читає символ a – при виконанні команди qapbR МТ переходить у стан p, замість a записує на стрічці b та зміщує голівку на 1 клітину направо – при виконанні команди qapbL – “ – “ – на 1 клітину наліво – при виконанні команди qapb – “ – “ – залишає голівку на місці.

>21 Конфігурація МТ – це слово  xqy,  де  x, yT*, qQ. 21 Конфігурація МТ – це слово xqy, де x, yT*, qQ. Неформально: – на стрічці записано xy (зліва і справа від xy можуть стояти тільки ), – МТ знаходиться в стані q, – голівка читає 1-й символ підслова y. Конфігурація вигляду q0x – початкова Конфігурація вигляду xqy, де qF – фінальна Після переходу фінальної конфігурації, МТ зупиняється. Нехай МТ знаходиться в конфіг. xcqay, де x, yT*, a, cT, qQ. Після виконання команди qapbR МТ перейде до конфіг. xcbpy. Після виконання команди qapbL МТ перейде до конфіг. xpcby. Після виконання команди qapb МТ перейде до конфіг. xcpby.

>22 Кожна МТ задає деяке вербальне відображення  T*→T* :  МТ М переводить 22 Кожна МТ задає деяке вербальне відображення T*→T* : МТ М переводить uT* у vT*, якщо вона з початкової конфігурації q0u переходить до фінальної xqy, де qF, xy = v, , {}*. При цьому 1-й та останній символи слова v відмінні від , або v = . МТ М переводить слово u в слово v: v = M(u). МТ M зациклюється при роботі над словом u: починаючи роботу з початкової конфігурації q0u, M ніколи не зупиниться. Тоді M(u) невизначене. МТ M1 та M2 еквівалентні, якщо вони задають одне й те ж відображення. МТ детермінована, якщо функція  однозначна інакше МТ недетермінована

>23 Можна вважати, що F складається з єдиного фінального стану q*:  Нехай M 23 Можна вважати, що F складається з єдиного фінального стану q*: Нехай M = (Q, T, , q0, F). Візьмемо q*Q. Тоді МТ M’= (Q{q*}, T, ’, q0, {q*}), де ’= {qaq*a | qF, aT}, еквівалентна початковій машині M. Надалі – тільки детерміновані МТ з єдиним фінальним станом позначаємо їх (Q, T, , q0, q*). Конкретні МТ задаємо, указуючи множину команд початковий стан позначаємо q0, фінальний – q*.

>24 МТ M обчислює часткову функцію  f : Nn→N,  якщо вона 24 МТ M обчислює часткову функцію f : Nn→N, якщо вона –  слово вигляду переводить в у випадку (x1,...,xk)Df – невизначене при (x1,..., xk)Df. Функція обчислювана за Тьюрінгом, або МТ-обчислювана: існує МТ, яка її обчислює. Кожна МТ обчислює безліч функцій натуральних аргументів і значень Зафіксуємо наперед арність функцій   МТ обчислює єдину функцію заданої арності.

>25 Приклад 1. МТ, яка обчислює функцію  x + y:   25 Приклад 1. МТ, яка обчислює функцію x + y: q0|q1R q1|q1|R q1#q*| q0#q* Приклад 2. МТ, яка обчислює функцію f(x) = sg(x): q0q* q0|q1|R q1|q1R q1q* Приклад 3. МТ, яка обчислює предикат "x парне": q0|q1R q1|q0R q0q*| q1q*

>26 Приклад 4. МТ, яка обчислює функцію  x – y:   26 Приклад 4. МТ, яка обчислює функцію x – y: q0|q1R q1|q1|R q1#q1#R q1q2L q2|q3L q3|q3|L q3#q3#L q3q0R q2#q*| q0#q4R q4q*

>27 Приклад 5. МТ, яка кожне слово xT* переводить у слово  x#x , 27 Приклад 5. МТ, яка кожне слово xT* переводить у слово x#x , #T q0 tq0 tR для всіх tT q0q1#L q1 tq1 tL для всіх tT q1q2R q2 tqt R для всіх tT qt pqt pR для всіх tT, pT{#} qt q't tL для всіх tT q't pq't pL для всіх tT, pT{#} q't q2tR для всіх tT q2#q*#

>28 НОРМАЛЬНІ АЛГОРИТМИ МАРКОВА НА в алфавіті T – упорядкованa послідовність продукцій (правил) вигляду 28 НОРМАЛЬНІ АЛГОРИТМИ МАРКОВА НА в алфавіті T – упорядкованa послідовність продукцій (правил) вигляду  або , де , T* та T, T. Продукції вигляду  – фінальні. Кожен НА в алфавіті T задає деяке вербальне відображення T*→T* (x) – слово, яке є результатом обробки слова x НА  Обробка слова x нормальним алгоритмом  – поетапно.

>29 Покладемо  x0 = x і скажемо:  x0  отримано з x 29 Покладемо x0 = x і скажемо: x0 отримано з x після 0 етапів. Нехай xn отримано з x після n етапів. Тоді (n+1)-й етап вик-ся так. Шукаємо першу за порядком  або  таку, що  – підслово xn. Застосуємо цю продукцію до xn – замінимо в xn найлівіше входження  на . Отримане слово позначимо xn+1. – застосована на (n+1)-етапі продукція не фінальна  перехід до (n+2)-етапу – ця продукція фінальна  після її застосування  зупиняється і (x) = xn+1. – на (n+1)-етапі жодна продукція  не застосовна до xn+1, тобто в  немає продукції, ліва частина якої – підслово слова xn+1   зупиняється, (x) = xn. Якщо в процесі обробки x НА  не зупиняється на жодному етапі, то (x) невизначене.

>30 НА називають нормальним алгоритмом над алфавітом T, якщо він є НА у деякому 30 НА називають нормальним алгоритмом над алфавітом T, якщо він є НА у деякому розширенні T'T. НА над T задає T*→T*, використовуючи допоміжні символи T. Зупинка НА  над T при роботі над xT* результативна, якщо вона відбулась на слові yT*, інакше результат роботи  над x невизначений. НА  і  еквівалентні відносно алфавіту T, якщо  xT* – (x) та (x) або – (x) та (x) та (x) = (x)  НА над T існує еквівалентний йому відносно T НА в T{s} із єдиним допоміжним sT. Відомо, що вербальне відображення x  xx, xT*, не може бути заданим жодним НА в алфавіті Т.

>31 НА  обчислює часткову функцію  f : Nn→N,  якщо він 31 НА  обчислює часткову функцію f : Nn→N, якщо він –  слово вигляду переводить в у випадку (x1,...,xk)Df – невизначене при (x1,..., xk)Df. Функція обчислювана за Марковим, або НА-обчислювана: існує НА, який її обчислює. Кожний НА обчислює безліч функцій натур. аргументів і значень Зафіксуємо наперед арність функцій   НА обчислює єдину функцію заданої арності.

>32 Приклад 1. НА для функції f(x, y) = x + y:  32 Приклад 1. НА для функції f(x, y) = x + y: # Приклад 2. НА для функції x – y: |#|# #|#| # Приклад 3. НА для функції x/2: #|||# #|#| # #

>33 Приклад 4. НА, який задає  аxby  |xy:    33 Приклад 4. НА, який задає аxby  |xy: аbba| |bb| a b Приклад 5. НА для функції xy: # |a |b  аbba| |bb| a b

>34 Приклад 6. НА для функції 2х в розширеному кодуванні:    34 Приклад 6. НА для функції 2х в розширеному кодуванні: |a  a|| a|  | |  |   | Приклад 7. НА для функції 2х: || | #|# # # 

>35 Приклад 8. НА, який  xT*  x  xR  (тут #T): 35 Приклад 8. НА, який  xT* x  xR (тут #T): #abb#a  a, bT ##a#a##  aT ## # Приклад 9. НА, який  xT* x  xx (тут #Т): ##aa#a##  aТ #abb#a  a, bТ #a  a  aТ ## ##

>36 СИСТЕМИ ПОСТА. КОМБІНАТОРНІ СИСТЕМИ Канонічна система Поста над алфавітом T – це ФС 36 СИСТЕМИ ПОСТА. КОМБІНАТОРНІ СИСТЕМИ Канонічна система Поста над алфавітом T – це ФС (T*, A, P), у якої – множина аксіом A є скінченною підмножиною множини T* – множина ПВ P – із слів вигляду Тут T, усі k та і – фіксовані слова з T*, усі SkT, усі ji {1,..., m}. Символи Sk призначені для позначення довільних слів з T*. СП позначаємо P = (T, A, P). Множина P визначає на словах із T* відношення безп. виведення Р :  Р , якщо існує правило таке: для деяких u1,...., umT*  = 0u11...m–1umm та Рефлексивно-транзитивне замикання відношення Р позн. *Р  *Р  означає, що  отримане із  за допомогою правил з P.

>37 Слово  породжується системою Поста P, якщо  *Р  для деякої A. 37 Слово  породжується системою Поста P, якщо  *Р  для деякої A. Це записуємо P |– і називаємо таке слово  теоремою СП P. Множину Th(P) = {T*| P |– } назвемо множиною теорем СП P. Для задання СП достатньо вказати множину правил і множину аксіом. У випадку необхідності вказуємо й алфавіт T. Приклад 1. СП з A = {a, b, } та P = {SaSa, SbSb} породжує всі слова-паліндроми в алфавіті {a, b} Множина XT* породжувана за Постом, якщо: існують алфавіт T' T і СП P = (T', A, P) такі, що Th(P)(T*) = X.

>38 ФС вигляду (T*, A, P), у яких мн-на аксіом A – скінченна підмножина 38 ФС вигляду (T*, A, P), у яких мн-на аксіом A – скінченна підмножина T*, а ПВ мають вигляд , називають комбінаторними. СП є комбінаторними системами досить загального вигляду. Правило gSSh називається правилом у нормальній формі. СП, усі правила якої – у нормальній формі, – нормальна СП Правило Sg hS називається правилом в антинормальній формі. СП, усі правила якої – в антинормальній формі, – антинормальна СП. Кожна породжувана за Постом множина може бути породжена нормальною системою Поста. Те саме вірно й для антинормальних систем Поста.

>39   Напівтуевська система – це система Поста, усі правила якої мають вигляд 39 Напівтуевська система – це система Поста, усі правила якої мають вигляд S1S2S1S2. Система Туе – це система Поста, усі правила якої мають вигляд S1S2S1S2, причому  правила S1S2S1S2 існує симетричне йому S1S2S1S2. Якщо кожну пару симетричних правил системи Туе об'єднувати в одне, то отримаємо комбінаторні системи, які називають екваційними численнями. Для екваційних числень правила записують у вигляді   .

>40 Окремим випадком СП можна вважати породжувальні, або формальні граматики, різноманітні класи яких вивчаються 40 Окремим випадком СП можна вважати породжувальні, або формальні граматики, різноманітні класи яких вивчаються в програмуванні. Поняття формальної граматики тісно пов’язане з поняттям напівтуевських систем. При визначенні формальних граматик явно вказують основний (термінальний) алфавіт T, допоміжний (нетермінальний) алфавіт TN, єдину аксіому s(TN)* і правила виведення, які записують у вигляді , де ,  (TTN)*. Формальні граматики записують у вигляді G = (T, TN, s, P). Формальна граматика є системою Поста в алфавіті TTN, усі правила якої мають вигляд S1S2S1S2, а множина аксіом складається з єдиного слова s. Мова L(G), породжувана формальною граматикою G, визначається як множина всіх теорем такої СП, які є словами термінального алфавіту.

>41 Класифікація формальних граматик за Хомським. ФГ, у якій немає обмежень на правила виведення, 41 Класифікація формальних граматик за Хомським. ФГ, у якій немає обмежень на правила виведення, – граматика типу 0. ФГ, у якій для ПВ виконується умова ||  ||, називається нескоротною, або граматикою типу 1. ПВ для граматик типу 1 можна звести до A, де ATN , . Такі ФГ називають також контекстними, контекстно-чутливими, або БС-граматиками. ФГ, у якій ПВ мають вигляд A, де ATN, – граматика типу 2. Такі ФГ називають також безконтекстними, або контекстно-вільними, або КВ-граматиками. ФГ, у якій ПВ вигляду AxB або Ax, де ATN та xT, – праволінійна. ФГ, у якій ПВ вигляду ABx або Ax, де ATN та xT, – ліволінійна. Праволінійні та ліволінійні грамматики утв. клас граматик типу 3. Такі граматики називають регулярними, або скінченно-автоматними.

>42 Наведеним класам граматик відповідають певні класи алгоритмічних машин (автоматів), які задають такі самі 42 Наведеним класам граматик відповідають певні класи алгоритмічних машин (автоматів), які задають такі самі класи мов. Граматикам типу 0 відповідають недетерміновані МТ. Граматикам типу 1 відповідають лінійно-обмежені автомати – недетерміновані МТ, які не збільшують довжину робочої стрічки. Граматикам типу 2 відповідають автомати з магазинною пам’яттю, або магазинні автомати Граматикам типу 3 відповідають скінченні автомати.

>43 Обчислюваність функції за Постом означає породжуваність за Постом її графіка.  Функція f 43 Обчислюваність функції за Постом означає породжуваність за Постом її графіка. Функція f : Nn→N обчислювана за Постом, якщо множина породжувана за Постом. Приклад 2. Система Поста для функції x+y : A = {##}; P = {X#Y#RX|#Y#R|, X#Y#RX#Y|#R| }. Приклад 3. Система Поста для функції f(x, y) = x–y : A = {##}; P = {X#Y#RX|#Y#R|, X#Y#R|X#Y|#R}.

>44 Приклад 4. Система Поста для функції f(x, y) = xy :  44 Приклад 4. Система Поста для функції f(x, y) = xy : A = {##}; P = {X#Y#RX|#Y#RY, X#Y#RX#Y|#RX}. Приклад 5. Система Поста для функції f(x) = x2: A = {#}; P = {X#RX|#RХХ|}.

>45 Приклад 6. Система Поста для функції f(x) = x2 – 2x:  45 Приклад 6. Система Поста для функції f(x) = x2 – 2x: A = {#, ||#}; P = {X|#RX||#RXX|}. Треба врахувати, що f(1). Приклад 7. Система Поста для функції f(x) = x3: A = {}; P = {XQRX|QXX|RQQQXXX|, XQRX#R}. Для обчислення f(x+1) = (x+1)3 = f(x)+3x2+3х+1 потрібне x2, тому теоремами СП мають також бути коди трійок (x, x2, x3). Однак теоремами в алфавіті {|, #} можуть бути тільки коди елементів графіка f(x), тому для кодування трійок (x, x2, x3) використано .

>46 Приклад 8. Система Поста для функції f(x) = x!:    46 Приклад 8. Система Поста для функції f(x) = x!: A = {#|}; P = {X#FX|F, SFABMSFA|BMB, SFABMSFAB|MA, SFSFMS#M}. До теорем СП належать коди п’ятірок (x+1, x!, a, b, ab), для їх кодування використано . З кодів п’ятірок (x+1, x!, x+1, x!, (x+1)x!) можна вивести закодовані в алфавіті {|, #} коди пар (x+1, (x+1)!).

>47 Приклад 9. Система Поста для функції       A 47 Приклад 9. Система Поста для функції A = {}; P = {XX|, QS|QRQS|QRR|R|, XXRX#R, XXS|R|X#R}. До теорем СП належать коди трійок (x, r2, r), для їх код-ня вик-но . З кодів трійок (x, x, r) та (x, (r+1)2, r+1) за умови r2  х < (r + 1)2 можна вивести закодовані в алфавіті {|, #} коди пар (x, r).

>48 Основна література 1. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. – М., 48 Основна література 1. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. – М., 1983. 2. Клини С. Математическая логика. – М.: Наука, 1973. 3. Лавров И.А., Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов. – М., 1975. 4. Лісовик Л.П., Шкільняк С.С. Теорія алгоритмів. – К., 2003. 5. Мальцев А.И. Алгоритмы и рекурсивные функции. – М., 1965. 6. Нікітченко М.С., Шкільняк С.С. Математична логіка та теорія алгоритмів. – К., 2008. 7. Нікітченко М.С., Шкільняк С.С. Основи математичної логіки. – К., 2006 8. Роджерс Х. Теория рекурсивных функций и эффективная вычислимость. – М., 1972 9. Шкільняк С.С. Теорія алгоритмів: приклади і задачі. – К., 2003. 10. Шкільняк С.С. Математична логіка: приклади і задачі. – К., 2007.

>49 Додаткова література 1. Д.Гильберт, П.Бернайс. Основания математики. Т.1, Т.2. – М., 1982. 49 Додаткова література 1. Д.Гильберт, П.Бернайс. Основания математики. Т.1, Т.2. – М., 1982. 2. Глушков В. М., Цейтлин Г. Е., Ющенко Е. Л. Алгебра, языки, программирование.– К., 1974. 3. Ю.В.Капітонова, С.Л.Кривий, О.А.Летичевський, Г.М.Луцький, М.К.Печурін. Основи дискретної математики. – К., 2002. 4. Лисовик Л.П., Редько В.Н. Алгоритмы и формальные системы. – К., 1981. 5. Манин Ю.И. Доказуемое и недоказуемое. – М., 1979. 6. Манин Ю.И. Вычислимое и невычислимое. – М., 1980. 7. Мендельсон Э. Введение в математическую логику. – М., 1976. 8. Непейвода Н.Н.. Прикладная логика. – Новосибирск: НГУ, 2000. 9. Справочная книга по математической логике (под ред. Дж.Барвайса). Ч.1– 4. – М., 1982–1983. 10. Успенский В.А., Семенов А.Л. Теория алгоритмов: основные открытия и приложения. – М., 1987. 11. Шенфилд Дж. Математическая логика. – М.: Наука, 1975.