Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Вершинная и реберная связность




 

Вершинной связностью графа G называется наименьшее число вершин, удаление которых приводит к несвязному, или тривиальному, графу; обозначается: c(G).

c()=n-1; c()=1; c()=2.

Реберной связностью графа G называется наименьшее число ребер, удаление которых приводит к несвязному графу; обозначается: .

l()=n-1; l()=1; l()=2.

 

Для тривиального графа реберную связность полагают равной 0.

 
 

Пример:

 

Вершина v графа G называется точкой сочленения, или разделяющей вершиной, если граф G\{v} имеет больше компонент связности, чем граф G.

Ребро е графа G называется мостом, если его удаление приводит к нарушению связности графа.

 
 

Пример:

 
 

 

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

Блок – это максимальный неразделимый подграф исходного графа.

Теорема Уитни. Пусть - минимальная степень вершин графа G, тогда справедливо следующее неравенство: c(G) .

Пример:

 

 

Граф не является неразделимым;

блоки графа: {c,d,e},{c,b,f},{a,g,h,i},{a,b}.

 

 

КРАТЧАЙШИЕ МАРШРУТЫ В ГРАФАХ

 

Пусть задан граф G=(V,E), ребрам которого приписаны веса (стоимости), задаваемые матрицей . Задача состоит в нахождении кратчайшего пути от заданной начальной вершины s Î V до заданной конечной вершины t Î V при условии, что такой путь существует. Элементы матрицы весов могут быть положительными, отрицательными или нулевыми. Единственное ограничение состоит в том, чтобы граф не содержал циклов с суммарным отрицательным весом.

Задачи данного типа имеют следующие модификации:

- для заданной начальной вершины s найти кратчайшие пути от нее ко всем другим вершинам графа;

- найти кратчайшие пути между всеми парами вершин графа.

 

 

АЛГОРИТМ ДЕЙКСТРЫ

 

Постановка задачи. Имеется произвольный взвешенный (n,m)-граф (в матрице весов нет отрицательных чисел), т.е.:

Требуется найти кратчайший маршрут от вершины s ко всем остальным вершинам графа.

Алгоритм основан на приписывании вершинам временных пометок, причем пометка вершины дает верхнюю границу длины пути от s к данной вершине. Эти пометки постепенно уменьшаются с помощью итерационной процедуры, и на каждом шаге итерации одна из временных пометок становится постоянной. Последнее указывает на то, что пометка уже не является верхней границей, а дает точную длину кратчайшего пути от s к рассматриваемой вершине.

Алгоритм.

Пусть l(xi) – пометка вершины xi, Г(р) – множество вершин графа, смежных с вершиной р.

Шаг 1. Присвоение начальных значений.

Положить l(s)=0 и считать эту пометку постоянной. Положить l(xi)=¥ для всех xi ≠s и считать эти пометки временными. Положить p=s.

Шаг 2. Обновление пометок.

Для всех xi ÎГ(р), пометки которых временные, заменить пометки в соответствии со следующим выражением:

l(xi)=min[l(xi),l(p)+c(p,xi)]. (1)

Шаг 3. Превращение пометки в постоянную.

Среди всех вершин с временными пометками найти такую, для которой

l(xi*)=min[l(xi)].

Шаг 4. Считать пометку вершины xi* постоянной; положить р= xi*.

Шаг 5. Если р=t, то l(p) является длиной кратчайшего пути. Останов.

Если р¹t, то перейти к шагу 2.

 

Замечание. Как только длины кратчайших путей будут найдены, сами пути можно получить при помощи рекурсивной процедуры с использованием соотношения

L(xi’)+c(xi’, xi)=L(xi);

т.к. вершина xi непосредственно предшествует вершине xi в кратчайшем пути от s к xi, то для любой вершины xi соответствующую вершину xi можно найти как одну из оставшихся вершин.

 

 
 

Пример:

 

 

Матрица весов для графа G:

               
           
         
             
         
             
             
             

 

Найти кратчайшие расстояния от 1 вершины ко всем остальным.

1) l(1) = 0;

l(2) = l(3) = … = l(7) =∞;

p = 1.

2) Г(1) = {3,5,6,7};

l(3) = min(l(3), l(1)+C(1,3)) = min(∞,0+4)=4;

l(5) = min(l(5), l(1)+C(1,5)) = 16;

l(6) = min(l(2), l(1)+C(1,2)) = 14;

l(7) = min(l(2), l(1)+C(1,2)) = 2.

3) min(4,16,14,2) = 2;

min = l(7) = 2;

p = 7.

4) Г(7) ={1,2,3,5,6};

l(2) = min(l(2), l(7)+C(2,7)) = min(∞, 2+9)=11;

l(3) = min(l(3), l(7)+C(3,7)) = 4;

l(5) = min(l(5), l(7)+C(5,7)) =16;

l(6) = min(l(6), l(7)+C(6,7)) = 14.

5) min(11,4,16,14) = 4;

min = l(3) = 4;

p = 3.

6) Г(3) = {1,4,5,6,7};

l(4) = min(l(4), l(3)+C(4,3)) = 13;

l(5) = min(l(5), l(3)+C(5,3)) = 16;

l(6) = min(l(6), l(3)+C(6,3)) = 14.

7) min(13,16, 14) = 13;

min = l(4) = 13;

p=4.

8) Г(4) = {2,3,5};

l(5) = min(l(5), l(4)+C(5,4)) = 16;

l(2) = min(l(6), l(3)+C(6,3)) = 11.

9) min(11,16) = 11;

min = l(2) =11;

p = 2.

10) Г(2) = {4,6,7};

l(6) = min(l(6), l(2)+C(2,6)) = 14.

11) min = l(6) =14;

p = 6.

12) l(5) = min(l(5), l(6)+C(5,6)) = 16;

p=5.

 

Таким образом, найдены следующие кратчайшие маршруты от вершины 1:

(1-2): (1,7,2)=11;

(1-3): (1,3)=4;

(1-4): (1,3,4)=(1,7,3,4)=(1,7,2,4)=13;

(1-5): (1,5)=16;

(1-6): (1,6)=14;

(1-7): (1,7)=2.

 

 

АЛГОРИТМ ФОРДА

 

Алгоритм Форда – обобщение алгоритма Дейкстры для случая, когда некоторые ребра имеют отрицательные веса.

На шаге 2 алгоритма пересчет l(x) с помощью соотношения (1) производится для любых вершин, а не только для непомеченных. Значения l(x) могут уменьшаться как для помеченных, так и для непомеченных вершин, т.к. существуют ребра с отрицательным весом.

Если для некоторой помеченной вершины х происходит уменьшение величины l(x), то с этой вершины пометка снимается.

Процедура заканчивается, когда все вершины помечены, и после выполнения шага 2 ни одна из величин l(x) не изменяется.

 

Алгоритм.

Пусть lk(xi) – пометка вершины хi в конце (k+1)-й итерации, Г(s) – множество вершин, смежных с вершиной s.

Шаг 1. Присвоение начальных значений.

Положить S= Г(s), k=1, l1(s)=0, l1(xi)=c(s, xi) для всех xiÎ Г(s). Положить l1(xi)=¥ для всех остальных xi.

Шаг 2. Обновление пометок.

Для каждой вершины xi Î Г(s) (xi¹s) изменить ее пометку следующим образом:

lk+1(xi)=min[lk(xi),min{ lk(xi)+c(xj, xi)}] для xjÎ Ti, где Ti=Г(xi)ÇS.

Шаг 3. Проверка на окончание.

Если k£n-1 и lk+1(xi)= lk(xi) для всех xi, то пометки равны длинам кратчайших путей. Останов.

Если k<n-1 и lk+1(xi)¹ lk(xi) для некоторой вершины xi, то перейти к шагу 4.

Если k=n-1 и lk+1(xi)¹ lk(xi) для некоторой вершины xi, то в графе существует цикл отрицательного веса и задача не имеет решения. Останов.

Шаг 4. Подготовка к следующей итерации.

Обновить множество следующим образом:

S={xi | lk+1(xi) ¹ lk(xi)}.

Шаг 5. Положить k=k+1 и перейти к шагу 2.

Замечание. Алгоритм Форда не решает задачу при наличии цикла отрицательной длины. Для его обнаружения в процессе работы алгоритма просчитывается, сколько раз помечается каждая вершина: если вершина помечается ровно n раз, где n – число вершин графа, - процедура заканчивает работу: существует цикл отрицательной длины.

 
 

Пример:

 

Матрица весов для графа G:

               
           
         
             
         
             
             
             

 

 

1) s=1; вершины, смежные вершине 1: S= Г(s)={3,5,6,7},

k=1; l1(1)=0,

l1(3)=4, l1(5)=16, l1(6)=14, l1(7)=2, l1(2)= l1(4)=¥;

2) Г(s)={2,3,4,5,6,7} - вершины, смежные вершинам 3,5,6,7;

для 2: Т2={7,6,4}Ç{3,5,6,7}={7,6}, где {7,6,4} - вершины, смежные вершине 2;

l2(2)=min(¥, min(2+9,14+3))=11;

для 3: Т3={1,4,5,6,7}Ç{3,5,6,7}={5,6,7}, где {1,4,5,6,7} - вершины, смежные вершине 3;

l2(3)=min(4, min(16+12,14+10,2+2))=4;

для 4: Т4={2,3,5}Ç{3,5,6,7}={3,5}, где {2,3,5} - вершины, смежные вершине 4;

l2(4)=13;

для 5: Т5={1,3,4,6,7}Ç{3,5,6,7}={3,6,7}, где {1,3,4,6,7} - вершины, смежные вершине 5;

l2(5)= 16;

для 6: Т2={1,2,3,5,7}Ç{3,5,6,7}={3,5,7}, где {1,2,3,5,7} - вершины, смежные вершине 6;

l2(6)= 14;

для 7: Т2={1,2,3,5,6}Ç{3,5,6,7}={3,5,6}, где {1,2,3,5,6} - вершины, смежные вершине 7;

l2(7)=2;

3) переходим к шагу 4, обновляем множество S;

4) S={2,4};

5) k=2; переходим к шагу 2;

6) Г(S)={2,3,4,5,6,7} - вершины, смежные вершинам 2,4;

для 2: Т2={7,6,4}Ç{2,4}={4};

l3(2)=min(11, 13+2))=11;

для 3: Т3={1,4,5,6,7}Ç{2,4}={4};

l3(3)=min(4, 13+9)=4;

для 4: Т4={2,3,5}Ç{2,4}={2};

l3(4)= min(13, 11+2)=13;

для 5: Т5={1,3,4,6,7}Ç{2,4}={4};

l3(5)= 16;

для 6: Т2={1,2,3,5,7}Ç{2,4}={2};

l3(6)= 14;

для 7: Т2={1,2,3,5,6}Ç{2,4}={2}

l3(7)=2.

7) k£n-1 и lk+1(xi)= lk(xi) для всех xi, следовательно, пометки равны длинам кратчайших путей.

 

Кратчайшие маршруты от вершины 1:

(1-2):(1,7,2)=11;

(1-3): (1,3)=4;

(1-4): (1,3,4)=(1,7,3,4)=(1,7,2,4)=13;

(1-5): (1,5)=16;

(1-6): (1,6)=14;

(1-7): (1,7)=2.

 

АЛГОРИТМ ФлойДА

Алгоритм базируется на использовании последовательности из n преобразований (итераций) начальной матрицы весов. При этом на k-той итерации матрица представляет длины кратчайших путей между каждой парой вершин с тем ограничением, что путь между xi и xj (для любых xi и xj) содержит в качестве промежуточных только вершины из множества { x1, x2,…, xn}.

Все циклы в графе G имеют неотрицательный суммарный вес.

 

Алгоритм.

Шаг 1. Присвоение начальных значений.

Положить k=0.

Шаг 2.

k=k+1.

Шаг 3.

Для всех i ¹ k таких что cik¹¥, и для всех j ¹k таких что ckj ¹¥ введем операцию:

cij=min[cij, (cik+ckj)]. (2)

Шаг 4. Проверка на окончание.

Если cij <0, то в графе существует цикл отрицательного веса, содержащий вершину xi; решения нет. Останов.

Если все cij ³ 0 и k=n, то получено решение и матрица дает длины всех кратчайших путей. Останов.

Если все cij ³ 0, но k<n, то вернуться к шагу 2.

 

Пример:

 

Пусть задан граф G следующего вида:

 
 

 

 

Матрица весов: Матрица путей:

k=0;

k=1;

               
           
         
             
         
             
             
             

 

               
               
               
               
               
               
               
               

 

k=2;

               
           
         
             
             
             
               
               

 

               
               
               
               
               
               
               
               

 

k=3;

               
             
         
             
               
             
               
               

 

               
               
               
               
               
               
               
               

k=4;

               
               
               
               
               
               
               
               

 

               
               
               
               
               
               
               
               

 

 

k=5;

               
               
               
               
               
               
               
               

 

               
               
               
               
               
               
               
               

 

k=6;

               
               
               
               
               
               
               
               

 

               
               
               
               
               
               
               
               

 

k=7;

               
               
               
               
               
               
               
               

 

               
               
               
               
               
               
               
               

 

Матрица q=[qij] – матрица, в которой элемент qij указывает вершину, непосредственно предшествующую вершине хj в кратчайшем пути от хi к хj. Матрице q присваиваются начальные значения qij= хi для всех хi и хj. На шаге 3 алгоритма обновление матрицы происходит следующим образом:

 

В конце алгоритма кратчайшие пути получаются непосредственно из заключительной матрицы q.

 

Таким образом, матрица всех кратчайших маршрутов:

 

               
               
               
               
               
               
               
               

 

Матрица путей:

 

               
    1,7,2 1,3 1,3,4 1,5 1,6 1,7
  2,7,1   2,4,3 2,4 2,4,5 2,6 2,7
  3,1 3,4,2   3,4 3,5 3,6 3,7
  4,3,1 4,2 4,3   4,5 4,2,6 4,2,7
  5,1 5,4,2 5,3 5,4   5,6 5,7
  6,1 6,2 6,3 6,2,4 6,5   6,7
  7,1 7,2 7,3 7,2,4 7,5 7,6  

 

Кратчайшие маршруты от вершины 1:

 

 

(1-2): (1,7,2)=11;


 



(1-3): (1,3)=4;

 

 


(1-4): (1,3,4)=(1,7,3,4)=(1,7,2,4)=13;


(1-5): (1,5)=16;

 



(1-6): (1,6)=14;

 


(1-7): (1,7)=2.

 

Контрольные вопросы

 

1. Определение маршрута, цепи, цикла.

2. Какой граф называется связным? Что такое компонента связности?

3. Привести примеры графов, которые имеют все периферийные и все центральные вершины.

4. Что такое эксцентриситет?

5. Чем диаметр графа отличается от его радиуса (дайте их определение)?

6. Что такое число вершинной и реберной связности?

7. Дайте определения моста и точки сочленения.

8. Для произвольного графа постройте матрицу расстояний (вес любого ребра равен 1).

9. Привести пример графа, удовлетворяющего строгому неравенству теоремы Уитни.

10. Сформулируйте задачу нахождения кратчайших маршрутов в графе.

 


ДЕРЕВЬЯ И ОСТОВЫ

 





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


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 2118 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Большинство людей упускают появившуюся возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © Томас Эдисон
==> читать все изречения...

2531 - | 2189 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.