Тема I
Глава 1. Задачи по теории графов
Основные понятия.
1. Граф – это фигура, состоящая из точек (вершин) и соединяющих их линий (ребер) (рис. 1).
2. Орграф – это граф, у которого ориентированы ребра (дуги), т.е. указаны начало и конец каждого из них (рис. 2).
3.
Рис. 1 Рис. 2
4. Путь (маршрут) в графе или орграфе – это последовательность ребер, ведущая от некоторой начальной вершины в конечную вершину, в которой каждые два соседних ребра имеют общую вершину, и ни какое ребро не встречается более одного раза.
Например, путями от точки А до точки D (рис. 1) могут быть AD или AED или ABED и т.д.
5. Длина пути – это число ребер или дуг в нем.
6. Цикл – это путь, который начинается и кончается в одной и той же вершине.
7. Граф или орграф называется связанным, если две любые его вершины можно соединить по крайней мере одним путем.
8. Дерево – это путь без циклов.
Задача 1.
Найти кратчайший путь между всеми вершинами графа (см. рис. 1).
А |
5 |
∞ |
9 |
1 |
A |
4E |
6EB |
4E |
1 |
||
4E |
B |
2 |
∞ |
3 |
4E |
B |
2 |
6CE |
3 |
||
7B |
2 |
C |
4 |
∞ |
6EB |
2 |
C |
4 |
5B |
||
4E |
6CE |
4 |
D |
3 |
4E |
6CE |
4 |
D |
3 |
||
1 |
3 |
5B |
3 |
E |
1 |
3 |
5B |
3 |
E |
Табл. Т1,2 Табл. Т3,4
1. Заполним табл. Т1,2 следующим образом.
Обозначим через d(x, y) длину пути от x до y. Диагональю будут являться точки А, В, С, D, E. Для них d(A,A)=d(B,B)=d(C,C)=d(D,D)= d(E,E)=0. Над диагональю запишем длины кратчайших путей, но не более чем из одного ребра (в противном случае поставим ∞).
Таким образом,
d(A,В) = 5, d(А,С) = ∞, d(А,D) = 9, d(A,E) = 1, d(B,C) = 2,
d(B,D) = ∞, d(B,E)= 3, d(C,D) = 4, d(C,E)= ∞, d(D,E) = 3.
Под диагональю запишем длины кратчайших путей, состоящих не более чем из двух ребер (иначе поставим ∞).
d1(A,В) = 5, d2(A,B) = d(A,E) + d(E,B) = 1 + 3 = 4,
d(A,В) = min{d1(A,В); d2(A,В)} = min{5;4} = 4E.
d1(A,C) = d(A,B) + d(B,C) = 5 + 2 = 7,
d2(A,C) = d(A,D) + d(D,C) = 9 + 3 = 13,
d(A,C) = min{d1(A,C); d2(A,C)} = min{7;13} = 7B.
Аналогично находим:
d(A,D) = 4E, d(А,E) = 1, d(B,C) = 2, d(B,D) = 6C или d(B,D) = 6Е,
d(B,Е) = 3, d(С,D) = 4, d(С,E)= 5В, d(D,E) = 3.
2. Заполним табл. Т3,4 следующим образом.
Над диагональю запишем длины кратчайших путей, но не более чем из трех ребер, а под диагональю - длины кратчайших путей, но не более чем из четырех ребер. Таким образом, под диагональю записаны кратчайшие пути между всеми вершинами графа.
Задача 2.
Найти кратчайшие пути между всеми вершинами графа (рис. 1) через транзитные вершины.
А |
5 |
∞ |
9 |
1 |
|
B |
2 |
∞ |
3 |
|
C |
4 |
∞ |
|
|
D |
3 |
||
Табл. Т1 |
E |
1. Построим таблицу условий Т1 следующим образом: запишем в диагональные клетки обозначения вершин A, B, C, D, E. Для них d(A,A)= d(B,B)=d(C,C)=d(D,D)=d(E,E)=0.
ТА |
А |
B |
C |
D |
E |
A |
10B |
5 |
7B |
9 |
1 |
B |
5 |
10A |
2 |
14A |
3 |
C |
7B |
2 |
4B |
4 |
5B |
D |
9 |
14A |
4 |
15A |
3 |
E |
1 |
3 |
5B |
3 |
2A |
Над диагональю запишем длины кратчайших путей, но не более чем из одного ребра (в противном случае поставим ∞).
2. Построим таблицу ТА .
В каждую клетку запишем длину кратчайшего пути, но не более чем из двух ребер (через транзитную вершину А). Например, длина пути DЕ равна 3, а через вершину А – 10. Запишем в клетке (D,E), min{3, 10} = 3. Длина пути ВВ через вершину А равна 10, т.е. d(B,B)= d(В,А) + d(А,В) = 5+5=10. Длина пути DВ через вершину А равна 14, т.е. d(D,B) = d(B,D) = d(D,A)+d(А,В) = 14.
ТB |
А |
B |
C |
D |
E |
A |
10B |
5 |
7B |
9 |
1 |
B |
5 |
10A |
2 |
14A |
3 |
C |
7B |
2 |
4B |
4 |
5B |
D |
9 |
14A |
4 |
18A |
3 |
E |
1 |
3 |
5B |
3 |
2A |
3. Построим таблицу ТВ.
В каждую клетку запишем длину кратчайшего пути, но не более чем из трех ребер (через А или В или АВ). Например,
d(С,Е)=min{d1(С,Е);d2(С,Е)} =
= min{8AB; 5B} = 5B, где d1(С, Е) = d1(С, В) + d1(В,А) + d(A,E) = 2 + 5 + 1 = 8AB;
d2(С, Е) = d(С, В) + d(В,E) = 2 + 3 = 5B.
d(Е, B) = min{d1(Е,B); d2(Е,B)} = min{3; 6А } = 3, где d1(Е,B) = 3, d2(Е,B) = d2(Е,А) + d2(А,В) = 6А.
d(D,B) = d(B,D) = d(D,A) + d(А,В)=9 + 5 = 14.
4. Построим таблицу ТС.
TC |
A |
B |
C |
D |
E |
A |
10B |
5 |
7B |
9 |
1 |
B |
5 |
4C |
2 |
6C |
3 |
C |
7B |
3 |
4B |
4 |
5B |
D |
9 |
6B |
4 |
8C |
3 |
E |
1 |
3 |
5B |
3 |
2A |
Табл. ТС |
В каждую клетку запишем длину кратчайшего пути, но не более чем из четырех ребер (через А, или В, или С, или АВ или ВС, или АВС). Например,
d1(Е,D) = d1(D,Е) = 3,
d2(Е,D) = d2(D,Е) = d2(E,А) + + d2(A,B) + d2(B,C) + d2(C,D) = 1+5+ 2 + 4 = 12;
d3(Е,D) = d3(D,Е) = d3(E,А) + d3(A,D) = 1 + 9 = 10;
d4(Е,D) = d4(D,Е) = d4(E,B) + d4(B,C) + d4(C,D) = 3 + 2 + 4 = 9;
d5(Е,D) = d5(D,Е) = d5(D,A) + d5(A,B) + d5(B,E) = 9 + 5 + 3 = 17;
d(Е,D) = d(D,E) = min{3;12;10;9;17} = 3.
5. Построить таблицу ТD.
TD |
A |
B |
C |
D |
E |
A |
10B |
5 |
7B |
9 |
1 |
B |
5 |
4C |
2 |
6C |
3 |
C |
7B |
2 |
4B |
4 |
5B |
D |
9 |
6С |
4 |
8С |
3 |
E |
1 |
3 |
5B |
3 |
2A |
TЕ |
A |
B |
C |
D |
E |
A |
2Е |
4Е |
6ЕВ |
4Е |
1 |
B |
4Е |
4C |
2 |
6СЕ |
3 |
C |
6ВЕ |
2 |
4B |
4 |
5B |
D |
4Е |
6ЕС |
4 |
6Е |
3 |
E |
1 |
3 |
5B |
3 |
2A |
6. Построим таблицу ТЕ.
В табл. ТЕ записаны кратчайшие пути между вершинами данного графа через транзитные вершины.
Например,
d(B,C) = d(B,D) + d(D,C) = 6 + 3 = = 9D;
d(D,A) = d(D,B) + d(B,A) = 8 +1 = 9B;
d(A,B) = min{d1(A,B); d2(A,B)} = min{18; 10} = 10, где d1(A,B) = 18;
d2(A,B) = d2(A,D) + d2(D,B) = 4 + 6 = 10D.
Задача 3.
A |
18 |
∞ |
4 |
1 |
B |
∞ |
6 |
∞ |
2 |
C |
∞ |
∞ |
8 |
3 |
D |
Табл. Т1 |
Найти кратчайшие пути между всеми вершинами графа (см. рис. 2).
1. Построим таблицу Т1.
Запишем в клетки диагонали метки вершин A, B, C, D. Для них d(A,A)=d(B,B)=d(C,C) = =d(D,D) =d(E,E)= ∞. Символ "∞" означает, что связь не существует. Над и под диагональю запишем длины кратчайших путей не более чем из одного ребра (в противном случае - ∞).
Например, d(A,D) = 4, d(D,А) = ∞, d(A,B) = 18, d(B,A) = 1.
2. Построим таблицу Т2.
A |
10D |
7D |
4 |
1 |
B |
9D |
5A |
3B |
2 |
C |
8B |
9B |
8 |
7 |
D |
Табл. Т2 |
Над и под диагональю запишем длины кратчайших путей не более чем из двух ребер (в противном случае - ∞).
3. Построим таблицу Т3.
A |
9DC |
7D |
4 |
1 |
B |
8AD |
5A |
3B |
2 |
C |
7BA |
6CB |
5C |
3 |
D |
Табл. Т3 |
Над и под диагональю запишем длины кратчайших путей не более чем из трех ребер.
Например, d1(B,C) = d1(B,A) + d1(D,C) =
= 1+4+3 = 8AD,
d2(B,C) = d2(B,D) + d2(D,C) = 6 + 3 = 9;
d(B,C) = min{d1(B,C); d2(B,C)} =
min{8AD; 9D} = 8AD.
Таким образом, в табл. Т3 записаны кратчайшие пути между вершинами данного графа.
Задача 4.
A |
18 |
∞ |
4 |
1 |
B |
∞ |
6 |
∞ |
2 |
C |
∞ |
∞ |
8 |
3 |
D |
Табл. Т |
Найти кратчайшие пути между всеми вершинами графа (рис. 2) через транзитные вершины.
1. Построим таблицу условий Т.
Запишем в клетки диагонали метки вершин A, B, C, D. Для них d(A,A)=d(B,B)=d(C,C) = = d(D,D) =d(E,E)= ∞. Над и под диагональю запишем длины кратчайших путей не более чем из одного ребра (в противном случае - ∞).
Например, d(A,В) = 18, d(B,A) = 1, d(B,C) = ∞.
2. Построим таблицу ТA.
TA |
A |
B |
C |
D |
A |
∞ |
18 |
∞ |
4 |
B |
1 |
19A |
∞ |
5A |
C |
∞ |
2 |
∞ |
∞ |
D |
∞ |
8 |
3 |
∞ |
Табл. ТA |
В каждую клетку запишем длину кратчайшего пути не более чем из двух ребер через транзитную вершину А. Например, длина пути BD через вершину А равна d1(B,D) = d(В,А) + d(А,D) = 1+4=5A,
d2(B,D) = 6, d(B,D) = min {5;6} = 5A.
d(B,B) = d(B,A) + d(A,B) = 1+18 = 19A.
d(A,C) = ∞.
TB |
A |
B |
C |
D |
A |
19B |
18 |
∞ |
4 |
B |
1 |
19A |
∞ |
5A |
C |
3B |
2 |
∞ |
7BA |
D |
9B |
8 |
3 |
19B |
Табл. ТВ |
3. Построим таблицу ТВ.
В каждую клетку запишем длину кратчайшего пути, но не более чем из трех ребер через транзитную вершину В (через А или В или АВ). Например,
d(С,A)=d(С,B) + d(B,A) = 2 + 1 = 3B;
d1(С,D) = d1(С,В) + d1(В,D) = 2 + 6 = 8B;
d2(С,D) = d2(С,В) + d2(В,A) + d2(A,D) = 2 + 1 +4 = 7BA;
d(C,D) = min{d1(C,D);d2(C,D)} = min{8B;7BA} = 7BA;
d(A,A)=d(A,B) + d(B,A) = 18 + 1 = 19B;
d(D,D)=d(D,B) + d(B,D) = 8 + 6 = 14B;
d1(A,D) = 4, d2(A,D) = d2(A,B) + d2(B,D) = 18 + 6 = 24B;
d(A,B) = min{4;24B} = 4.
4. Построим таблицу ТС.
В каждую клетку запишем длину кратчайшего пути, но не более чем из четырех ребер через транзитную вершину С (через А, или В, или С, или АВ или СВ, или ВА и т.д.).
TC |
A |
B |
C |
D |
A |
19B |
18 |
∞ |
4 |
B |
1 |
19A |
∞ |
5A |
C |
3B |
2 |
∞ |
7BA |
D |
6CB |
5C |
3 |
10CBA |
Табл. ТС |
Например,
d1(D,A) = d1(D,B) + d1(B,A) = 8 + 1 = 9B;
d2(D,A) = d2(D,C) + d2(C,B) + d2(B,A) = = 3 + 2 + 1 = 6CB;
d(D,A) = min{9,6} = 6CB;
d1(D,D) = d1(D,B) + d1(B,D) = 8 + 6 = 14B;
d2(D,D) = d2(D,C) + d2(C,B) + d2(B,D) = 3 + 2 + 8 = 13CB;
d3(D,D) = d3(C,D) + d3(C,B) + d3(B,A) + d3(A,D) = 3 + 2 + 1 + 4 = 10CBA;
d(D,D) = min{14;13;10} = 10.
5. Построим таблицу ТD.
TD |
A |
B |
C |
D |
A |
10DCB |
9DC |
7D |
4 |
B |
1 |
1DC |
8AD |
5A |
C |
3B |
2 |
10BAD |
7BA |
D |
6CB |
5C |
3 |
10CBA |
В каждую клетку запишем длину кратчайшего пути, не более чем из пяти ребер (через А, или В, или С, или В; или АВ или ВA, или АВ, или DС и т.д.). Например,
d1(A,A) = d1(A,B) + d1(B,A) = 18 + 1 = 19B;
d2(A,A) = d2(A,C) + d2(D,B) + d2(B,A) = 4 + 8 + 1 = 13DB;
d3(A,A) = d3(A,D) + d3(D,C) + d3(C,B) + d3(B,A) = 4 + 3 + 2 + 1 = 10DCB;
d(A,A) = min{19;13;10} = 10DCB;
d(A,C) = d(A,D) + d(D,C) = 4 + 3 = 7D.
Таким образом, в табл. ТD записаны кратчайшие пути между вершинами данного графа через транзитные вершины.
Залача 5.
Найти кратчайшие пути между всеми вершинами графа (рис. 3).
А |
9 |
3 |
9 |
В |
4 |
3 |
∞ |
С |
Табл. Т1 |
1. Построим таблицу условий Т1. Запишем в клетки диагонали метки вершин A, B, C. Для них d(A,A)=d(B,B)=d(C,C) = ∞. Над и под диагональю запишем длины кратчайших путей не более чем из одного ребра (в противном случае поставим ∞).
Например, d(В,С) = 4, d(С,В) = ∞.
2. Построим таблицу Т2.
A |
9 |
3 |
7С |
B |
4 |
3 |
12А |
C |
Табл. Т2 |
Над и под диагональю запишем длины кратчайших путей не более чем из двух ребер.
Например, d1(B,А) = d1(В,С) + d(С,А) = 4+3=7С; d2(B,А) = 9, d(B,А) = min{7С;9} = 7С;
d(С,B) = d(С,A) + d(A,B) = 3+9 = 12A.
Задача 6.
Найти кратчайший путь между всеми вершинами графа (рис. 3) через транзитный вершины.
А |
2 |
3 |
2 |
В |
4 |
3 |
∞ |
С |
Табл. Т1 |
TA |
A |
B |
C |
A |
∞ |
9 |
3 |
B |
9 |
18A |
4 |
C |
3 |
12A |
6A |
Табл. ТA |
1. Построим таблицу условий Т1. Запишем в клетки диагонали метки вершин A, B, C. Для них d(A,A)=d(B,B)=d(C,C) = ∞. Над и под диагональю запишем длины кратчайших путей не более чем из одного ребра (в противном случае поставим ∞).
2. Построим таблицу ТА следующим образом:
В каждую клетку запишем длину кратчайшего пути не более чем из двух ребер через транзитную вершину А. Например, d(B,В) = =d(В,А)+d(А,В)=9+9=18A, d1(B,С)=d1(B,A) + d1(A,C) = 9 + 3 = 12A,
d2(B,C) = 4,
d(B,C) = min{12A;4} = 4.
TВ |
A |
B |
C |
A |
18В |
9 |
3 |
B |
9 |
18A |
4 |
C |
3 |
12A |
6A |
Табл. ТВ |
3. Построим таблицу ТB следующим образом:
В каждую клетку запишем длину кратчайшего пути не более чем из трех ребер через А или В; или АВ; или через ВА. Например, d(А,А) = d(А,В) + d(В,А) = 9+9=18В.
4. Построим таблицу ТС.
В каждую клетку запишем длину кратчайшего пути через
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.