Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-Математическая логика и теория алгоритмов / Gmail / Учебное пособие-Математическая логика и теория алгоритмов.doc
Скачиваний:
568
Добавлен:
17.03.2015
Размер:
2.1 Mб
Скачать

§ 6. Нормальные алгоритмы Маркова

Как и ранее, будем называть алфавитом А всякое непустое конечное множество символов, а сами символы алфавита будем называть буквами.

Словом в алфавите А называется всякая конечная последовательность букв алфавита А. Пустая последовательность букв называется пустым словом и обозначается через .

Если Р обозначает слово и Q обозначает слово , то PQ обозначает объединение . В частности, Р = Р = Р. Кроме того, (P1P2)P3 = P1(P2P3).

Алфавит А называется расширением алфавита В, если В А. Очевидно, что в этом случае всякое слово в алфа­вите В является словом в алфавите А.

Алгоритмом в алфавите А называется эффективно вычислимая функция, областью определения которой служит какое-нибудь подмножество множества всех слов в алфавите А и значениями которой являются также слова в алфавите А. Пусть Р есть слово в алфавите А; говорят, что алгоритм U применим к слову Р, если Р содержится в области определения U. Если алфавит В является расширением алфавита А, то всякий алгоритм в алфавите В называется алгоритмом над алфавитом А.

Большинство известных алгоритмов можно разбить на некоторые простейшие шаги. Следуя А. А. Маркову, в качестве элементарной операции, на базе которой строятся алгоритмы, выделим подстановку одного слова вместо другого. Если Р и Q - слова в алфавите А, то выражения Р Q и Р  Q будем называть формулами подстановки в алфавите А. При этом предполагается, что символы стрелка  и точка  не являются буквами алфавита А, а каждое слово Р и Q может быть и пустым словом. Формула подстановки Р Q называется простой, а формула подстановки Р  Q называется заключительной.

Пусть Р () Q обозначает одну из формул подстановки Р Q или Р  Q. Конечный список формул подстановки в алфавите

Р1 () Q1

Р2 () Q2

…………

Рr () Qr

называется схемой алгоритма и порождает следующий алгоритм в алфавите А.

Принято говорить, что слово Т входит в слово Q, если существуют такие (возможно пустые) слова W, V, что Q = WTV.

Пусть Р – слово в алфавите А. Здесь может быть одно из двух:

  1. Ни одно из слов P1,P2,...,Pr не входит в слово Р (обозначается: U: P ).

  2. Среди слов Р12,...,Рr существуют такие, которые входят в Р. Пусть mнаименьшее целое число такое, что 1  m r, и Рm входит в Р, и R - слово, которое получается, если самое левое вхождение слова Рm в слово Р заменить словом Qm. Тот факт, что Р и R находятся в описанном отношении, коротко запишем в виде

U:PR, (a)

если формула подстановки Pm () Qm - простая, или в виде

U:P├ R (б)

если формула Рт () Qm заключительная.

В случае (а) говорят, что алгоритм U просто перево­дит слово Р в слово R; в случае (б) говорят, что алгоритм U заключительно переводит слово Р в слово R.

Пусть далее, U:PR означает, что существует такая последовательность R0, R1, Rk слов в алфавите А, что Р = R0, R = Rk, U:RjRj+1 для j = 0, 1, …, k-2 и либо U:Rk-1Rk , либо U:Rk-1├ Rk Rk (в этом последнем случае вместо U:PR пишут U:P╞ R )

Положим теперь U(P) = R тогда и только тогда, когда либо U:P╞ R , либо U:PR и U:R .

Алгоритм, определенный таким образом, называется нормальным алгоритмом или алгоритмом Маркова.

Работа алгоритма U может быть описана следующим образом. Пусть дано слово Р в алфавите А. Находим первую в схеме алгоритма U формулу подстановки Рт ()Qm такую, что Рт входит в Р. Совершаем подстановку слова Qm вместо самого левого вхождения слова Рт в слово Р. Пусть R1 – и результат такой подстановки. Если Рт ()Qm – заключительная формула подстановки, то работа алгоритма заканчивается, и его значением является R1. Если формула подстановки Рт ()Qm – простая, то применим к R1 тот же поиск, который был только что применен к Р и т.д. Если на конечном этапе будет получено такое слово Ri, что U:Ri , то есть ни одно из слов Р1, ..., Рr не входит в Ri, то работа алгоритма заканчивается, и Rt будет его значением.

Если описанный процесс на конечном этапе не заканчивается, то говорят, что алгоритм U не применим к слову Р.

Пример 1. Пусть А есть алфавит {b,c} . Рассмотрим схему

b

сc.

Определяемый этой схемой нормальный алгоритм U перерабатывает всякое слово Р в алфавите А, содержащее хотя бы одно вхождение буквы b, в слово, которое получается вычеркиванием в Р самого левого вхождения буквы b.

Действительно, всякая буква с, находящаяся в слове левее самой левой буквы b, простой подстановкой с с переводится в букву с, а самая левая буква b заключительной подстановкой переводится в пустое слово .

Например, если Р = ссbbс, то PQ, где Q = ссbс.

Пустое слово U перерабатывает в само себя.

U не применим к непустым словам, не содержащим вхождения буквы b. Действительно, если слово Р содержит только буквы с, то простой подстановкой с с оно будет перерабатываться в себя, но тогда всегда Р Р, и мы не приходим к заключительной подстановке, т.е. процесс будет продолжаться бесконечно.

Пример 2. Пусть А есть алфавит { a0, a1,…, an}. Рассмотрим схему

i (ai) (aiA).

Эта схема определяет нормальный алгоритм U, перерабатывающий всякое слово в алфавите А в пустое слово. Например,

U: a1a2a1a3a0a1a2a1a3a2a1a3a2a3a3

и, наконец,

U: . Следовательно, U(a1a2a1a3a0) = .