Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичТАлг.doc
Скачиваний:
113
Добавлен:
04.02.2016
Размер:
803.84 Кб
Скачать

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 – слова в цьому алфавіті. Припустимо, що серед букв алфавіту А немає букви .

Вираз виду PQ називатимемо підстановкою або формулою підстановки, а слова P,Q – лівою й правою частиною підстановки, відповідно.

За змістом підстановку треба розуміти як правило перетворення слів в алфавіті А, сформульоване так: "Якщо в слово S входить слово P, то слово Р замінити словом Q. Якщо ж у слово S не входить слово P, то залишити слово S незмінним".

Якщо ліва частина підстановки PQ входить у слово S, то її називають підстановкою застосовною до даного слова S.

У противному випадку підстановка PQ вважається незастосовною до даного слова 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, +} і схемою алгоритму:

f f

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, записану в тому самому алфавіті.

f

1) *III  I*

2) *I  *

3) *  

  1.  *

4 Побудуємо нормальний алгоритм Маркова U, який є композицією двох нормальних алгоритмів Маркова U1 і U2 , при чому:

U1 - збільшує кожне натуральне число, записане в алфавіті А= {} на число 2;

U2 - збільшує кожне натуральне число, записане в алфавіті А= {} на число 1;

1) *  II

2)  I

  1. 3)  *