Глава 33. Теория алгоритмов. Основные сведения

Алгоритмом называется двусортное множество <Mp, R2>, где Mp – множество правил (процедур) решения задачи обладающих следующими свойствами:

1) детерминированности – однозначности применения этих правил на каждом шагу;

2) результативности – получения после применения этих правил информации, являющейся результатом;

3) массовости – инвариантности относительно входной информации;

4) элементарности (прозрачности) – отсутствия необходимости дальнейшего уточнения правил.

Численные алгоритмы

Алгоритмы, которые сводят решение поставленной задачи к арифметическим действиям над числами, называются Численными Алгоритмами.

Пример

Традиционным примером является известный алгоритм Евклида для нахождения наибольшего общего делителя двух заданных целых положительных чисел А и B. Алгоритм Евклида состоит из следующей системы последова­тельных указаний:

1) обозревай А и B и переходи к следующему;

2) сравни обозреваемые числа (А = B, или А < B, или А > b) и пере­ходи к следующему;

3) если обозреваемые числа равны, то каждое из них дает искомый результат, если нет — переходи к следую­щему;

4) если первое обозреваемое число меньше второго, переставь их местами и переходи к следующему;

5) вычитай второе число из первого и обозревай два числа – вычитаемое и остаток;

6) переходи к указанию 2.

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

1) Пока A ¹ B выполнять шаг 2.

2) Замена текущей пары чисел (A, B) на пару – вычитаемое и остаток:

3) Получение значения наибольшего общего делителя:

C = a.

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

Логические алгоритмы

Существует другой тип алгоритмов, называемых Логическими, которые содержат предписания, относящиеся не к цифрам, а к объек­там любой природы.

Пример

Типичным примером логических алгоритмов может служить алгоритм поиска пути в конечном лабиринте.

Лабиринт удобно изображать в виде графа, вершины которого соответствуют площадкам, а дуги — коридорам (рис.9.1).

Рис. 9.1

Пусть требуется выяснить, достижима ли площадка из F площадки А, и если да, то найти путь из А в F, а если нет — вернуться в А. Лицо, ищущее путь в лабиринте, располагает нитью, конец которой закреплен на площадке А, и, двигаясь по лабиринту, может разматывать клубок (Р) или наоборот наматывать на него нить (Н). Можно делать отметки на проходимых коридорах и различать затем коридоры, еще ни разу не пройденные (зеленые — 3), пройденные один раз (желтые — Ж) и пройденные дважды (красные — К). Метод поиска может быть задан следующей схемой:

1) площадка F—остановка (цель достигнута);

2) петля — наматывание нити (от данной площадки расходятся, по крайней мере, два жел­тых коридора);

3) зеленая улица — разматывание нити (отданной площадки отходит хотя бы один зеленый коридор);

4) пло­щадка А — остановка (исходный пункт);

5) отсутствие всех преды­дущих признаков — наматывание нити.

Попав на какую-нибудь площадку, свериться со схемой признаков в указанном порядке и делать очередной ход в соответствии с первым же обнару­женным признаком, не проверяя остальных признаков. Такие ходы делаются до тех пор, пока не наступит остановка.

Общие свойства алгоритмов

Богатый опыт разработки и при­менения алгоритмов подсказывает ряд общих свойств.

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

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

Пример

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

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

Пример

В алгоритме поиска пути в лаби­ринте остановка наступает либо на достижимой площадке, либо при возвращении на исходную площадку, если указанная цель недостижима.

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

Пример

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

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

Пример

Встречающиеся в алгоритме Евклида операции сравнения, вычитания и перестановки чисел можно было бы расчленить на более простые операции, если бы они не считались достаточно стандартными и привычными. В то же время сам алгоритм Евклида может фигурировать в качестве эле­ментарной операции более сложного алгоритма.

Ассоциативное исчисление

Алфавитом называется конечная система различных символов, называемых Буквами. Любая конеч­ная последовательность П букв некоторого алфавита является Словом длины П в этом алфавите.

Пример

В алфавите из трех букв {А, B, С} словами будут последовательности B, ас, bac, Abbca, сbсссасаbса и т. д.

Если слово L является частью слова М, то говорят о вхождении слова L в слово М.

Пример

В слове Аbсbbсbаb имеются два вхождения слова Bсb и одно вхождение слова Bа.

В качестве операций ассоциативного исчисления определяется Система Допустимых Подстановок, с помощью которых одни слова преобразуются в другие. Подстановка вида L—М, где L и М — слова в том же алфавите, означает замену вхождения левой части правой, равно как и замену правой части левой. Иначе говоря, если в некотором слове R имеется одно или несколько вхождений слова L, то каждое из этих вхождений может заменяться словом М, и нао­борот, если имеется вхождение слова М, то его можно заменить словом L.

Пример

Подстановка Ab—bсb применима четырьмя способами к слову Аbсbсbаb. Замена каждого из двух вхождений Bсb даст слова Ааbсbаb и Аbсаbаb, а замена каждого из двух вхожде­ний Ab дает слова Bcbcbcbab, аbсbсbbсb. В то же время к слову Bасb Эта подстановка не применима. Подстановка вида Р—Æ означает, что из преобразуемого слова выбрасывается вхождение слова Р, а также что между двумя какими-либо буквами преобразуемого слова или впереди него, или за ним вставляется слово Р.

Таким образом, Ассоциативное Исчисление — это множество всех слов в некотором алфавите вместе с какой-нибудь конечной системой допустимых подстановок. Очевидно, чтобы задать ассоциативное исчисление, достаточно определить алфавит и систему допустимых подстановок

Пример

Алфавит {А, B, С, D, E} и система подстано­вок Ас—са, Ad—dA, Be—cb, Bd—db, Abac—abacc, Eca—ae, Edb—be).

Эквивалентность слов

Два слова называются Эквивалент­ными, если одно из них можно получить из другого последова­тельным применением допустимых подстановок.

Пример

Слова Abcde и Cadedb являются эквивалентными, что видно из следующих последовательных преобразований: Abcde, Acbde, Cabde, Cadbe, Cadedb.

Последователь­ность слов R1, R2, ..., Rn, когда каждое следующее слово является результатом однократного применения допустимой подстановки к предыдущему слову, образует Дедуктивную Цепочку, причем со­седние слова в этой цепочке называют Смежными. Очевидно, любые два слова в дедуктивной цепочке являются эквивалентными.

Эквивалентность слов L и М обозначается L~М. Если L~М, то при наличии в каком-либо слове R вхождения L в результате подстановки L — М получается слово, эквивалентное R.

Пример

Воспользо­вавшись эквивалентностью Abcde~Cadbe, из слова Bbabcdec полу­чаем эквивалентное ему слово Bbcadbec.

Язык

Рассмотрим конеч­ное множество (Алфавит) М = {M1, M2, ..., Mn}, элементы которого будем называть Символами (буквами), а конечные последовательности символов — Словами.

Пусть Я0 — все множество слов, на длину которых не наложены никакие ограничения. Множество Я такое, что Я Ì Я0 называется Языком в алфавите М.

Пусть G — некоторая совокупность правил, с помощью ко­торых в М порождаются все слова, принадлежащие языку Я, и только они. Совокупность правил G называется Грамматикой Языка Я.

Два языка называются Эквивалентными, если множества слов, из которых они состоят, совпадают. Две грамматики, G1 и G2, над Я называются Эквивалентными, если языки, ими порож­даемые, эквивалентны.

Существует ко­нечное множество состояний {S0, S1, ..., Sr} и каждому Sj (J = 1, 2, ..., R) сопоставляется набор пар вида (Mi, Sq), где I Î {1, 2, ..., R}, Q Î {0,1, ..., R}. Состоянию S0 сопоставляются пары вида (M0, Sh), где H Î {1, 2, ..., R). Символ M0 — специаль­ный знак пробела между словами.

Конструирование слов проис­ходит следующим образом: из состояния S0 переходим в любое состояние Sq. Из пар, сопоставленных выбранному состоянию Sq, берут любую пару (Mi, Sl). Этот выбор порождает следующее состояние Sl И первый символ слова Mi. Далее процесс построения слова происходит аналогично. Слово заканчивается при переходе к заключительному состоянию, как правило, S0.

Структуру языков удобно представлять в виде графа, вершины которого сопоставлены состояниям Sj, а дуги – парам (Mi, Sq) (рис.9.2).

Рис. 9.2.

С помощью грамматики, задаваемой графом, порождается язык, который состоит из множества слов.

© 2011-2024 Контрольные работы по математике и другим предметам!