Aho А. V., Hopcroft J. Е. and Ullman J. D. (1983).
Gonnet G. H. (1984).
van Emden M. (1981).
Wirth N. (1976).
Назад | Содержание | Вперёд
Назад | Содержание | Вперёд
Глава 11.
ОСНОВНЫЕ СТРАТЕГИИ РЕШЕНИЯ ЗАДАЧ
В данной главе мы сосредоточим свое внимание на
одной общей схеме для представления
задач, называемой
11. 1. Предварительные понятия и примеры
Рассмотрим пример, представленный на рис. 11.1. Задача состоит в выработке плана переупорядочивания кубиков, поставленных друг на друга, как показано на рисунке. На каждом шагу разрешается переставлять только один кубик. Кубик можно взять только тогда, когда его верхняя поверхность свободна. Кубик можно поставить либо на стол, либо на другой кубик. Для того, чтобы построить требуемый план, мы должны отыскать последовательность ходов, реализующую заданную трансформацию.
Эту задачу можно представлять себе как задачу выбора среди множества возможных альтернатив. В исходной ситуации альтернатива всего одна: поставить кубик С на стол. После того как кубик С поставлен на стол, мы имеем три альтернативы:
поставить А на стол или
поставить А на С, или
поставить С на А.
Рис. 11. 1. Задача перестановки кубиков.
Ясно, что альтернативу "поставить С на стол" не имело смысла рассматривать всерьез, так как этот ход никак не влияет на ситуацию.
Как показывает рассмотренный пример, с задачами такого рода связано два типа понятий:
(1) Проблемные ситуации.
(2) Разрешенные ходы или действия, преобразующие одни проблемные ситуации в другие.
Проблемные ситуации вместе с возможными ходами
образуют направленный граф, называемый
На рис. 11.3 показан еще один пример задачи: головоломка "игра в восемь" в ее представление в виде задачи поиска пути. В головоломке используется восемь перемещаемых фишек, пронумерованных цифрами от 1 до 8. Фишки располагаются в девяти ячейках, образующих матрицу 3 на 3. Одна из ячеек
Рис. 11. 2. Графическое представление задачи манипулирования
кубиками. Выделенный путь является решением задачи рис. 11.1.
всегда пуста, и любая смежная с ней фишка может быть передвинута в эту пустую ячейку. Можно сказать и по-другому, что пустой ячейке разрешается перемещаться, меняясь местами с любой из смежных с ней фишек. Конечная ситуация - это некоторая заранее заданная конфигурация фишек, как показано на рис. 11.3.
Нетрудно построить аналогичное представление в виде графа и для других популярных головоломок. Наиболее очевидные примеры - это задача о "ханойской башне" и задача о перевозке через реку волка, козы и капусты. Во второй из этих задач предполагается, что вместе с человекам в лодке помещается только один объект и что человеку приходится охра-
Рис. 11. 3. "Игра в восемь" и ее представление в форме графа.
нять козу от волка и капусту от козы. С
описанной парадигмой согласуются также многие
задачи, имеющие практическое значение. Среди них
- задача о коммивояжере, которая может служить
моделью для многих практических оптимизационных
задач. В задаче дается карта с