Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МААТЛОГИКА

.pdf
Скачиваний:
11
Добавлен:
23.03.2015
Размер:
768.64 Кб
Скачать
8
> A !(¢) B ;
> 1 1
< A2 !(¢) B2;
> ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢
>
: Ar !(¢) Br:

5.2 Нормальнi алгоритми

Поняття про нормальний алгоритм. Узагальнений нормальний алгоритм. Нормальнi алгоритми Маркова. Приклади нормальних алгоритмiв. Принцип нормалiзацi¨. Операцi¨ над алгоритмами. Поняття про унiверсальний нормальний алгоритм.

1. Нехай A ¹ деякий алфавiт. На множинi слiв над цим алфавiтом WA розглянемо

операцiю пiдстановки слiв, тобто операцiю замiнювання одного слова iншим, яка для довiльних слiв A; B 2 WA познача¹ться через A ! B àáî A ! ¢B, äå ñòðiëêà ! i

крапка ¢ не ¹ лiтерами алфавiту A. Застосування операцi¨ пiдстановки до даного слова X зводиться до того, що перше (злiва) входження слова A в слово X замiню¹ться словом B. Наприклад, якщо X = Y AZ, то в результатi застосування пiдстановки

A ! B àáî A ! ¢B äî X ми отриму¹мо слово X1 = Y BZ. Пiдстановка A ! B назива¹ться простою, а A ! ¢B заключною. Нехай A ! (¢) B означа¹ якусь одну

з цих пiдстановок. Скiнченний список пiдстановок в алфавiтi A назива¹ться схемою алгоритму i породжу¹, так званий, алгоритм A в алфавiтi A, який познача¹ться так:

Пiдстановка A !(¢) B не завжди застосовна до слова X, òîìó,

щоб визначити, коли вона застосовна, а коли не застосовна, A: розглядають предикат A ½ X, значення якого дорiвню¹ 1, якщо слово A входить в X, тобто ¹ його пiдсловом, i дорiвню¹ 0, ÿêùî

A не входить в X. Введемо тепер операцiю входження даного слова A, яка познача¹ться A ½, результат застосування яко¨ до слова X ¹ значення

предиката A ½ X. В нормальних алгоритмах ¹диними допустимими операцiями ¹

операцiя пiдстановки та операцiя входження. Нормальнi алгоритми визначаються послiдовнiстю операцiй входження та вiдповiдних ¨м операцiй пiдстановок iз вказiвкою порядку ¨х виконання. Узагальнений нормальний алгоритм в даному алфавiтi A

зада¹ться граф-схемою, в якiй D-точкам вiдповiдають операцi¨ пiдстановки, а P -

точкам операцi¨ входження.

Приклад. На рисунку зображена граф-схема узагальненого нормального алгоритму в алфавiтi fa; bg. Розглянемо слово X = bbaba i застосу¹мо

до нього алгоритм A. Спочатку вiдмiтимо входження слова ab ó ñëîâi X. Ìà¹ìî X = bbaba. Застосувавши першу пiдстановку до нього,

отриму¹мо X1 = bbbaa. Застосу¹мо до X1 другу

пiдстановку, пiсля чого матимемо X2 = bba, çâiäêè

знову за другою пiдстановкою отриму¹мо слово

X3

= b, до якого жодна пiдстановка не застосовна.

Îòæå, A(bbaba) = b.

Äàëi çàìiñòü

будемо малювати так:

71

A2, який зада¹ться такою схемою

Тодi алгоритм A зобразиться так:

2. Нормальнi алгоритми А. А. Маркова визначаються граф-схемами, якi задоволь-

няють умови:

 

 

 

 

 

а) Об'¹днанi вузли, упорядкованi лiнiйно так, що стрiлка з вiдмiткою 0 одного

об'¹днаного вузла входить в наступний об'¹днаний вузол. В перший об'¹днаний вузол

входить стрiлка з початково¨ точки граф-схеми. З останнього вузла стрiлка входить в

заключну точку схеми.

 

 

 

 

 

б) Всi стрiлки з вiдмiткою 1 входять або в перший об'¹днаний вузол, або в заключну

точку граф-схеми.

 

 

 

 

 

Приклад 1. Розглянемо алгоритм, який зада-

ний такою схемою пiдстановок:

 

 

ab ! bb;

 

 

A1: 8 aaa !¢ b;

 

 

< ba

!

aa:

 

 

:

 

 

 

 

Граф-схема цього алгоритму зображена на

рисунку справа. Розглянемо слово X

= abba â

алфавiтi A = fa; bg i застосу¹мо до нього алгоритм

A1. Застосувавши до

слова X = abba

першу

пiдстановку, ми отрима¹мо слово X1

=

bbba,

звiдки за третьою

пiдстановкою

матимемо

X2 = bbaa. До слова X2 застосовна лише третя

пiдстановка, тому воно перетворю¹ться у слово

X3 = baaa. До слова X3

застосовнi друга i третя

пiдстановки, причому спочатку повинна виконуватись друга пiдстановка, але оскiльки вона ¹ заключною, то на цьому процес перетворення слiв закiнчу¹ться. Отже, слово X3

переходить у слово X4 = bb. Таким чином, A1(abba) = bb. Приклад 2. Розглянемо тепер алгоритм

пiдстановок:

aba

bb;

 

A2:

8 bb

 

!a;

 

< aa

! b:

 

:

!

72

Застосувавши його до слова X = babbbaa, ми отрима¹мо наступну послiдовнiсть слiв,

кожне з яких отриму¹ться з попереднього слова за однi¹ю з пiдстановок алгоритму A2:

X1 = baabaa, X2 = babba, X3 = baaa, X4 = bba, X5 = aab, X6 = b. Îòæå, A2(babbbaa) = b.

Будемо казати, що алгоритм A застосовний до слова X, якщо про це перетворення слова X закiнчу¹ться пiсля скiнченного числа крокiв яким-небудь словом Y . В цьому випадку говорять, що алгоритм A перетворю¹ слово X в слово Y i цей факт записують як A(X) = Y . Якщо процес перетворення слова X алгоритмом A нiколи не закiнчу¹ться то кажуть, що алгоритм A не застосовний до слова X.

Приклад 3. Алгоритм A3: f! a не застосовний до жодного слова, оскiльки процес приписування злiва лiтери a буде нескiнченним. Зауважимо, що алгоритм A4: f! ¢ a застосовний до будь-якого слова X. Вiн припису¹ злiва до X ëèøå îäíó ëiòåðó a.

Приклад 4. В алфавiтi fa; bg нормальний алгоритм A5: fa ! aa не застосовний до слiв, в якi входить лiтера a, i застосовний до слiв, якi складаються лише з лiтер b.

Необхiдною умовою можливостi побудови нормальних алгоритмiв , якi реалiзують який-небудь конструктивно заданий процес перетворення слiв, ¹ використання обох видiв пiдстановок як звичайних, так i заключних.

Покажемо необхiднiсть заключних пiдстановок. Нехай A ¹ нормальний алгоритм,

у якого нема¹ заключних пiдстановок; X слово, до якого застосовний алгоритм A, тодi, очевидно, ма¹ мiсце рiвнiсть

A(A(X)) = A(X);

(5.2.1)

тобто результат дi¨ на слово A(X) ¹ знову слово A(X), оскiльки до нього вже не

застосовнi всi пiдстановки алгоритму A. Умовi (5.2.1) не задовольня¹ алгоритм Aa,

äå Aa(X) = aX, îñêiëüêè Aa(Aa(X)) = Aa(aX) = aaX. Алгоритм Aa, таким

чином, не може бути реалiзований нормальним алгоритмом зi схемами без заключних пiдстановок. В той же час ясно, що алгоритм A4: f!¢ a застосовний до кожного слова

X.

По кажемо тепер, що неможливо обмежитись лише одними заключними пiдстановками. Дiя нормального алгоритму з лише одними заключними пiдстановками, поляга¹ з одноразового застосування однi¹¨ з пiдстановок. Тому довжина вихiдного слова A(X) вiдрiзня¹ться вiд довжини вхiдного слова X на скiнченне число лiтер N, ÿêà

не залежить вiд довжини вхiдного слова X. Число N визнача¹ться як максимум модулiв рiзницi мiж довжинами слiв в лiвiй i правiй частинах пiдстановок алгоритму A.15 Â òîé

же час iснують алгоритми, для яких рiзниця мiж довжинами вхiдного i вихiдного слiв

залежить вiд довжини вхiдного слова i може бути як завгодно великою. Наприклад, для

алгоритму подво¹ння слiв Apod(X) = XX. Цей алгоритм не може бути реалiзований

нормальним алгоритмом, що склада¹ться тiльки iз заключних пiдстановок.

 

 

 

 

 

3. Розглянемо деякi приклади нормальних алгоритмiв.

 

 

 

 

 

 

 

 

 

 

8

X1 !¢ Y1;

 

 

 

 

 

 

15 Тобто, якщо ма¹мо алгоритм iз заключними пiдстановками A:

òî ni =

j

l(Xi)

¡

l(Yi)

,

i = 1; : : : ; k, N = max(n1; : : : ; nk)

 

jl(X) ¡ l(A(X))j 6 N äëÿ

<

X¢ ¢k¢ ¢ ¢ ¢ ¢ ¢Y¢k;

 

X.

 

j

 

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, à òîìó

 

довiльного слова

 

 

 

 

 

 

73

мом вiднiмання буде A2:

Приклад 5. Додавання натуральних чисел. Алфавiт: fj; +g. Розглянемо

нормальний алгоритм A1: f+ ! i продемонстру¹мо як викону¹ться дiя 2 + 3 = 5. За початкове слово вiзьмемо X = jj + jjj i застосу¹мо до нього алгоритм A1, ми отрима¹мо слово X1 = jjjjj. Îòæå, A1(X) = X1.

Приклад 6. Вiднiмання½натуральних чисел. Алфавiт: fj; ¡g. Нормальним алгорит-

j ¡ j ! ¡;

¡ !; i продемонстру¹мо його роботу на прикладi 5 ¡3 = 2. За початкове слово вiзьмемо X = jjjjj¡jjj. Застосовуючи послiдовно три рази

першу пiдстановку, ми отрима¹мо такi слова: X1 = jjjj¡jj, X2 = jjj¡j, X3 = jj¡. До слова X3 застосовна лише друга пiдстановка, тому ми ма¹мо X4 = jj. Îòæå, A2(X) = X4.

Приклад 7. Множення двох натуральних чисел. Алфавiт: fj; £; a; bg. Нормальний алгоритм множення позначимо через A3, i вiн визнача¹ться такою системою

пiдстановок:

 

 

 

 

 

третя пiдстановка, тому слово

 

 

перетворю¹ться в слово

 

 

 

 

8

b

 

 

 

b;

 

 

 

 

 

 

 

>

 

j ! j

 

 

 

. За вихiдне вiзьмемо слово

 

 

 

 

 

. До нього застосовна

 

a

 

 

 

ba;

6

. До слова

 

в порядку розташування пiдстановок застосовна

 

>

 

 

 

 

 

 

 

 

 

 

X = jj £ jjj

 

 

 

 

 

 

A :

 

 

 

 

 

 

;

друга пiдстановка, тому

 

перетворю¹ться в слово

 

 

 

,

 

>

 

 

 

 

 

 

a;

 

 

X1

 

 

> j ! j

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

=

 

>

 

 

;

 

 

 

a

 

 

X1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

> j£ ! £

 

jjj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

£j ! £

 

 

 

 

 

 

X1

 

 

 

 

 

 

 

X2 = ba

 

 

>

 

слово X3

=

 

 

 

 

 

 

 

 

 

 

 

 

> a !;

 

 

 

 

 

 

b ba . Äî X3 вже застосовна перша пiдстановка,

 

<

 

 

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j£j jj

 

 

> b

 

 

 

 

 

пiсля чого за тi¹ю ж самою пiдстановкою X2 перетворю¹ться в

 

>

£ !

 

 

 

 

 

 

 

! j

 

 

 

 

тому ми отриму¹мо слово

X4 =

 

bba

. Äî

X4 застосовна друга

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j £ jj j

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

j £ j j j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пiдстановка,

 

òîìó

ìè äàëi

матимемо

X5

 

=

j

£ jjbbjba

.

Продовжуючи i

äàëi

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

подiбнi мiркування, ми послiдовно за тi¹ю чи iншою пiдстановкою отриму¹мо таку послiдовнiсть слiв:

X6

= j £ jjbjbba

X13

X7

= j £ jjjbbba

X14

X8

= £ajjjbbba

X15

X9

= £jbajjbbba

X16

X10

= £jbjbajbbba

X17

X11

= £jjbbajbbba

X18

X12

= £jjbbjbabbba

X19

= £jjbjbbabbba

X20 = bbbbbb

= £jjjbbbabbba

X21 = jbbbbb

= £jjbbbabbba

X22 = jjbbbb

= £jbbbabbba

X23

= jjjbbb

= £bbbabbba

X24

= jjjjbb

= bbbabbba

X25

= jjjjjb

= bbbbbba

X26

= jjjjjj

Отже, ми показали, що A3(X) = X26, тобто A3

(jj £ jjj) = jjjjjj, що означа¹ 2 £ 3 = 6.

 

Приклад 8. Алгоритм скасування частини слова. Такий

 

 

8 aa¯

! a¯a;

A4(P ® Q) = P для довiльних слiв P; Q в алфавiтi A, äå ®

 

A.

 

 

алгоритм, який

ìè

познача¹мо через

A4, визнача¹ться

òàê:

 

 

>

ab¯

 

 

 

 

b¯a;

A зада¹ться такою системою пiдстановок:

®

 

 

; äå

a

 

A.

 

 

>

 

 

 

!

 

 

 

 

 

 

 

 

 

 

®a

 

 

®;

 

 

62

 

 

 

> ba¯ ! a¯b;

 

 

 

 

 

 

 

 

 

½

 

 

 

 

 

 

2

 

 

 

 

>

 

 

 

!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

Приклад 9.

Алгоритм подво¹ння слiв.

 

Розглянемо в

A

:

>

 

 

 

 

 

 

 

 

алфавiтi

 

 

 

 

, алгоритм подво¹ння

ñëiâ

 

 

 

 

 

5

 

>

®b

!

b¯b®;

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

4

 

A = a; b

 

 

 

 

 

 

!

 

A5(X) =

 

 

> bb¯

 

 

 

 

b¯b;

 

 

 

 

 

 

 

!

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

f

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<

®a

a¯a®;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

;

 

нормального алгоритму, що знаходиться праворуч. Нехай X =

 

 

>

°

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

¹ вихiдне слово в даному алфавiтi

 

, òîäi

 

 

 

 

 

 

 

 

.

 

 

>

®

!

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

XX. Цей алгоритм реалiзу¹ться в алфавiтi fa; b; ®; ¯; °g схемою

 

 

>

¯ ! °;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

®:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

Процес перетворення

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

вихiдного слова алгоритмом буде такий:

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

bab

 

 

 

 

 

 

A

 

 

A6

(bab) = babbab

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:

 

 

 

 

 

 

 

 

74

X1 = ®bab, X2 = b¯b®ab, X3 = b¯ba¯a®b, X4 = b¯a¯ba®b, X5 = b¯a¯bab¯b®, X6 = b¯a¯bb¯ab®, X7 = b¯a¯b¯bab®, X8 = b°a¯b¯bab®, X9 = b°a°b¯bab®,

X10 = b°a°b°bab®, X11 = ba°b°bab®, X12 = bab°bab®, X13 = babbab®, X14 = babbab.

Îòæå, A6(X) = X14.

 

 

Приклад 9. Алгоритм подво¹ння слiв в алфавiтi двiйникiв. Алфавiт A = fa; bg,

алфавiт

äâiéíèêiâ

A

= fa;

b

g. Алгоритм подво¹ннi слiв в алфавiтi двiйникiв позна-

 

 

 

 

8 aa ! aa;

то це слово в алфавiтi двiйникiв ма¹ вигляд X

= a b a. Таким

 

 

 

 

 

ab ! ba;

чимо через A6

. Якщо, наприклад, ми ма¹мо слово X = aba, òî

 

 

 

 

> ba

 

 

 

ab;

чином, A6(X) = XX, тобто A6(aba) = a b aaba.

 

Розглянемо тепер

 

 

 

 

>

 

 

 

 

 

 

!

 

 

 

 

 

 

процес перетворення слiв цим алгоритмом слова

 

. В результатi

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

:

>

 

 

 

 

 

!

 

 

 

 

 

 

ми повиннi отримати слово

 

 

 

, тобто

 

 

 

 

 

 

 

. До слова

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

!

 

 

 

 

 

X = ab застосовна лише остання пiдстановка, тому ми отриму¹мо

 

 

 

 

<

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

> bb

 

 

 

 

bb;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ab

 

 

 

 

 

 

 

>

®a

 

 

 

aa®;

 

 

 

 

 

 

 

 

 

 

 

a b ab

 

A6(ab) = a b ab

 

 

 

 

 

>

®

 

 

 

!;

 

 

 

наступне слово X1 = ®ab. На слово X1 дi¹ лише п'ята пiдстановка,

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

çà ÿêîþ ìè ìà¹ìî

 

 

. За шостою пiдстановкою слово

 

 

 

 

>

®b

 

® :

 

 

bb®;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X2 = a a®b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

перетворю¹ться в слово

 

 

 

 

 

 

 

. Далi за першою пiдстановкою отриму¹мо слово

X

 

 

 

>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

= a ab b®

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X4 = a b ab®, звiдки за заключною сьомою пiдстановкою остаточно ма¹мо слово X5 =

a b ab. Îòæå, A6(X) = X5.

4. Принцип нормалiзацi¨ поляга¹ в тому, що для довiльного конструктивно заданого алгоритму в деякому алфавiтi A можна побудувати еквiвалентний йому нормальний

алгоритм Маркова в деякому алфавiтi, який ¹ розширенням алфавiту A.

Цей принцип пiдтверджу¹ться експериментально. Впевненiсть в справедливостi принципу нормалiзацi¨ базу¹ться на всьому досвiдi людства у створеннi алгоритмiв, оскiльки серед рiзноманiтних алгоритмiв, якi створенi в наш час, нема¹ таких, якi не можуть бути нормалiзованi. Принцип нормалiзацi¨ можна сформулювати i так: кожний алгоритм нормалiзований.

5. Побудова нормальних алгоритмiв. Тепер ми розглянемо деякi операцi¨, якi можна виконувати над алгоритмами, що дають змогу за допомогою одних алгоритмiв будувати iншi.

5.1. Композицiя алгоритмiв. Послiдовне застосування до даного слова X двох алгоритмiв спочатку B, а потiм А назива¹ться композицi¹ю цих алгоритмiв i познача¹ться: D(X) = A(B(X)), тобто D = AB. Побудова узагальненого алгоритму

D, який ¹ композицi¹ю двох узагальнених нормальних алгоритмiв À i Â, викону¹ться

просто. Необхiдно вихiдний вузол граф-схеми алгоритму Â з'¹днати з вхiдним вузлом граф-схеми алгоритму А.

5.2. Об'¹днання алгоритмiв. Алгоритм D називають об'¹днанням алгоритмiв À i

Â, якщо вiн кожне слово X перетворю¹ в об'¹днання слiв A(X) i B(X), тобто

D(X) = A(X)B(X):

Для побудови граф-схеми об'¹днання алгоритмiв А i В треба переписати пiдстановки алгоритму А в алфавiтi двiйникiв i використати алгоритм A6 подво¹ння слiв.

Заключною частиною алгоритму D ¹ алгоритм A7 переходу вiд лiтер двiйникiв до вiдповiдних лiтер даного алфавiту (вважа¹мо, що A = fa; bg):

½ a ! a ; A7: b ! b :

75

Îòæå, D = A7ABA6, äå A означа¹ алгоритм A в алфавiтi двiйникiв.

5.3. Розгалуження алгоритмiв. Алгоритм D називають розгалуженням двох даних алгоритмiв À i Â, який керу¹ться третiм алгоритмом C, якщо для довiльного слова

X в даному алфавiтi A ма¹мо спiввiдношення:

D(X) = ½ A(X); ÿêùî C(X) = ¤; B(X); ÿêùî C(X) 6= ¤;

äå ¤ означа¹ порожн¹ слово. Для побудови алгоритму D скориста¹мося алгоритмом

A6 подво¹ння слiв i перепишемо пiдстановки алгоритму C в алфавiтi двiйникiв, тодi C(A6(X)) = C(X)X для довiльного слова X. Граф-схема розгалуження двох алгоритмiв À i Â, який керу¹ться алгоритмом C, ма¹ такий вид:

5.4. Iтерацiя алгоритмiв. Багаторазове повторення даного алгоритму À, яке керу¹ться алгоритмом Â, так що для довiльного вхiдного слова Х iсну¹ послiдовнiсть

ñëiâ X = X0; X1; X2; : : : ; Xn (n > 0), äëÿ ÿêî¨

Xk+1 = A(Xk) B(Xk) 6= ¤ B(Xn) = ¤;

ïðè

ïðè

0 6 k 6 n ¡ 1;

0 6 k 6 n ¡ 1;

назива¹ться iтерацi¹ю алгоритму A, яка керу¹ться алгоритмом B. Граф-схема iтерацi¨ ма¹ такий вигляд:

76

6.Поняття про унiверсальний алгоритм. Нехай A ¹ деякий нормальний алгоритм

âалфавiтi A. Покажемо, що цей алгоритм зображу¹ться в алфавiтi B = A[f®; ¯; °g, äå f®; ¯; °g \ A = ?, одним словом. Для цього послiдовно пiдстановки даного алгоритму виписуються так, що стрiлки замiнюються лiтерою ®, крапка лiтерою ¯, а слова пiдстановки роздiляються за допомогою °. Побудоване слово в алфавiтi B назива¹ться зображенням Au алгоритму A. Наприклад, розглянемо алгоритм

8

< ab ! a; A: aa !¢ b;

:ba ! a

âалфавiтi A = fa; bg. Тодi зображенням Au цього алгоритму ¹ слово:

ab®a°aa®¯b°ba®a:

Введемо нову лiтеру ±, тодi в алфавiтi B0 = B [ f±g буду¹мо зображення нормального алгоритму A i вхiдного слова X словом Au±X. Ма¹ мiсце наступна теорема, яку ми

формулю¹мо без доведення:

Теорема. Iсну¹ такий нормальний алгоритм N, який назива¹ться унiверсальним нормальним алгоритмом, що для довiльного алгоритму A i довiльного вхiдного слова X в алфавiтi A перетворю¹ слово Au±X в алфавiтi A[f®; ¯; °; ±g в слово A(X), тобто

N(Au±X) = A(X).

З цi¹¨ теореми виплива¹ принципова можливiсть побудови тако¨ машини, яка може виконувати роботу довiльного нормального алгоритму.

77

5.3 Про алгоритмiчно нерозв'язнi проблеми

Асоцiативне числення слiв. Проблема еквiвалентностi слiв. Приклади. Поняття про алгоритмiчно нерозв'язнi проблеми.

1. Асоцiативне числення слiв. В асоцiативному численнi слiв вводяться допустимi операцi¨ пiдстановок без будь-яких обмежень на порядок ¨х застосування. Якщо A

деякий алфавiт, а A i B слова в ньому, то неорi¹нтована пiдстановка позначатиметься через A $ B. Наприклад, пiдстановка ab $ bcb у двоелементному алфавiтi A = fa; bg може бути застосована до слова abcbcbab в рiзному порядку, тобто можна в цьому словi видiляти (причому не обов'язково злiва) або слово ab, або слово bcb, тобто abcbcbab, àáî

abcbcbab, àáî abcbcbab, àáî abcbcbab.

Означення 9. Асоцiативним численням назива¹ться сукупнiсть всiх слiв в даному абстрактному алфавiтi разом з деякою скiнченною системою допустимих пiдстановок. Асоцiативне числення зада¹ться алфавiтом i системою допустимих пiдстановок.

Якщо слово A ¹ результат одного застосування допустимо¨ пiдстановки до слова B, то, очевидно, що слово B також ¹ результатом застосування цi¹¨ ж пiдстановки до слова

A; такi два слова називаються сумiжними словами. Послiдовнiсть слiв A1; A2; : : : ; An, â

якiй два сусiднi слова ¹ сумiжними, назива¹ться дедуктивним ланцюгом, який з'¹дну¹ слова A1 i An. Два слова A i B називаються еквiвалентними (познача¹ться через A '

B), якщо iсну¹ дедуктивний ланцюг, який з'¹дну¹ цi слова. Ясно, що ' ¹ вiдношення

еквiвалентностi.

2. Проблема еквiвалентностi слiв поляга¹ в тому, що для довiльних двох слiв даного асоцiативного числення необхiдно визначити чи еквiвалентнi вони, чи нi. Ця проблема ма¹ важливе теоретичне i практичне значення в математицi.

Приклад 1. Асоцiативне допустимих пiдстановок

числення зада¹ться алфавiтом fa; b; cg i системою

ab $ ba; ac $ ca; bc $ cb:

Розглянемо нормальний алгоритм:

8

< ba ! ab;

A2: : ca ! ac; cb ! bc:

Результат застосування цього нормального алгоритму до довiльного слова X в алфавiтi fa; b; cg ¹ слово, у якого ¹ всi лiтери слова X, але вони упорядкованi так, що спочатку йдуть всi лiтери "a ", çà íèìè âñi ëiòåðè "b ", i ïîòiì "c ". Наприклад,

A2(bacbaca) = aaabbcc:

Алгоритм A2 перетворю¹ еквiвалентнi слова в даному асоцiативному численнi в рiвнi слова.

78

ca $ accc змiню¹ парнiсть iндексу слова. Справдi, розглянемо два слова:

Приклад 2. Асоцiативне допустимих пiдстановок

числення зада¹ться алфавiтом fa; b; cg i системою

b $ acc; ca $ accc; aa $ ¤; cccc $ ¤:

Розглянемо нормальний алгоритм:

A3:

8

> b ! acc;

>

< ca ! accc;

>> aa ! ¤; : cccc ! ¤:

Слова в даному алфавiтi, якi можна отримати застосуванням алгоритму A3 äî ñëiâ

в цьому ж алфавiтi, назвемо зведеними словами. Покажемо, що зведеними словами в даному алфавiтi можуть бути лише слова:

¤; c; cc; ccc; a; ac; acc; accc:

Дiйсно, алгоритм A3 знищу¹ лiтери "b " в словах даного алфавiту; лiтера "a " завжди входить перед лiтерою "c " у зведених словах, причому не бiльше одного разу; лiтер

"c ", нарештi, не може бути бiльше трьох.

Покажемо далi, що довiльнi два зведених слова не еквiвалентнi мiж собою. Зразу ж вiдмiтимо, що при побудовi дедуктивного ланцюга можна не користуватись першою пiдстановкою. Справдi, якщо в кожному словi дедуктивного ланцюга замiнити лiтери "b " на слово acc, то отрима¹мо послiдовнiсть слiв, у якiй всi сусiднi слова або сумiжнi,

або просто рiвнi.

Оскiльки друга, третя i четверта пiдстановки не змiнюють парностi лiтер "a " i "c ", то жодне з перших чотирьох слiв, в якi лiтера "a " не входить, не еквiвалентне жодному

з чотирьох слiв, що залишаються, в якi входить лiтера "a " (непарне число разiв). Залиша¹ться тепер переконатися в нееквiвалентностi наступних пар слiв:

"¤" i "cc "; "c " i "ccc "; "a " i "acc "; "ac " i "accc ":

Неважко бачити, що з еквiвалентностi хоча б однi¹¨ пари виплива¹ еквiвалентнiсть iнших пар слiв, в чому легко переконатися.

Iндексом входження лiтери "a " в слово X назива¹ться число всiх входжень лiтери "c ", якi зустрiчаються правiше лiтери "a ". Iндексом слова X назива¹ться сума iндексiв всiх входжень лiтери "a ". Наприклад, в словi "accac " перша злiва лiтера "a " ìà¹

iндекс 3, друга 1, iндекс слова 4

Покажемо, що слова "a " i "acc " не еквiвалентнi. Iндекси цих слiв однаково¨ парностi (0 i 2). Пiдстановки aa $ ¤ i cccc $ ¤ не змiнюють парностi iндексу слова. Пiдстановка

æ AcaB i

AacccB. Iндекси входжень "a " â ñëîâi A змiню¹ться на 2; iндекси входжень "a " â ñëîâi B не змiню¹ться; iндекс входження "a " мiж словами A i B çìiíþ¹òüñÿ íà 3. Îòæå, â

цiлому iндекс слова змiню¹ться на непарне число.

Припустимо вiд супротивного, що слова "a " i "acc " еквiвалентнi, тобто iсну¹ дедуктивний ланцюг, який зв'язу¹ цi слова; ланцюг побудований за допомогою

79

пiдстановок: ca $ accc; aa $ ¤; cccc $ ¤. Оскiльки пiдстановка cccc $ ¤ змiню¹ число входжень лiтери "c " на 4, а пiдстановка aa $ ¤ зовсiм не змiню¹ числа входжень "c ", то для побудови дедуктивного ланцюга, яка зв'язу¹ "a " i "acc ", необхiдно застосувати

пiдстановку ca $ accc, причому непарне число разiв. Але при цьому iндекс слова

змiню¹ться на непарне число, що протирiччить однаковiй парностi iндексiв цих слiв. Отже, слова "a " i "acc " не еквiвалентнi.

3. Поняття про алгоритмiчно нерозв'язнi проблеми. Iснування алгоритмiчно нерозв'язних проблем можна сформулювати так: iснують такi класи задач, для яких не iсну¹ ¹диного нормального алгоритму ¨х розв'язання. Наприклад, росiйський математик П. С. Новiков вперше встановив алгоритмiчну нерозв'язнiсть проблеми тотожностi в теорi¨ груп. Ще одним прикладом нерозв'язно¨ проблеми в теорi¨ алгоритмiв ¹ проблема розпiзнання самозастосовностi алгоритмiв.

Пояснимо в чому поляга¹ ця проблема. Розгляда¹мо нормальнi алгоритми в алфавiтi A, який склада¹ться с двох лiтер. Нехай Au ¹ слово в алфавiтi A, ÿêå

зображу¹ алгоритм A.кщо алгоритм A застосовний до слова Au, òî A назива¹ться

самозастосовним, iнакше вiн назива¹ться несамозастосовним. Iснують алгоритми обох видiв. Наприклад, тотожнiй алгоритм A1(X) = X самозастосовний, а алгоритм

Aa(X) = aX приписування лiтери несамозастосовний.

Проблема розпiзнавання самозастосовностi алгоритмiв поляга¹ в тому, щоб знайти ¹диний алгоритм, який би за схемою довiльного нормального алгоритму A

встановив, чи самозастосовний алгоритм A, ÷è íi.

Згiдно принципу нормалiзацi¨ цю задачу достатньо розглядати лише для нормальних алгоритмiв. Iснування алгоритмiчно нерозв'язних проблем означа¹, що при вiдшуканнi алгоритму, який розв'язу¹ ту чи iншу проблему, потрiбно мати на увазi, що такий алгоритм може взагалi i не iснувати. Тому разом зi спробами побудови алгоритму треба намагатися також довести його iснування.

80