- •Алгоритм
- •Характеристические свойства алгоритмов
- •Примеры алгоритмов
- •A. Алгоритм сложения двух положительных десятичных чисел
- •B. Алгоритм разложения натурального числа на простые множители
- •C. Алгоритм вставки карточки в (упорядоченную) картотеку
- •D. Алгоритм сортировки (несортированной) картотеки
- •F. Алгоритм вычисления числа е (т. Е. Вычисления последовательности дробей — приближения для е)
- •G. Алгоритм, распознающий, можно ли получить последовательность знаков a из последовательности знаков ь посредством вычёркивания некоторых знаков
- •Рекурсия и итерация
- •Специальные формы описания алгоритмов
- •Алгоритмы Маркова
Алгоритмы Маркова
Исходя из сказанного, можно констатировать, что операционные правила обработки дискретных сообщений являются алгоритмами над последовательностями знаков. Приступим теперь к уточнению понимавшегося до сих пор интуитивно понятию алгоритма. В частности, нам предстоит выяснить, что можно считать „элементарными тактами обработки".
Без
сомнения, элементарной операцией над
последовательностями знаков может
считаться замена подслова на некоторое
слово (текстовая замена).
Будем исходить из множеств
и
слов над общим набором знаков
(это можно делать без ограничения
общности). Отдельную операцию замены
(продукцию)
будем записывать в виде
и понимать ее так:
Операция замены: «Если а является подсловом заданного слова х, то заменить это подслово на Ь. В случае, если подслово а встречается в слове х несколько раз, словом Ь заменяется то из них, которое стоит в самой левой позиции». |
(*) |
Далее, если дано (конечное) множество таких продукций, перечисленных в определённом порядке, то текстовая замена должна производиться посредством применения самой первой (относительно этого порядка) из применимых продукций. Все это повторяется до тех пор, покуда возможно, или же до применения особым образом отмеченной продукции („останавливающей").
Такого рода алгоритмы называют алгоритмами Маркова по имени советского математика А. А. Маркова, который впервые описал их (в 1951 г.); сам Марков называл их „нормальными алгорифмами". Алгоритмы Маркова считают уточнением понятия алгоритма, достигаемым за счёт использования специальной формы описания.
В
качестве примера приведем алгоритм
Маркова, который по заданному двоичному
слову строит производное двоичное
слово. Этот алгоритм использует
вспомогательные знаки
‑ „челноки" и содержит следующие
продукции:
Останавливающие продукции отмечены точкой. На рисунке ниже показано применение алгоритма к слову 001101110101.
001101110101
α001101110101
0α01101110101
00α1101110101
001β101110101
0010β01110101
00101α1110101
001011β110101
0010110β10101
00101100β0101
001011001α101
0010110011β01
00101100111α1
001011001111β
001011001111
Благодаря компактным правилам замены алгоритмы Маркова представляют собой мощное средство описания: на сегодня нет таких алгоритмов над последовательностями знаков, для которых не существовало бы алгоритма Маркова, выполняющего ту же самую обработку сообщений. Описания, сформулированные в виде алгоритмов Маркова, часто оказываются весьма короткими по сравнению с другими, менее „рафинированными" формами описания. Заметим, что элементарную для алгоритмов Маркова операцию замены (*) можно также рассматривать как сложную, рекурсивно определяемую операцию над последовательностями знаков. Поэтому понятие элементарности всегда относительно.
В зависимости от информации, содержащейся в обрабатываемых сообщениях, часто, наоборот, рассматривают как элементарные такие такты обработки, которые, собственно говоря, являются сложными. Основанием для этого может служить, например, тот факт, что такие макротакты фактически состоят из конечного числа описанных выше текстовых замен, причём их внутренняя структура несущественна для предпринимаемой обработки. Так обстоит дело, скажем, для сложения, вычитания, умножения и деления с остатком, в случае, когда сообщения представлены целыми числами в некоторой цифровой форме записи. В остальном же несущественно, представлена последовательность инструкций в виде диаграммы или как-нибудь более схематично, равно как несущественно и то, описаны отдельные такты обработки словесно или заданы посредством формул.
Собственно действия с числами в цифровой записи относятся, таким образом, к классу алгоритмов над цепочками знаков. Здесь в арифметике мы обнаруживаем исторические корни слова algorismo; еще Лейбниц говорил об „алгоритме умножения".
А.А. Марковым был сформулирован принцип нормализации: всякая вычислимая в интуитивном смысле функция вычислима с помощью некоторого нормального алгорифма.
Тренажеры (эмуляторы) здесь:
http://kpolyakov.spb.ru/prog/nma.htm
http://cmcmsu.no-ip.info/1course/alg.schema.nam.htm
Страница
