Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
my=ps=KSR1=samoilik=13052013.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
744.96 Кб
Скачать

1.6 Символьные алгоритмы

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

Одним из уточнений понятия алгоритма является НАМ, введенный советским математиком А. А. Марковым. НАМ работает над конструктивными объектами — словами (цепочками символов), построенными из букв конечного алфавита. Принцип нормализации, предложенный А. А. Марковым, гласит:

а) объекты любой природы могут быть представлены (закодированы) словами в подходящем алфавите;

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

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

Для организации последовательного и упорядоченного просмотра формул или правил они должны быть индексированы i {1, 2, 3,...}.

Если слово Рi есть цепочка вида (γ1αIγ2) в алфавите Vт, где γ1 и γ2 – слова в этом же алфавите и среди множества правил первым в упорядоченном списке есть правило αI→βI, то нужно выполнить подстановку (γ1αiγ2) → (γ1βi γ2).

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

Среди множества правил выделяют заключительное αi → • β i , результатом подстановки которого формируется слово Q и дается указание об окончании работы алгоритма.

Процесс может оборваться на некотором слове Рi, для которого нет соответствующего правил. Тогда это слово направляется в «тупик».

Для того чтобы построить модель алгоритма, необходимо выделить упорядоченную последовательность левых частей правил подстановки, так называемых распознавателей вхождения слов αi в слово Pi, и множество соответствующих операторов подстановки слова βI в слово Pi+1.

На схеме алгоритма (смотри Рисунок 1.2) эти блоки обозначены так:

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

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

Распознаватели вхождения соединяются последовательно в соответствии с заданной последовательностью правил. Второй выход распознавателя вхождения при обнаружении αi в слове Рi передает информацию о слове Pi1αiγ2 в ОПi, где выполняется соответствующая замена слова αi на слово βi, т. е. γ1αiγ2 ⇒ γ1βiγ2=Pi+1.

Оператор подстановки направляет слово Pi+1 в «начало» алгоритма, если применена простая подстановка, и в «конец» алгоритма, если применена заключительная подстановка.

Рисунок 1.2 – Схема нормального алгоритма Маркова

Примером схемы нормального алгоритма в пятибуквенном алфавите   может служить схема

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

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

Любой нормальный алгоритм эквивалентен некоторой машине Тьюринга, и наоборот — любая машина Тьюринга эквивалентна некоторому нормальному алгоритму. Вариант тезиса Чёрча — Тьюринга, сформулированный применительно к нормальным алгоритмам, принято называть «принципом нормализации».

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

На основе НАМ развивается одно из самых мощных и современных направлений в программировании — продукционное программирование.

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

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