Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TA / Гл 1 ПРОСТЕЙШИЕ АЛГОРИТМЫ.doc
Скачиваний:
28
Добавлен:
14.04.2015
Размер:
749.06 Кб
Скачать

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

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

Ниже рассматриваются две задачи, носящие выраженный логический характер.

1.8.1 Задача “Поиск пути в лабиринте”.

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

Мы рассмотрим задачу поиска пути в лабиринте в общем случае (для класса подобных задач) и приведем словесное описание (?) алгоритма.

Представим лабиринт в виде конечной системы площадок, от которых расходятся коридоры, причем, каждый коридор соединяет две площадки (будем называть их смежными); возможно существование таких площадок, из которых можно пройти только в один коридор (такие площадки будем называть тупиками). Геометрически лабиринт можно представить в виде системы точек А, В, С..., изображающих площадки, и совокупности отрезков АВ, ВС,..., изображающих коридоры, которые соединяют определенные пары данных точек (рис. 1.17). Смежными являются, например, точки В и С, К и М и т.д., а тупиковыми - точки А, D, I, J.

Рис. 1.17. Геометрическое представление лабиринта

Будем говорить, что площадка Y достижима из площадки X , если существует путь от X к Y через промежуточные коридоры и площадки . Точнее: либо X и Y - смежные площадки, либо существует последовательность площадок X1, X2, ... Xn таких, что X и X1, X2 и Х3 ... , и т.д., и, наконец , Xn и Y являются смежными. Отметим, что если Y достижима из X, то она достижима и посредством простого пути , т.е. такого пути , в котором каждая площадка (а тем более и каждый коридор) проходится лишь один раз. Например путь ABCD является простым, а путь ABCFECD - нет.

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

Будем условно помечать коридоры следующими красками: непрой-денные ни разу - зеленой, пройденные один раз - желтой, пройденные дважды - красной.

Находясь на начальной площадке, Тезей может попасть на одну из смежных площадок посредством одного из следующих двух ходов:

  1. Разматывание нити. Прохождение от данной площадки по любому зеленому коридору до смежной площадки. После прохождения этого коридора он считается желтым.

  2. Наматывание нити. Возвращение от данной площадки по последнму пройденному желтому коридору до смежной площадки. При этом нить наматывается обратно на клубок, а этот коридор становится красным.

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

Обстановка на данной площадке характеризуется признаками:

  1. Минотавр. Он обнаружен.

  2. Петля. Через данную площадку уже протянута нить Ариадны (иначе: от данной площадки расходятся по крайней мере два желтых коридора).

  3. Зеленая улица. От данной площадки есть вход по крайней мере в один зеленый коридор.

  4. Ариадна. Она на данной площадке.

  5. Особый случай. Отсутствие всех предыдущих признаков (например, тупик).

Признак

Ход

1. Минотавр

Остановка

2. Петля

Наматывание нити

3. Зеленая улица

Разматывание нити

4. Ариадна

Остановка

5. Особый случай

Наматыване нити

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

Приведем (без доказательства) утверждения, которые являются обоснованием предложенного метода:

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

  2. Если остановка наступила на М, то Минотавр достижим. Более того, в этом случае нить Ариадны оказывается протянутой по простому пути, ведущему от А к М. Наматывая нить, Тезей может теперь вернуться по этому пути к Ариадне.

  3. Если остановка наступила на площадке Ариадны, то Минотавр не достижим.

Отметим, что в случае признака “зеленой улицы” ход не определен однозначно - нарушается свойство детерминированности алгоритма. Этот случай легко устраняется, если ввести дополнительное правило о том, что при наличии нескольких зеленых коридоров Тезей обходит площадку по часовой (против часовой) стрелке, выбирая очередной коридор. Ясно, что в общем случае алгоритм основан на перебора вариантов обхода площадок и коридоров.

Соседние файлы в папке TA