
- •Теорія алгоритмів і математичні основи представлення знань
- •1 Рекурсивні функції
- •1.2 Лабораторна робота №1
- •2 Нормальні алгоритми Маркова
- •2.1 Теоретичні поняття і визначення
- •2.3 Контрольні питання
- •3 Машина Тьюрінга
- •3.1 Теоретичні поняття і визначення
- •4 Еквівалентність алгоритмічних систем
- •5 Математична логіка. Логіка висловлень
- •5.1 Теоретичні поняття і визначення
- •5.2 Лабораторна робота №4
- •6 Математична логіка.
- •6.1 Теоретичні поняття і визначення
- •6.2 Лабораторна робота №5
- •6.3 Контрольні питання
- •Література
2 Нормальні алгоритми Маркова
2.1 Теоретичні поняття і визначення
Інший підхід до уточнення інтуїтивного поняття алгоритму
зробив російський математик Марков (1903 – 1979 р.). Він висловив думку про можливість запису будь-яких алгоритмів в термінах слів і словникових ф-цій, які одним словам ставлять у відповідність інші слова деякого алфавіту.
Нагадаю, що алгоритм – це сукупність правил, які визначають процес переробки допустимих початкових даних у вихідні результати. |
Марков розглядав початкові дані і вихідні результати у вигляді слів, які складаються із символів деякого скінченого алфавіту.
Ідею нормального алгоритму Маркова (НАМ) розглянемо на прикладі таблиці слів, що перетворюються за допомогою Марковських підстановок.
|
Перетворюване слово |
Марківська підстановка |
Результат |
1 |
245 |
4 00 |
2005 |
2 |
функція |
функція tg x |
tg x |
3 |
телефон |
теле |
фон |
4 |
екран |
теле (цю підстановку не можна застосовувати до слова екран) |
результата немає |
Поняття алфавіту
Абстрактним алфавітом називається будь-яка скінчена сукупність символів, а буквами алфавіту - символи цієї сукупності. |
Наприклад:
український алфавіт А = а, б, …..я;
алфавіт А = 0, 1, …..9 - алфавіт, що складається з цифр, де цифри є буквами цього алфавіту;
А = I, * - алфавіт, що складається з двох символів "риска" і "зірочка", які є буквами цього алфавіту.
Кількість букв в алфавіті називають його обсягом.
Слово в алфавіті – це кожна впорядкована сукупність букв даного алфавіту (ab, ba – різні слова) |
Довжина слова – це число букв у слові.
Слово P = ху має довжину 2.
Слово, що не містить жодної букви називається пустим, його довжина 0.
Нехай є такий алфавіт A = x, y, z, слово Q = xz має два входження у слово S, S = xy(xz)yyxx(xz)yx.
Особливий інтерес для нас має перше входження (рахуючи зліва-направо) слова Q у слово S. |
Ми можемо його замінити на інше слово Т, Т = zzz, тобто Q Т, тоді отримаємо слово S1 = xyzzzyyxx(xz)yx.
Визначення операції заміни одного слова іншим
Нехай А - деякий алфавіт і P,Q – слова в цьому алфавіті. Припустимо, що серед букв алфавіту А немає букви . Вираз виду PQ називатимемо підстановкою або формулою підстановки, а слова P,Q – лівою й правою частиною підстановки, відповідно. |
За змістом підстановку треба розуміти як правило перетворення слів в алфавіті А, сформульоване так: "Якщо в слово S входить слово P, то слово Р замінити словом Q. Якщо ж у слово S не входить слово P, то залишити слово S незмінним".
Якщо ліва частина підстановки PQ входить у слово S, то її називають підстановкою застосовною до даного слова S. У противному випадку підстановка PQ вважається незастосовною до даного слова S. |
Види підстановок
Прості підстановки
|
P Q якщо в лівій і правій частині підстановки не пусте слово |
Q якщо в лівій частині підстановки пусте слово | |
P якщо в правій частині підстановки пусте слово | |
Заключна підстановка |
P Q |
Нехай вираз P [] Q означає будь-яку з формул підстановки: | |
|
P Q Q P P Q |
Тепер введемо поняття схеми підстановок
Нормальна схема в алфавіті А – це скінчена непуста впорядкована сукупність підстановок | |
|
P1 [] Q1 P2 [] Q2 …… Pk [] Qk |
Нормальний алгоритм Маркова задається нормальною схемою в алфавіті А. Підстановки схеми застосовуються до слова відповідно до таких правил: а) перевірку застосовності підстановок до перетворюваного слова S на будь-якому етапі переробки слова треба починати з першої підстановки; б) якщо вона застосовна до слова S, то застосовувати її треба до першого входження її лівої частини у слово S. Якщо жодна з перших i підстановок 1 і < k незастосовна до S, а (і + 1) підстановка застосовна, то застосовується ця підстановка знов-таки до першого входження її лівої частини в перетворюване слово; в) процес перетворення слова продовжується доти, поки не дістанемо слово, до якого жодна з підстановок сукупності не застосовна або поки до слова не буде застосована заключна підстановка. |
Приклад
Нормальний алгоритм Маркова задано схемою:
bab
aa
aa b
bb a
Знайти результат дії цього алгоритму на слово S = abaaabb.
Крок алгоритму |
Перетворюване слово |
Застосовна підстановка |
Результат |
1 |
abaaabb |
aa b |
abbabb |
2 |
abbabb |
bab aa |
abaab |
3 |
abaab |
aa b |
abbb |
4 |
abbb |
bb a |
aab |
5 |
aab |
aa b |
bb |
6 |
bb |
bb a |
a |
В результаті застосування алгоритму перетворення до слова S отримали S1= a.
Якщо процес перетворення слова S закінчується після скінченого числа застосувань підстановок схеми алгоритму, то алгоритм називається застосовним до слова S. |
Коли ж процес перетворення слова S не може закінчитися, то алгоритм називається незастосовним до слова S. |
Якщо даний алгоритм позначити буквою f , то f (abaaabb) = a.
Приклад нормального алгоритму Маркова , заданого алфавітом
A= {I, +} і схемою алгоритму:
|
I + I + II + I I |
Даний НА виконує додавання 2-х натуральних чисел в унарній системі числення.
Застосуємо алгоритм до слова P = III + II
Крок алгоритму |
Перетворюване слово |
Підстановка |
Результат |
1 |
III + II |
I + I + II |
II + III |
2 |
II + III |
I + I + II |
I + IIII |
3 |
I + IIII |
I + I + II |
+ IIIII |
4 |
+ IIIII |
+ I I |
IIIII |
f (III + II) = IIIII.
Ми на цих прикладах бачимо, що НАМ можна розглядати як функцію, яка одним словам ставить у відповідність інші слова деякого алфавіту.
Нехай А – деякий скінчений алфавіт,
S(A) – множина слів в алфавіті А,
Df - множина слів, які належать S(A) та до яких НАМ f є застосовним.
Тоді НАМ f визначає словникову функцію f : S(A) S(A), причому область визначення цієї функції є Df S(A),
тобто, якщо слово Р належать Df , то нормальний алгоритм f визначає слово Q, як Q = f(P).
Процес знаходження слова Q називають обчисленням. Тобто НАМ обчислює словникову функцію, а ф-ція f називається обчислюваною за Марковим, або НАМобчислюваною. |
Нехай А і В два алфавіти. Якщо кожна буква, що входить до алфавіту А є буквою алфавіту В, то говорять, що алфавіт В є розширенням алфавіту А, а А є частиною В. |
Приклад Нехай A = {0, 1, 2, 3, …, 8, 9} і В – розширення А
В = {0, 1, 2, 3, …, 8, 9, x, y }
Розглянемо НАМ над А , тобто НА у розширенні алфавіту А (тобто з використанням ще букв х, у). |
НАМ для обчислення ф-ції S(x) = x + 1, коли х записано в десятковій системі числення. НА запишемо у вигляді 3-х стовпчиків формул підстановок
х0 0х |
0х 1 |
0у 1 |
х1 1х |
1х 2 |
1у 2 |
х2 2х |
2х 3 |
2у 3 |
х3 3х |
3х 4 |
3у 4 |
х4 4х |
4х 5 |
4у 5 |
х5 5х |
5х 6 |
5у 6 |
х6 6х |
6х 7 |
6у 7 |
х7 7х |
7х 8 |
7у 8 |
х8 8х |
8х 9 |
8у 9 |
х9 9х |
9х у0 |
9у у0 |
|
|
у 1 |
|
|
х |
Розглянемо поняття еквівалентності 2-х алгоритмів.
Два алгоритми над алфавітом А називаються еквівалентними відносно А, якщо вони мають одну й ту саму область визначення і результати їх застосування до одного й того самого слова збігаються.
Для НАМ висувається гіпотеза, яку не можна довести, але можна прийняти, спираючись на попередній досвід математики й інформатики. Ця гіпотеза називається принципом нормалізації.
Принцип нормалізації
Будь-який алгоритм над скінченим алфавітом А являється еквівалентним відносно А деякому нормальному алгоритму Маркова над А. |
Довести принцип нормалізації Маркова, як і гіпотезу Черча не можна, бо у формулювання цієї гіпотези входить інтуітивне поняття алгоритму. Нормальні алгоритми Маркова - це чітко визначені алгоритми. НАМ приймається як ще одна стандартна форма будь-якого алгоритму.
2.2 Лабораторна робота №2
Тема. Нормальні алгоритми Маркова та їх властивості.
Мета. Засвоїти основні поняття стосовно алгоритмічної системи нормальні алгоритми Маркова (НАМ).
Завдання.
1 Нехай n порядковий номер студента в журналі. Нехай
m визначається так:
10,
якщо n
=1;
m= n якщо 1 n 10;
остача від ділення n на 10, збільшена на одиницю.
Створити нормальний алгоритм Маркова Um для обчислення функції S(x) = x + 1, якщо х – число записане в m- значній системі числення.
2 Застосувати Um для обчислення S(n), (де n порядковий номер), попередньо перевівши цей порядковий номер у m- значну систему числення.
3 Побудувати нормальний алгоритм Маркова, який перетворює кожне натуральне число, записане в алфавіті А= {} в частку від ділення цього числа на n, записану в тому самому алфавіті.
4 Побудувати нормальний алгоритм Маркова U, який є композицією двох нормальних алгоритмів Маркова U1 і U2 , при чому:
U1 - збільшує кожне натуральне число, записане в алфавіті А= {} на число t1;
U2 - збільшує кожне натуральне число, записане в алфавіті А= {} на число t2;
де t1 та t2 – перша і друга цифра, відповідно,
числа:
n + 30 (для БІТ1-**, ЗІТ1-***); при n 40, n 50, n 60.
n + 40 (для БІТ2-**, ЗІТ2-***); при n 50, n 60, n 70.
n + 50 (для БІТ3-**, ЗІТ3-***); при n 60, n 70, n 80.
n + 60 (для БІТ4-**, ЗІТ4-***); при n 70, n 80, n 90.
t1= 1, t2 = 2 при n = 40;
t1= 2, t2 = 3 при n = 50;
t1= 3, t2 = 4 при n = 60.
t1= 4, t2 = 5 при n = 70.
t1= 5, t2 = 6 при n = 80.
t1= 6, t2 = 7 при n = 90.
Приклад виконання завдання
Варіант 37. Виконав студент групи ЗІТ-***. Дата ***.
1 Створимо НАМ U5 для обчислення ф-ції S(x) = x + 1, коли х записано в 5-значній системі числення. НАМ U5 запишемо у вигляді 3-х стовпчиків формул підстановок
1) *0 0* |
6) 0* 1 |
11) 0у 1 |
2) *1 1* |
7) 1* 2 |
12) 1у 2 |
3) *2 2* |
8) 2* 3 |
13) 2у 3 |
4) *3 3* |
9) 3* 4 |
14) 3у 4 |
5) *4 4* |
10) 4* у0 |
15) 4у у0 |
|
|
16) у 1 |
|
|
17) * |
2 Застосуємо U5 для обчислення S(n), (де n=2410), попередньо перевівши цей порядковий номер у 5- значну систему числення
( n=445). Протокол застосування U5 ( в дужках вкажемо номер застосованої підстановки) :
44 (17)
*44 (5)
4*4 (5)
44* (10)
*4у4 (15)
у00 (16)
100 (17)
Um (445)=1005=2510..
3 Побудуємо нормальний алгоритм Маркова, який перетворює кожне натуральне число, записане в алфавіті А= {} в частку від ділення цього числа на 3, записану в тому самому алфавіті.
|
1) *III I* 2) *I * 3) *
|
4 Побудуємо нормальний алгоритм Маркова U, який є композицією двох нормальних алгоритмів Маркова U1 і U2 , при чому:
U1 - збільшує кожне натуральне число, записане в алфавіті А= {} на число 2;
U2 - збільшує кожне натуральне число, записане в алфавіті А= {} на число 1;
1) * II
2) I
3) *