Добро пожаловать на наш портал !

Методы компьютерного моделирования экономических процессов

Задача о кратчайшем пути

Задача о кратчайшем пути. Классическим примером сетевых задач является определение кратчайшего пути между вершинами сети. Пусть задан граф (I, D, G), каждой дуге которого поставлено в соответствие число cd, называемое длиной. Также пусть выделены две вершины графа s и t, и требуется найти путь наименьшей длины, ведущий из вершины s в вершину t.

Если в графе имеются «кратные» дуги, соединяющие одинаковые начало и конец, то достаточно оставить одну — с наименьшей длиной, а остальные отбросить. Таким образом, достаточно рассматривать задачу о кратчайшем пути для простого графа (I, D), в котором дуги определяются упорядоченными парами вершин d = (i, j). Тогда естественно путь L, идущий из вершины s в вершину t, задавать в виде упорядоченного набора вершин, через которые проходит данный путь:

а длины дуг обозначать как cd = ci,j.

Длина описанного выше произвольного пути L определяется по формуле

Легко заметить, что задача о кратчайшем пути является частным случаем транспортной задачи в сетевой постановке (или, что то же самое, задачи об оптимальном потоке). Для этого достаточно присвоить вершине s единичный запас, вершине t единичную потребность, все остальные вершины положить нейтральными, а дугам присвоить неограниченные пропускные способности. Однако, как правило, более рациональным оказывается использование конкретных свойств данной задачи и решение ее специальными (частными) методами. К их числу относится, например, метод Минти, основные идеи которого мы изложим ниже.

Метод Минти решения задачи о кратчайшем пути в сети представляет собой итеративный процесс, в ходе которого строится путь L=(s=i0, i1, ..., ip-1, ip=t).

На предварительном (нулевом) этапе алгоритма:

Ø формируется массив значений так называемых модифицированных длин i,j, которые перед началом первой итерации полагаются равными сi,j ≥0;

Ø осуществляется отметка вершины i0 = s числом mi0 = 0.