НОРМАЛЬНЫЕ АЛГОРИТМЫ
Каждый нормальный алгоритм (НА) является определенным процессом преобразования слов в некотором конечном алфавите и задается набором допустимых элементарных преобразований и правилами, определяющими порядок применения этих преобразований. При этом в качестве элементарного преобразования используется замена одного вхождения подслова в слове некоторым другим (или тем же словом). Всевозможные замены для заданного НА определяются его схемой, а последовательность проведения замен – схемой и некоторыми дополнительными соглашениями. Эти соглашения одни и те же для всех НА, а потому НА, по существу, однозначно определяются алфавитом и схемой.
Определение 1. Схемой нормального алгоритма в алфавите
называется упорядоченная последовательность
(1)
слов в алфавите где - слова в алфавите , а есть слово или При этом слово схемы (1) называется ее -й формулой с левой частью и правой частью .
Формула называется простой, если есть и заключительной, если есть
Действие НА на слово в алфавите описывается следующим определением.
Определение 2. Пусть - слово в алфавите и хотя бы одно из слов является его подсловом. Элементарным преобразованием слова по нормальному алгоритму со схемой (1) называется замена в первого вхождения слова с наименьшим номером словом Если результатом указанного элементарного преобразования является слово то пишут т. е. или .
Определение 3. Говорят, что НА в алфавите применим к слову в алфавите и перерабатывает его в слово , если существует конечная последовательность слов
(2)
в которой
или и слово не содержит подслов
В противном случае говорят, что алгоритм не применим к слову
Из приведенных определений естественным образом извлекается описание процесса переработки слова по нормальному алгоритму (или нормальным алгоритмом ). А именно, по заданному слову НА строит последовательность слов. Если не содержит подслов то эта последовательность одноэлементна и состоит из единственного слова . Если же содержит хотя бы одно из подслов , то производится его элементарное преобразование по НА в результате чего получается вполне определенное слово . Если при переходе от к использовалась заключительная формула, то искомая последовательность двухэлементная: . В противном случае так же, как и выше, по слову строится слово и т. д. В процессе построения указанной последовательности могут представиться три различные возможности: или на каком-то шаге будет использована заключительная формула схемы алгоритма, или появится слово, не содержащее подслов , или не произойдет ни того, ни другого. В превых двух случаях мы получим конечную последовательность, последнее слово которой называется результатом применения НА к слову и обозначают через . В третьем случае процесс преобразования слов по НА будет длитться бесконечно, это и означает, что НА не применим к .
Таким образом, НА в алфавите задает частичное отображение множества всех слов в алфавите в само себя. Выбирая различные схемы, мы будем получать различные НА.
Если - алфавит, содержащий , то НА в алфавите называется нормальным алгоритмом над алфавитом .
Приведем примеры нормальных алгоритмов. При этом буквой будет всегда обозначаться пустое слово (в любом алфавите).
1. НА в алфавите со схемой
перерабатывает любое слово в себя, причем последовательность слов, соответствующая слову имеет вид: .
2. НА со схемой
не применим ни к одному слову. Последовательность, соответствующая слову будет бесконечной:
3. НА в алфавите со схемой
приписывает к любому слову слева слово :
4. Построим НА , приписывающий к любому слову справа фиксированное непустое слово Это сделать несколько сложнее, чем приписывание слова слева. Для этого удобнее расширить алфавит , добавив к нему одну новую букву , и построить искомый НА в алфавите (т. е. над ). Нетрудно проверить, что нужное нам преобразование будет осуществлять НА со схемой
……………..
Последовательность слов, соответствующая произвольному слову в алфавите , для этого НА имеет вид:
Очевидно, что то же самое преобразование слов будет осущетвлять НА, полученный из любой перестановкой формул его схемы. В связи сэтим вместо первых формул схемы пишут просто
так, что вся схема запишется в виде:
Заметим, что, выполняя свою задачу приписывания к словам из справа слова , мы совсем не интересовались переработкой слов в алфавите , содержащих букву . Здесь алгоритм будет действовать иначе. А именно, слово в алфавите , содержащее вхождений буквы , он будет перерабатывать в слово
где количество букв будет равно ,
где получается из удалением всех вхождений буквы (т. е. есть проекция в алфавит ).
5. Построим НА , перерабатывающий любое слово в перевернутое слово Для этого добавим к две новые буквы и возьмем следующую схему в алфавите
Проследите в качестве упражнения, что для любого слова в алфавите .
Приведем еще примеры НА над числами. Условимся натуральное число записывать в виде вертикальных палочек.
6. НА в алфавите со схемой
осуществляет сложение натуральных чисел.
7. НА в алфавите со схемой
осуществляет умножение натуральных чисел.
Дата добавления: 2014-12-02; просмотров: 1049;