Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UchebnoePosobie.doc
Скачиваний:
72
Добавлен:
11.11.2019
Размер:
6.36 Mб
Скачать

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

Понятие "нормальный алгоритм" ввел в 1947 г. советский ученый А.А. Марков в качестве одного из уточнений представления об алгоритме. Он положил, что нормальный алгоритм, являясь алгоритмом в некотором алфавите VT, порождает в нем некоторый детерминированный процесс переработки только одного слова Ро и только в одном алфавите.

Словами Рi в алгоритме Маркова могут быть арифметические, алгебраические или логические выражения. Но это оказалось удобным средством в формировании алгоритмических процессов для слов нематематической природы.

Нормальный алгоритм Маркова есть указание использовать упорядоченный список правил подстановки:

i  i,

где i и i — слова в алфавите VT.

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

Ро P1 P2 ... Pi ... Q.

Для организации последовательного использования правил вывода заключительного слова все они должны быть индексированы

i  [1, 2, 3...].

Если Рi - цепочка подслов (12) в алфавите Vт (1 и 2 слова, возможно, пустые в алфавите VT) и среди множества правил есть подмножество {i}, то выбрать правило, имеющее наименьший номер и выполнить подстановку в слово (12)  (1i2).

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

. Среди множества правил подстановки есть простые правила, которые обозначают так: 1  1 и заключительные: i i .

Так будет до тех пор, пока ни одно из правил подстановки не может быть использовано, а заключительной подстановкой будет дано указание об окончании работы алгоритма.

Процесс может оборваться самостоятельно на некотором слове, в которое не входит ни одна из левых частей правил. Так формируется "тупик".

Для того, чтобы построить модель нормального алгоритма, необходимо в соответствии с правилами подстановки найти множество распознавателей вхождения слов i в слово Pi и множество операторов подстановки слова i в слово Pi+1 i.

На граф-схеме алгоритма (см. рис.5.19) следует выделить два типа вершин:

• распознаватели вхождения - PBi ;

• операторы подстановки - ОПi.

Распознаватели вхождения соединяются последовательно в соответствии с заданной нумерацией правил. Второй выход распознавателя вхождения при обнаружении i в слове Рi передает информацию о слове Pi в оператор подстановки — ОПi, где выполняется соответствующая замена слова  на слово , т.е. 1  2  1  2 .

Выход оператора подстановки направляет преобразованное слово в начало алгоритма, если применена простая подстановка, и

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

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

М1:= базовая функция Сn(х)=0 в десятичной системе счисления.

Пусть х =’ # XXX ... #.’ число в десятичной системе счисления, а X – цифра. Алфавит Vt содержит три символа vt = {X, #, (},

Протокол.

1) # X  ( X;

2) (X  0 ( ;

3) ( #   #..

Пусть x = 289. Тогда #289# #(289# #0(89# #00(9# #000(# #000#.

На рис. 5.20 приведена блок-схема этого алгоритма.

М2:= базовая функции (х) в десятичной системе счисления.

(х)= # XXX ... # =0.

Пусть х =’ # XXX ... #.’ число в десятичной системе счисления, а X – цифра. .

Алфавит содержит четыре символа Vt={X, #, (, )}.

Протокол.

  1. #X(X; 3) (#)#; 5) X)  (X+1);

  2. (XX(; 4) 9) )0; 6) #)1.

Пусть x=0.

Тогда #0# #(0# #0(#  #0)#  #1#.

Пусть x=289.

Тогда #289# #(289# #2(89# #28(9# #289(# #289)# #28)0# #290#.

Пусть x=999.

Тогда #999# #(999# #9(99# #99(9# #999(##999)# #99)0# #9)00# #)000# #1000#.

На рис. 5.21 приведена блок-схема этого алгоритма.

М3:= преобразование цифры в унарный код.

Если Ро = # X1Х2Х3 ...#, то Q = # |x1#|x2#|x3# ... .

Алфавит Vt для преобразования цифры в код содержит символы VÒ = {X, #, /, (}.

Протокол.

  1. # X (X; 3) ( 0  # ; 5) |X |(X;

  2. (X (X-1 |; 4) #||#; 6) |# |.

Пусть x=234.

Тогда # 234# (234# (1 | 34# (0 || 34# # || 34# #|| (34# # || (2 | 4# # || ( 1 || 4# # || ( 0 ||| 4# # ||#||| (4# # || # |||# (3 |# # ||# |||# ( 2 || # # || # ||| ( 1 |||# # || # ||| ( 0 ||||# || # ||| # ||||#  || # ||| # |#|||#  || # ||| # ||#||# || # ||| # |||#|# || # ||| # ||||# .

На рис. 5.22 приведена блок-схема этого алгоритма.

М4:= вычисление суммы двух чисел в унарном коде,

т.е. f (х; у) = | x + y.

Если Ро =#|x+|y#, то Q =# |x + y#.

Алфавит для М3 есть Vt = { |, +, #, (}.

Протокол.

1) #|  (| ;

2) (|  |( ;

3) (+  |( ;

  1. |(# # .

Пусть х=2, у=3. Тогда

Ро =.# ||+||| #  #(||+|||# # |(|+|||# # ||(+|||##|||(|||# # ||||(|| # # ||||| (|##||||||(##|||||# =Q.

На рис. 5.23 приведена блок-схема этого алгоритма.

М5:= вычисление произведения двух чисел в унарном коде. f(х; у)=|x* y.

. Если Ро= #|x*|y #, то Q = #|x y #.

Алфавит содержит символы Vт ={| ; *, #, (, )}.

Протокол.

1) | | (|; 4) )( ( ); 7) ( ) );

2) |# (#; 5) )| |); 8) ) |;

3) |( (|); 6) (| (; 9) |#  •|#.

Вычисление произведения двух чисел х = 3 и у = 2 имеет вид:

#|||*||#  #|||(*|#  #||(|)*|#  #|(|)|)*|#  #(|)|)|)*|#  #()|)|)*|#  #)|)|)*|#  #|))|)*|#  #|)|))*|#  #||)))*|#  #||)))(# #||))()#  #||)())#  #||()))# #|(|))))#  #(|)|))))#  #()|))))# #)|))))#  #|)))))#  #||))))#  #|||)))#  #||||))#  #|||||)#  #||||||# .

Анализ трех типов моделей показал, что основные свойства дискретности, детерминизма, массовости и результативности остаются неизменными для различных способов описания. Различия наблюдаются лишь в использовании алгоритмических объектов.

Если для рекурсивных функций объектами являются числовые функции, а процесс вычисления задан операторами суперпозиции, рекурсии и минимизации, то для машин Тьюринга такими объектами являются символы алфавитов внешней и внутренней памяти, а процесс вычисления задан функциями выхода, перехода и перемещения. Для нормального алгоритма Маркова алгоритмическими объектами являются слова, а процесс вычисления задан правилами подстановки, изменяющими состав и структуру исходного слова до искомого результата.

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

Все модели обеспечивают способ получения ее значений. Но процесс вычисления может быть определен для для всего множества значений независимых переменных аргумента. Особо при использовании оператора минимизации.

Функции, значения которых определены не для всех значений независимых переменных аргумента, называют частичными. Следовательно, вычислительные функции, для которых ограничена область определения, называют частично вычислимыми функциями.

Если частично вычислимая функция определена на множестве целых положительных чисел и принимает значение на том же множестве, то ее называют частично рекурсивной функцией. Функцию, определенную на всем множестве целых положительных чисел и принимающую значение на том же множестве, называют общерекурсивной функцией.

Анализ моделей показывает, что на каждом шаге вычисления формируется частично рекурсивная функция и каждая функция этой последовательности является либо базовой, либо частично рекурсивной с использованием результатов предшествующего шага.

Распространена гипотеза, известная под названием тезиса Черча, о том, что всякая функция, вычислимая некоторым алгоритмом, есть частично рекурсивная функция; и наоборот, всякая частично рекурсивная функция вычислима некоторым алгоритмом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]