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

Нормальные алгорифмы Маркова

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

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

Предположим, что заранее выделен некоторый алфавит. Обозначим его А. Букву, одинаковую с одной из букв, входящих в алфавит А, называют буквой в А. Слово, состоящее из букв в А, называют словом в А. При этом для удобства рассуждений допускают и пустые слова (не имеющие в своем составе ни одной буквы).

Если А и В – два алфавита, причем каждая буква алфавита А является буквой в В, а хотя бы одна из букв алфавита В не является буквой в А, то В называется расширением алфавита А.

Например, если А = , б, в, г), В={1, а, б, в, г, д}, то В является расширением А, так как содержит две буквы («1» и «д»), не являющиеся буквами в А, тогда как все буквы алфавита А являются буквами в В.

Рассмотрим какое-либо конкретное слово для определенности в алфавите русских букв, например слово «самолет». Мы видим, что из него можно вырезать подслова, например «сам», «амол» или «олет», или «лет», или, наконец, однобуквеиное слово «т». Про такие подслова говорят, что они входят в рассматриваемое слово или являются вхождениями в него. Заметим, что в наше слово входит и пустое слово, причем – несколько раз (оно входит перед первой буквой, между каждыми двумя буквами и, наконец, после последней буквы, т.е., в данном случае, 8 раз).

Определение 7.9. Подслово – часть слова, буквы которого расположены рядом. Подсловом может быть и само слово.

Условимся обозначать слова заглавными латинскими буквами (если эти буквы не являются буквами в применяемом алфавите). Если задано некоторое слово и нами выбрана буква, являющаяся его обозначением (именем), то будем ставить между ними знак = (равенства). Возвращаясь к нашему примеру, мы можем написать: для слова R = самолет слово Р = амол является вхождением.

Заметим, что не только пустое слово может многократно входить в другое слово. Например, в слово R = тарарам слово Р = ара входит два раза. Особый интерес для нас будет представлять так называемое первое вхождение.

Определение 7.10. Марковской подстановкой называется операция над словами, задаваемая с помощью пары слов (Р, Q), заключающаяся в следующем. Если задано исходное слово R, то в нем находят первое вхождение слова Р (если таковое имеется) и, не изменяя остальных частей слова R, заменяют в нем это вхождение словом Q. Полученное слово является результатом применения марковской подстановки (Р, Q) к слову R.

Если же нет первого вхождения Р в слово R (при этом нет вообще ни одного вхождения Р в R), то считается, что марковской подстановке слово R не поддается.

Частными случаями марковских подстановок являются ( ,Q), (Р, ) и ( , ). В первом из приведенных примеров Р, во втором Q, а в третьем и Р, и Q являются пустыми.

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

Будем рассматривать слова в некотором алфавите А. Предположим, что символы «→ » и « . » не являются буквами в А. Запись

P→ Q и Р .

будем называть записями марковской подстановки (Р, Q), причем первую из них будем называть подстановкой, а вторую – заключительной подстановкой.

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

Марковская подстановка выполняется один раз, и если есть несколько вариантов, то выполняется подстановка, которая находится левее (ближе к началу слова). Марковская подстановка может быть успешной, неуспешной и конечной. Успешной – если подстановка выполнена, неуспешной, если подстановку выполнить нельзя и конечной, если в начале слова-замены стоит « . ». Ее назначение – прекращение дальнейшего процесса Марковских подстановок.

Определение 7.11. Записью нормального алгоритма в алфавите А называют столбец формул, левые и правые части которых являются словами в А. Выполнение нормального алгоритма применительно к исходному данному R, являющемуся словом в А, заключается в следующем:

  1. двигаясь по столбцу формул, ищут первую формулу, левая часть которой входит в преобразуемое слово;

  2. если такой формулы не найдется, процесс окончен;

  3. если же она найдется, то выполняют марковскую подстановку, соответствующую данной формуле, изменяя преобразуемое слово;

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

  5. в противном случае весь процесс повторяют с самого начала (то есть с пункта 1).

Этапы решения задач с помощью алгорифмов Маркова

Для составления алгорифма Маркова необходимо задать:

  1. алфавит для записи слов и, возможно, расширенный алфавит для записи марковских преобразований (полученный путем добавления дополнительных технических букв);

  2. определение предложений и слов языка, на котором будут записываться данные и результаты.

Порядок действия алгорифма Маркова:

  1. записывается последовательность марковских подстановок и задается слово, на которое должен действовать этот алгорифм;

  2. проверяется возможность марковской подстановки (1). Если она успешна, процесс повторяется, начиная с первой подстановки, если неуспешна, то происходит переход к следующей подстановке. Если подстановка конечна, то прекращаем работу алгорифма;

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

Результатом действия алгорифма Маркова может быть:

  1. все подстановки неуспешны, мы получаем результат действия алгорифма;

  2. в процессе работы выполнена конечная подстановка, результат работы есть;

  3. алгорифм выполняется бесконечно.

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

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

Таким образом, у любого алгорифма существует множество слов, для которых он применим (область применимости) и множество слов, для которых он не применим (область неприменимости).

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

Внимательно рассматривая нормальные алгоритмы, мы видим, что они вполне соответствуют нашему пониманию алгоритма, но имеют очень частный характер. Большинство алгоритмов, встречающихся на практике, не являются нормальными алгоритмами. Однако, нормальные алгоритмы описаны с полной математической строгостью и точностью. Они вполне пригодны для тех целей, для которых были разработаны, а именно – для целей обоснования математики и исследования неразрешимости проблем.

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

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

Соседние файлы в папке Мат. логика все лекции