2.6. НЕКОТОРЫЕ ПРИМЕРЫ ПРЕДСТАВЛЕНИЙ ЗАДАЧ
Для большого числа задач можно дать представления, связанные с пространством состояний. Для некоторых задач такое представление удается выбрать совершенно естественно, тогда как для других любое представление, связанное с введением пространства состояний, кажется весьма искусственным. Читателю не следует предполагать, что каждая из формулировок, приведенных в настоящем разделе, — наилучшая из всех возможных. Точно так же он не должен удивляться, увидев, что может решить аддачу, опираясь на иное представление. Сейчас мы хотим лишь показать, что для некоторых различных типов задач действительно возможно представление в пространстве состояний.
Задача о коммивояжере
Задача о коммивояжере — классическая комбинаторная проблема. Коммивояжер должен построить свой маршрут так, чтобы побывать в каждом из п городов в точности по разу и возвратиться в исходный город. Желательно, чтобы этот маршрут имел минимально возможную протяженность. Было разработано несколько эффективных методов решения задачи, которые реализуемы лишь в том случае, когда число городов не превышает примерно 50. Приближенные методы дают хорошие решения (хотя не обязательно минимизирующие протяженность маршрута) уже для 200 городов. Задача о коммивояжере полезна для иллюстрации представлений, основанных на введении пространства состояний, как это видно из следующего простого частного примера.
Коммивояжёр должен посетить каждый из пяти городов, изображенных на карте на рис. 2.4. Между каждой парой городов имеется путь, длина которого указана на этой карте. Нужно, отправляясь из города А, найти са,мый короткий путь, по которому коммивояжер по одному разу проходит через каждый из городов и затем возвращается в город А.
Чтобы дать представление в пространстве состояний, мы должны определить следующее:
Описания состояний. Будем задавать состояния списком городов, пройденных к настоящему моменту. Так, начальным состоянием будет список (Л). Мы не будем допускать, чтобы в этом списке какой-то город упоминался более одного раза, с тем лишь исключением, что после того, как в нем будут упомянуты все остальные .города, может быть снова упомянут А.
Операторы. Операторы суть вычисления, соответствующие лоступкам: (1) направиться теперь в город А, (2) направиться
теперь в город В, , (5) направиться теперь в город Е. Оператор неприменим к некоторому описанию состояния, если он не преобразует его в некоторое допустимое описание. Так, оператор номер (1) (соответствующий «направиться теперь в город Л») неприменим ни к какому описанию, не содержащему названия всех городов.
Критерий достижения цели. Любое описание, начинающееся и оканчивающееся городом Л и перечисляющее все другие города, есть описание состояния, удовлетворяющего поставленной цели.
На рис. 2.5 показано представление этого пространства состояний в виде графа. (Явно указаны лишь некоторые из его
вершин.) Числа, написанные около дуг графа, указывают стоимости этих дуг'. Мы полагаем эти стоимости равными расстояниям между соответствующими городами (см. рис. 2.4). В вершинах графа стоят описания тех состояний, которые они представляют. Достоинства представления в виде графа состоят
в том, что приписывание дугам стоимостей дает нам удобный способ вычисления полной длины маршрута, а следовательно, и способ поиска кратчайшего из них. Кратчайший (34 мили) для нашего случая показан на графе жирными стрелками.
Задача о коммивояжере представляет собой пример задачи, в которой информация, содержащаяся в ее формулировке, представима в графической форме (карте расстояний). Следует быть внимательным и не смешивать какие-либо графы, используемые при формулировке задачи, с графом пространства состояний, который строится при решении задачи.
При работе с языками часто сталкиваются с задачей син- гаксического анализа. В таких задачах сначала дается некоторое формальное определение через задание грамматики, которая выделяет определенный класс строк символов. А затем возникает вопрос о том, принадлежит ли к этому классу произвольная строка. Следующий пример иллюстрирует этот тип задач.
Грамматика. Предположим, что мы определяем предложение как строку одного из следующих видов: за символом а следует символ b за символом а следует некоторое предложение за некоторым предложением следует символ b за некоторым предложением следует другое предложение. Примеры предложений: aab, abaabab, aaaaab. Некоторые строки, не являющиеся предложениями: ааа, aba, abaa.
Предположим, что мы захотели определить, является ли строка abaabab предложением. Тогда формулировка этой задачи в пространстве состояний выглядит taK:
Описания состояний. Один из возможных путей формулировки этой задачи состоит в том, чтобы выбрать в качестве начального состояния рассматриваемую строку abaabab. Тогда множеством допустимых состояний будет множество строк, получающихся из нее путем применения тех правил переписывания (они даются ниже), которыми определяются операторы.
Операторы. Мы определяем операторы через следующие лравила переписывания:
$іай$2->-$iS$2 (подстрока ab может быть заменена символом S, обозначающим предложение)
Мы видим, что эти правила просто выражают грамматику, определяющую понятие предложения.
Критерий цели. Целевое состояние описывается строкой, которая состоит из одиночного символа S.
Последовательность состояний, представляющая собой решение этой задачи, имеет следующий вид:
Граф, изображающий пространство состояний для этой задачи, показан на рис. 2.6. В этой задаче оказалось так, что
в силу заданной грамматики любая строка, начинающаяся с а и оканчивающаяся на Ь, является предложением. Знание такого факта, очевидно, сильно бы упростило решение вопроса о том, будет ли некоторая произвольная строка предложением. Иногда оказывается, что заданная грамматика может быть представ-
лена в эквивалентном, но более простом виде. Обнаружение таких упрощений позволяет строить меньшие пространства для перебора.
Следующая простая задача типична для класса задач, называемых иногда задачами распределения. Имеются два источника жидкости: А дает 100 галлонов в минуту, а В — 50. Источники должны снабжать два бассейна С и D, потребность каждого из которых 75 галлонов в минуту. Жидкость может
подаваться от источника к бассейну с помощью труб с максимальной пропускной способностью 75 галлонов в минуту. Пусть источники и бассейны расположены так, как это показано на рис. 2.7, и соединения труб допускаются только в местах расположения источников и бассейнов. Спрашивается, как следует подсоединять трубы, чтобы при этом полная длина труб была наименьшей.,
Представление этой задачи в пространстве состояний выглядит следующим образом:
Описания состояний. Состояния описываются списком величин избыточного расхода жидкости, который имеется в точках А, В, С и D. Так, начальное состояние описывается списком (А = 100, В = 50, С = 0, D = 0).
Операторы. Операторы соответствуют передаче избытка «жидкости в минуту» из одной точки в другую. В задачах, по-
добных этой, в качестве подходящего избытка выступает наибольший общий делитель пропускных способностей и потребностей в жидкости в различных точках. Таким образом, у нас есть операторы:
1. Передать 25 галлон/мин из Л в В.
2. Передать 25 галлон/мин из Л в С.
12. Передать 25 галлон/мин из В в Л.
Разумеется, операторы применимы лишь тогда, когда имеется достаточный избыток жидкости в той точке, от которой жидкость отбирается для передачи в другую точку. И, конечно, для осуществления каждой такой передачи нужно иметь соответствующую трубу.
Критерий цели. Целевое состояние описывается списком (Л = О, В = О, С = .75, D = 75).
Часть графа, получающегося таким образом пространства состояния, показана на рис. 2.8. Обозначение типа A—*D около Дуг графа показывает, что соответствующий оператор передает избыток в 25 галлон/мин от Л к D. Стоимости, написанные рядом с каждой дугой, показывают, сколько миль труб нужно добавить для подачи этого избытка. Число нуль при этом озна-
чает, что нет необходимости добавлять еще трубу, поскольку уже имеющаяся труба обладает достаточной дополнительной пропускной способностью. Граф на рис. 2.8 изображен не полностью— многие из его вершин не показаны. Исследовав полный граф, можно установить, что путь, ведущий от начальной вершины к целевой и обладающий наименьшей стоимостью, требует 12 миль труб.
В типичной задаче управления имеется процесс, представленный системой «устанавливаемых» переменных, которые должны управляться с помощью соответствующего управления, обеспечиваемого некоторым множеством управляющих переменных.
Интересным примером служит задача о перевернутом маятнике на тележке (рис. 2.9). В этой задаче масса М прикреплена к концу стержня длины /, другой конец которого шарнирно закреплен на тележке, так что стержень может свободно вращаться в вертикальной плоскости, совпадающей с направлением движения тележки, снабженной колесами. Устанавливаемые переменные — угол наклона стержня Ѳ, координата х тележки и производная по времени Ѳ.
Требуется, чтобы значения каждой из этих переменных поддерживались в определенных, заранее указанных границах. Управляющей переменной служит скорость тележки х, которая может принимать одно из двух значений -\-ѵ и —ѵ. (Мы предполагаем для простоты, что эти значения могут сменять друг друга мгновенно.) Главная задача здесь состоит в принятии в данный момент решения о том, следует ли перемещать тележку со скоростью ѵ вправо или со скоростью ѵ влево.
Описание состояний. Предположив, что переменные Ѳ, Ѳ и х принимают дискретные значения с достаточно мелким шагом, можно считать состоянием вектор, составленный из этих трех переменных (пространством состояний при этом служит решетка в трехмерном пространстве Ѳ, Ѳ и х).
Операторы. Имеются ровно два оператора:
1. Применить управление + ѵ.
2. Применить управление —ѵ.
Состояние, возникающее в результате применения одного из этих операторов, — это просто то состояние, которое описывается вектором (Ѳ, Ѳ, х) по истечении At секунд. (Во многих типичных задачах управления действия операторов могут быть компактно представлены с помощью дифференциальных уравнений.)
Критерий достижения цели. Предположим, что целевое состояние описывается вектором (Ѳ = О, Ѳ = 0, лг=»0). Тогда нам нужно найти последовательность операторов, которая будет преобразовывать любое данное состояние в целое. Конечно, такая последовательность не должна приводить ни к какому состоянию, описываемому переменными Ѳ, Ѳ и х, для которого неизбежно в конце концов полное нарушение работы системы- (Оно происходит при Ѳ = ±90°.)
В некоторых типичных задачах управления часто можно получить (аналитическими методами) уравнения разделяющих поверхностей, которые разбивают векторное пространство состояний на непересекающиеся области, такие, что для всех векторов из данной области в данный момент должно быть применено одно и то же управление (один и тот же оператор). В этих случаях несложное вычисление может дать ответ, который иначе получался бы с помощью поиска. Читатель должен понимать, что мы н£ собираемся предлагать использовать поисковые процессы в случаях, когда известны прямые методы решения. Мы хотим лишь подчеркнуть, что часто можно воспользоваться эффективными методами перебора для решения тех задач, для которых прямые методы еще не найдены.