Лекция 1. Нормальные алгоритмы Маркова.

Введение. Слово алгоритм (или алгорифм) происходит от имени арабского математика (из Хорезма Мохаммеда ибн Мусы Альхваризми (IX в.), из трактата которого Европа в XII в. познакомилась с позиционной системой счисления и с арифметическими действиями над числами в таких системах. В связи с этим и само понятие алгоритма ассоциировалось в начале с искусством счета. Постепенно понятие алгоритма деформировалось и к началу XX в. под алгоритмом стали понимать четко определенную процедуру решения некоторого класса задач. Конечно, приведенное пояснение не может служить определением понятия алгоритма. Однако, таким весьма туманным понятием алгоритма математики довольствовались вплоть до XX в., пока не появилась необходимость в доказательстве отсутствия алгоритмов для решения некоторых классов задач. Дело в том, что к началу XX в. в математике накопилось много задач алгоритмического характера не поддававшихся решению, несмотря на многочисленные усилия математиков. Примером может служить известная 10-я проблема Гильберта сформулированная им в докладе “Математические проблемы”, произнесенном в 1900 году на II Международном конгрессе математиков в Париже. Эта проблема заключалась в нахождении способа, позволяющего за конечное число операций установить, разрешимо ли произвольно заданное алгебраическое уравнение с целыми коэффициентами в целых числах или нет. Наличие таких задач зарождало у математиков идею о доказательстве отсутствия алгоритмов их решения. Результаты об отсутствии алгоритмов решения задач теми или иными ограниченными средствами к тому времени уже были. Например, было известно, что задачи трисекции угла, удвоения куба и т. д. неразрешимы с помощью циркуля и линейки. Однако теперь речь шла об отсутствии алгоритмавообще. Для решения такого рода задач необходим был новый качественный скачок в математике. А именно, нужно было дать точное определение понятия алгоритма, поскольку невозможно доказать отсутствие чего-то туманного и расплывчатого.

Задача определения алгоритма была решена в 30-х годах XX в, в ра­ботах математиков и логиков Гильберта, Гёделя, Чёрча, Клини, Поста и Тьюринга. Было дано несколько разных определений понятия алгорит­ма. При этом Гильберт, Гёдель, Чёрч и Клини подошли к понятию алго­ритма через вычислимые арифметические функции, а Пост и Тьюринг - через сведение алгоритма к элементарным преобразованиям слов в ко­нечных алфавитах.

Второй подход к определению алгоритма был использован в 40-х годах и советским математиком А. А. Марковым (1903—1979). Определенные им алгоритмы получили название нормальных алгоритмов Мар­кова.

Прежде чем дать строгое определение алгоритма, математики проанализировали известные примеры алгоритмов и выделили наиболее общие их свойства. Для выявления этих свойств рассмотрим и мы пов­нимательнее, например, хорошо известный из курса алгебры алгоритм Евклида нахождения наибольшего общего делителя двух натуральных чисел. В нем предписывается делить с остатком 1-е число на 2-е, затем 2-е на полученный (первый) остаток, затем 1-Й остаток на 2-й оста­ток и т. д. до тех пор, пока не получится остаток, равный нулю. Послед­ний, не равный нулю, остаток и будет искомым наибольшим общим де­лителем. В итоге любая пара натуральных чисел a, b преобразуется в число d, равное их наибольшему общему делителю:

a, b -> d.

Характерными свойствами алгоритма Евклида являются:

1) массовость—алгоритм может быть применен к любой паре натуральных чисел, причем сама схема работы алгоритма не зависит от ис­ходных данных (в любом случае дели 1-е число на 2-е и т. д.);

2) дискретность-весь алгоритм можно разбить на отдельные элементарные операции (шаги алгоритма), которые могут быть занумеро­ваны натуральными числами в порядкеих выполнения;

3) детерминированность - каждый шаг алгоритма однозначно определяется его предыдущими шагами;

4) конечная определенность—исходные данные, а также результаты каждого шага алгоритма и ответ записываются в виде конечных после­довательностей символов исходного конечного алфавита.

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

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

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

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

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

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

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

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

Определение 1. Схемой нормального алгоритма Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в алфавите

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru(1)

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

Формула Лекция 1. Нормальные алгоритмы Маркова. - student2.ru называется простой, если Лекция 1. Нормальные алгоритмы Маркова. - student2.ru есть Лекция 1. Нормальные алгоритмы Маркова. - student2.ru и заключительной, если есть Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

Действие НА Лекция 1. Нормальные алгоритмы Маркова. - student2.ru на слово Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru описывается следующим определением.

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

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru (2) Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

в которой

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru Лекция 1. Нормальные алгоритмы Маркова. - student2.ru или Лекция 1. Нормальные алгоритмы Маркова. - student2.ru и слово Лекция 1. Нормальные алгоритмы Маркова. - student2.ru не содержит подслов Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

В противном случае говорят, что алгоритм Лекция 1. Нормальные алгоритмы Маркова. - student2.ru не применим к слову Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

Таким образом, НА Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru задает частичное отображение множества Лекция 1. Нормальные алгоритмы Маркова. - student2.ru всех слов в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в само себя. Выбирая различные схемы, мы будем получать различные НА.

Если Лекция 1. Нормальные алгоритмы Маркова. - student2.ru - алфавит, содержащий Лекция 1. Нормальные алгоритмы Маркова. - student2.ru , то НА в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru называется нормальным алгоритмом над алфавитом Лекция 1. Нормальные алгоритмы Маркова. - student2.ru .

Приведем примеры нормальных алгоритмов. При этом буквой Лекция 1. Нормальные алгоритмы Маркова. - student2.ru будет всегда обозначаться пустое слово (в любом алфавите).

1. НА в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru со схемой

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

перерабатывает любое слово Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в себя, причем последовательность слов, соответствующая слову Лекция 1. Нормальные алгоритмы Маркова. - student2.ru имеет вид: Лекция 1. Нормальные алгоритмы Маркова. - student2.ru .

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

не применим ни к одному слову. Последовательность, соответствующая слову Лекция 1. Нормальные алгоритмы Маркова. - student2.ru будет бесконечной:

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

3. НА Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru со схемой

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

приписывает к любому слову Лекция 1. Нормальные алгоритмы Маркова. - student2.ru слева слово Лекция 1. Нормальные алгоритмы Маркова. - student2.ru :

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

……………..

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

Последовательность слов, соответствующая произвольному слову Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru , для этого НА имеет вид:

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru Лекция 1. Нормальные алгоритмы Маркова. - student2.ru где количество букв Лекция 1. Нормальные алгоритмы Маркова. - student2.ru будет равно Лекция 1. Нормальные алгоритмы Маркова. - student2.ru ,

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

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

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

Проследите в качестве упражнения, что Лекция 1. Нормальные алгоритмы Маркова. - student2.ru для любого слова Лекция 1. Нормальные алгоритмы Маркова. - student2.ru в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru .

Приведем еще примеры НА над числами. Условимся натуральное число Лекция 1. Нормальные алгоритмы Маркова. - student2.ru записывать в виде Лекция 1. Нормальные алгоритмы Маркова. - student2.ru вертикальных палочек.

6. НА в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru со схемой

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

7. НА в алфавите Лекция 1. Нормальные алгоритмы Маркова. - student2.ru со схемой

Лекция 1. Нормальные алгоритмы Маркова. - student2.ru

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

Наши рекомендации