Задача о maxmin пути.
Пусть G=(V,E,c) — сеть, s,v V и р: s=v0,v1,…,vk=v — s-v-путь в G. Весом пути р назовем число
m(p) = min{c(vi-1, vi): i=l,2,...,k}.
Задача о maxmin пути формулируется следующим образом: среди всех s-v-путей в сети G найти путь максимального веса.
Иногда эту задачу называют задачей об узких местах. Для иллюстрации разберем следующий пример.
Рассмотрим дорожную сеть, включающую мосты. Будем считать, что превышение грузоподъемности некоторого моста при перевозке груза приводит к разрушению данного моста. Допустим, что мы хотим определить максимальный вес груза, который может быть транспортирован в рассматриваемой дорожной сети из пункта s в пункт v без превышения грузоподъемности находящихся на пути движения транспорта мостов.
Для решения этой задачи построим сеть G=(V,E,c), множеством узлов которой объявим пункты s и v, а также все перекрестки дорожной сети. Будем говорить, что дорога х, соединяющая перекрестки w и u, непосредственно их соединяет, если х не проходит через другие перекрестки. Для дороги х положим с(х) равным минимальной из грузоподъемностей мостов, находящихся на дороге х; если дорога х мостов не содержит, то считаем, что с(х)=+∞. Будем считать, что два какие-нибудь узла w и и сети G соединены дугами (w,u) и (u,w), если есть хоть одна дорога х, непосредственно соединяющая перекрестки w и u. Положим c(u,w)=c(w,u)=max{c(x) : х непосредственно соединяет w и u}. Аналогично определяются дуги, инцидентные пунктам s и v. правда будем считать, что из s дуги только исходят (то есть исключим дуги вида (w,s), w V), а в v дуги только входят.
На рис.6.8.а дан пример дорожной сети, соединяющей пункты s и v: цифрами обозначены перекрестки, буквами — мосты, а числа в скобках означают грузоподъемность соответствующего моста. Соответствующая сетевая модель приведена на рис.6.8.б, где каждое неориентированное ребро вида {i,j} соответствует двум дугам (i,j) и (j,i). Обращаем внимание читателя на вес дуги (3,v), который равен 80, ибо пункты 3 и v соединяют две дороги х и х' для которых с(х)=80, и с(х')=60. Поэтому c(3,v)=80.
Рис.6.9. Пример интерпретации задачи о maxmin пути.
Для решения задачи о maxmin пути в произвольной сети G=(V,E,c) с необязательно неотрицательными весами мы лишь немного модифицируем изложенный ранее в параграфе 6.2 алгоритм Дейкстры. Принцип «жадности» в вычислении maxmin расстояний выглядит здесь следующим образом: вычисляем последовательно каждый раз maxmin расстояние до наиболее далекого узла от s среди всех тех узлов, до которых maxmin расстояние еще не вычислено.
Более точно наши рассуждения здесь таковы. Обозначим через dm(v) максимальный вес среди всех s-v-путей, то есть maxmin расстояние от s до v.
Положим S={s} и dm(s)=+∞.
Будем теперь добавлять к S по одному узлу так, что множество S состоит на каждом шаге из тех узлов v, для которых dm(v) вычислено, и для всех v S и w V\S справедливы неравенства dm(v) ≥ dm(w). Для каждого w V\S положим
D(w)= max{min{dm(v), c(v,w)} : v S}.
Понятно, что в этой формуле появляется максимум вместо минимума в аналогичной формуле (1) из параграфа 6.2, ибо нас интересует путь максимального веса.
Очередной узел w*, который следует добавить к S, выбирается под условием:
D(w*)=max{D(w): w V\S}.
Обоснование корректности такой модификации алгоритма Дейкстры проводится аналогично доказательству корректности самого алгоритма Дейкстры.
Формально можно сказать, что вся модификация заключается в том, что все знаки суммы заменяются на минимумы, а все минимумы в алгоритме Дейкстры — на максимумы. Поэтому мы не будем приводить здесь исправленный указанным способом алгоритм 6.3.
S | D[1] | D[2] | D[3] | D[4] | D[5] |
{1} | +∞ | +∞ | -∞ | -∞ | |
{1,2} | +∞ | -∞ | |||
{1,2,3} | |||||
{1,2,3,4} | |||||
{1,2,3,4,5} |
Рис 6.9. Работа модифицированного алгоритма Дейкстры
На рисунке 6.9 каждое неориентированное ребро {v,w} представляет собой две ориентированные дуги (v,w) и (w,v). Читателя не должен смущать тот факт, что веса дуг (1,2) и (2,3) равны +∞. Это обстоятельство следует понимать как то, что, во-первых, дуги (1,2) и (2,3) имеются в сети, и, во-вторых, они имеют бесконечно большой вес. Бесконечно большой вес некоторых дуг моделирует ситуацию, встречающуюся в задаче о самом надежном пути перевозки груза по дорожной сети. Естественно считать, что дорога, по которой может быть транспортирован груз любого веса, соответствует дуге бесконечно большого веса.
При рассмотрении maxmin задачи веса несуществующих дуг естественно считать равными -∞.
Сами пути легко строятся с помощью меток ОТЕЦ. Отметим только, что такая модификация алгоритма Дейкстры не гарантирует построения минимального по числу дуг наилучшего в смысле maxmin-расстояния пути. Например, в сети из рис 6.9 до узла 5 будет найден путь 1-2-3-5, в то время как путь 1-3-5 имеет тот же вес.
Отметим, что задача о minmax пути может быть сформулирована и решена аналогично задаче о maxmin пути.
Дата добавления: 2021-07-22; просмотров: 314;