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

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

c( вершинная и реберная связность - student2.ru )=n-1; c( вершинная и реберная связность - student2.ru )=1; c( вершинная и реберная связность - student2.ru )=2.

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

l( вершинная и реберная связность - student2.ru )=n-1; l( вершинная и реберная связность - student2.ru )=1; l( вершинная и реберная связность - student2.ru )=2.

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

 
  вершинная и реберная связность - student2.ru

Пример:

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

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

 
  вершинная и реберная связность - student2.ru

Пример:

 
  вершинная и реберная связность - student2.ru

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

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

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

вершинная и реберная связность - student2.ru Пример:

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

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

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

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

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

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

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

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

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

вершинная и реберная связность - student2.ru

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

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

Алгоритм.

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

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

вершинная и реберная связность - student2.ru Положить 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’можно найти как одну из оставшихся вершин.

 
  вершинная и реберная связность - student2.ru

Пример:

Матрица весов для графа 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 – число вершин графа, - процедура заканчивает работу: существует цикл отрицательной длины.

 
  вершинная и реберная связность - student2.ru

Пример:

Матрица весов для графа 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 следующего вида:

 
  вершинная и реберная связность - student2.ru

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

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 алгоритма обновление матрицы происходит следующим образом:

вершинная и реберная связность - student2.ru

В конце алгоритма кратчайшие пути получаются непосредственно из заключительной матрицы 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;

вершинная и реберная связность - student2.ru

вершинная и реберная связность - student2.ru

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

вершинная и реберная связность - student2.ru
(1-4): (1,3,4)=(1,7,3,4)=(1,7,2,4)=13;

вершинная и реберная связность - student2.ru

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

вершинная и реберная связность - student2.ru

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

вершинная и реберная связность - student2.ru
(1-7): (1,7)=2.

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

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

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

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

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

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

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

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

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

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

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

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

Наши рекомендации