НОРМАЛЬНЫЕ АЛГОРИТМЫ

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

Определение 1. Схемой нормального алгоритма в алфавите

называется упорядоченная последовательность

(1)

слов в алфавите где - слова в алфавите , а есть слово или При этом слово схемы (1) называется ее -й формулой с левой частью и правой частью .

Формула называется простой, если есть и заключительной, если есть

Действие НА на слово в алфавите описывается следующим определением.

Определение 2. Пусть - слово в алфавите и хотя бы одно из слов является его подсловом. Элементарным преобразованием слова по нормальному алгоритму со схемой (1) называется замена в первого вхождения слова с наименьшим номером словом Если результатом указанного элементарного преобразования является слово то пишут т. е. или .

Определение 3. Говорят, что НА в алфавите применим к слову в алфавите и перерабатывает его в слово , если существует конечная последовательность слов

(2)

в которой

или и слово не содержит подслов

В противном случае говорят, что алгоритм не применим к слову

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

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

Если - алфавит, содержащий , то НА в алфавите называется нормальным алгоритмом над алфавитом .

Приведем примеры нормальных алгоритмов. При этом буквой будет всегда обозначаться пустое слово (в любом алфавите).

1. НА в алфавите со схемой

перерабатывает любое слово в себя, причем последовательность слов, соответствующая слову имеет вид: .

2. НА со схемой

не применим ни к одному слову. Последовательность, соответствующая слову будет бесконечной:

3. НА в алфавите со схемой

приписывает к любому слову слева слово :

4. Построим НА , приписывающий к любому слову справа фиксированное непустое слово Это сделать несколько сложнее, чем приписывание слова слева. Для этого удобнее расширить алфавит , добавив к нему одну новую букву , и построить искомый НА в алфавите (т. е. над ). Нетрудно проверить, что нужное нам преобразование будет осуществлять НА со схемой

……………..

Последовательность слов, соответствующая произвольному слову в алфавите , для этого НА имеет вид:

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

так, что вся схема запишется в виде:

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

где количество букв будет равно ,

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

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

Проследите в качестве упражнения, что для любого слова в алфавите .

Приведем еще примеры НА над числами. Условимся натуральное число записывать в виде вертикальных палочек.

6. НА в алфавите со схемой

осуществляет сложение натуральных чисел.

7. НА в алфавите со схемой

осуществляет умножение натуральных чисел.

 

 








Дата добавления: 2014-12-02; просмотров: 995;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.017 сек.