Определине путей и кратчайших путей в графах.


Существует несколько алгоритмов о решении задач о лабиринте.

1) Алгоритм Тарри. Каждое ребро графа проходит дважды в каждом из двух напралений.

Правило 1: не проходить дважды по одному и тому же ребру в одном и том же направлении.

Правило 2: находясь в вершине xj не двигаться по ребру. Приведшему в эту вершину один раз, если имеются другие возможности.

Можно показать, что остановка из-за невыполнения этого алгоритма произойдёт в x0 , причём все рёбра графа к этому времени будут пройдены во всех направлениях по одному разу.

2) Алгоритм Бержа.

 

 

Алгоритм прост, но не экономичен.

 

Л

В ряде случаев, когда известен тип задачи, алгоритм Тарри можно рассматривать в упрощённом виде: идём столько раз вперёд, пока не попадём в висящую вершину, попадая в неё поворачиваем в сторону не пройденного пути, снова попадаем в висящую вершину, пока не попадём в нужную. Пусть соответствует однократному графу (то есть прохождение одного раза).

 

 

Отсечение (введение ещё одной вершины, не совпадающей с первой).

Граф G(x) представляет собой граф с нагруженными рёбрами, под длиной пути подразумевается сумма мер.

= (xi , xj), где (xi , xj) принадлежат .

В особый класс выделяются задачи для графа с ненагруженными рёбрами, причём такой граф считается графом с нагруженными рёбрами, длина пути которого составит

i, j (µ(xi , xj)).

Алгоритм 1: Начиная от х0 просматриваем сначала все вершины смежные с х0 путём. Состоящим из одного ребра. У каждой из этих вершин записываем по мере от каждой вершины до х0. На следующем шаге просматриваем все вершины достижимые из х0 двухрёберными путями, и опять в каждой вершине записываем её расстояние до вершины х0. Очевидно, возможны случаи, когда в какую-нибудь вершину мы попадаем дважды. В таком случае (если в вершину идёт несколько путей) в этой вершине записывается мера кратчайшего из путей и указывается по какому пути достигнута.

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

Алгоритм Форда: Этот алгоритм предназначен для нахождения кратчайшего пути в ориентированном графе из х0 в х1.

На первом шаге каждая вершина хi помечается индексом i. Ищем дугу

i , xj) для которой выполняется неравенство:

j i µ(xi , xj).

Выполним эту операцию несколько раз, причем j – уменьшается, а индексы установлены до некоторого уровня. Ищем хр – смежную с вершиной хn­ и такую для которой λnp= µ(xр , xn).

Пусть хр – последняя вершина, в которой удалось уменьшить индекс, далее переходим к вершине хs, смежной с вершиной хр­ такую что λp - λs = µ(xs , xp). Такая вершина найдётся из аналогичных рассуждений и так далее. В результате последовательность индексов λn , λp , λs- убывающая, соответственно на каком-то из шагов мы попадём в вершину (xp)к+1 = х0 для которой . Справедливо следующее утверждение: установившееся значение n есть длина кратчайшего пути, ведущего из х0 в хn.

 

Доминирование.



Дата добавления: 2016-06-05; просмотров: 1894;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.