Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы дискретной математики. Теория графов. Практикум

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Строим матрицу смежности (
1 2 3 4 5 6
1 a b
2 m p
()=
Вычисляем матрицу
()
=
3 k
4 f
5 t g
6 c
()
=()× ():
1 2 3 4 5 6
1 am ap bf
2 pf mk
3 kc
4 ft fg
5 ta gc tb
6 ck
)
:
Вычисляем матрицу
1 2 3 4 5
1 bft apf amk, bfg
2 pft mkc bfg
()
3 kck
=
4 fta fgc ftb
5 tam tap tbf gck
6 ckc
()
= ()× 
()
или
6
()
× ():
Видно, что в матрице достижимости присутствуют нулевые эле­менты.
Произведем анализ матрицы и переставим строки и столбцы, что­бы привести матрицу к клеточному виду. В результате получим сле­дующую матрицу:
41
1 2 3 4 5 6
1 bft a b, ap bd, apf am amk, bfg
2 pft p pf m, mkc mk, pfg
()=
3 ft fta ftb f Fgc fg
4 t ta tb, tap tbf gc, tam g, gck
5 kc k, kck
6 c, ckc ck
Компоненте сильной связности в матрице достижимости соответ­ствует подматрица максимального размера, каждый элемент которой не равен нулю, за исключением, быть может, диагональных элемен­тов. Элементы, показывающие связь между этими подматрицами, могут быть не равны 0.
В матрице (
)
имеем две такие подматрицы, которым соответ-
ствуют две компоненты сильной связности: {1,2,4,5} и {3, 6}.
Задачи
Определить связность графа, заданного матрицей смежности. Найти количество компонент связности.
Задание № 1 Задание № 2 Задание № 3
1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1
2 1 1 1 1 1
3 1 1 1 1
4 1 1 1 1
5 1 11
6 1 1 1 1 1
7 1 1
8 1 1 1 1 1 1 1
9 1 1 1 1 1
10 1 1 1 1
42
1234567 8 910
1 1 1 1 1 1 1
2 1 11 1 1
311 11 1
41 11 1
51 11
6 1 11 1 1
71111 1 11
81
911 1111 1
10 1 1 1 1 1
1111
2 111111
3111
411 11
5111 11
61 1
7111
81111
12345678
Задание № 4 Задание № 5
1 2 3 4 5 6 7 8
1 1 1 1
2 1 1 1 1
3 1 1 1
4 1 1
5 1 1 1 1 1
6 1 1 1
7 1 1 1 1 1
8 1 1 1
12345678
1 1 1
2 1 1 11
3 1 1 1
41 1 11
5 111 1
6 1 11
7 111 1
811 1 1
Найти компоненты сильной связности графов, заданных матрица­ми связности.
Задание № 6 Задание № 7 Задание № 8
1 2 3 4 5 6 7
1
2 1
3 1 1
4
5
6 1 1 1
7 1
123456 7
11 11
21
31 1
4
5
61
7
1234567
1
21
31
41 1
51
6
7111
Задание № 9 Задание № 10 Задание № 11
1 2 3 4 5 6 7
1 1
2
3 1 1 1 1
4 1 1
5 1 1
6 1
7
1234567
1
2
3 1
4 1 1
5 1
6
71 1
1234567
1 1
21 1
3 1
4 1
5 1
6 1
71
43
Цикломатика
󰆊
Пример 1
В заданном графе найти все циклы.
:
Вычислим цикломатическое число:
=9−6+1=4.
Определим остов графа:
:
Ребра графа, не вошедшие в остов, – хорды ,,,.
Их число равно 4, как и .
Построим базисную цикломатическую матрицу. Число строк рав­но числу базисных циклов:
=4.
f t u z a b c k p
   
44
󰆊
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
хорды ребра
«Левую» часть матрицы заполняем единицами на главной диаго­нали, остальные элементы – нулями.
«Правую» часть заполняем построчно. Добавляем одну хорду
к остову , получаем точно один цикл. Помечаем единицами те реб-
ра, которые участвуют в образовании этого цикла.
Рассмотрим строку
. В этом цикле будет присутствовать хорда
. Добавляем ее в остов .
Определяем цикл (,,,,,) и помечаем в базисной циклома-
тической матрице единицами в строке
f t u z a b c k p
   
1 0 0 0 1 1 1 1 1
0 1 0 0
0 0 1 0
0 0 0 1
ребра ,,,,.
Повторяем для строки . Добавляем в остов хорду :
45
Получаем точно один цикл (,,,). Отмечаем его во второй
строке:
f t u z a b c k p
  
1 0 0 0 1 1 1 1 1
0 1 0 0 0 1 1 1 0
0 0 1 0
0 0 0 1
Продолжаем далее и получаем базисную цикломатическую мат­рицу:
f t u z a b c k p
1 0 0 0 1 1 1 1 1
0 1 0 0 0 1 1 1 0
0 0 1 0 0 1 1 0 0
0 0 0 1 0 0 1 1 1
Далее, используя операцию ⊕, вычисляем оставшиеся циклы
графа. При этом помним, что складывать можно только те циклы,
пересечение которых не равно пустому множеству
f t u z a b c k p
⊕= ⊕= ⊕= ⊕= ⊕=
⊕=
⊕(⊕
=
⊕=
    

)
(⊕)⊕=
=
⊕=
(⊕)⊕=
=⊕=

(⊕)⊕=
=
⊕=
(⊕)⊕(⊕
=
⊕=
=
1 1 0 0 1 0 0 0 1
1 0 1 0 1 0 0 1 1
1 0 0 1 1 1 0 0 0
0 1 1 0 0 0 0 1 0
0 1 0 1 0 1 0 0 1
0 0 1 1 0 1 0 1 1
1 1 1 0 1 1 1 0 1
1 1 0 1 1 0 1 1 0
1 0 1 1 1 0 1 0 0
0 1 1 1 0 0 1 0 1
)
=
1 1 1 1 1 1 0 1 0
⊕= ∅.
∩≠∅ ∩≠∅
∩≠∅ ∩≠∅ ∩≠∅ ∩≠∅
∩
∩
∩
∩
∩
≠∅ ≠∅ ≠∅ ≠∅
≠∅
46
Пример 2
В заданном графе найти все циклы.
:
Вычислим цикломатическое число:
=10−3+1=4.
Определим остов графа и хорды:
:
Ребра графа, не вошедшие в остов, – хорды ,,,. Их число
равно 4, как и .
Построим базисную цикломатическую матрицу. Число строк рав-
но числу базисных циклов:
=4.
c k m s a b t g p z
   
1 0 0 0 0 1 1 0 0
0 1 0 0 1 0 1 1 1
0 0 1 0 0 0 0 0 1
0 0 0 1 1 1 0 1 1
0 0 1 0
47
Находим оставшиеся циклы графа:
f t u z a b c k p
⊕=
⊕
⊕= ⊕= ⊕= ⊕=
  
(⊕)⊕=⊕= (⊕)⊕=⊕= ⊕(⊕)=⊕=
(⊕)⊕=⊕
)
⊕(⊕⊕
=
⊕
1 1 0 0 1 0 0 0 1
Складывать нельзя, так как
1 0 0 1 1 1 0 0 0
0 1 1 0 0 0 0 1 0
0 1 0 1 0 1 0 0 1
0 0 1 1 0 1 0 1 1
1 1 1 0 1 1 1 0 1

1 1 0 1 1 0 1 1 0

1 0 1 1 1 0 1 0 0

Складывать нельзя, так как
Складывать нельзя, так как
∩≠∅ ∩=∅ ∩≠∅ ∩≠∅ ∩≠∅ ∩≠∅ ∩≠∅ ∩≠∅
∩≠∅
∩=∅
∩=∅
Задачи
Найти все циклы в графах, заданных с помощью матриц смежности.
Задание № 1 Задание № 2 Задание №
1 2 3 4 5 6 7 8
1 1 1 1
2 1 1 1 1
3 1 1 1 1
4 1 1 1 1
5 1 1 1
6 1 1 1 1
7 1 1
8 1 1
12345678
1 111 11
2 1 1
31 1
411 11
51 1 11
6 1 1 1
71 11
81 1 1
12345678
1 1 1
2 1111 1
311 1 1
4 11 111
5 1 1 1
6 1 1
7 1
8111 1
3
Задание № 4 Задание № 5 Задание № 6
1 2 3 4 5 6 7 8
1 1 1 1 1
2 1 1
3 1 1 1 1
4 1 1 1 1 1 1
5 1 1 1 1
6 1
7 1 1 1
8 1 1
12345678
11111
21 1 1
3111
41 1 1 11
51111
61 1 1
71 1
811
12345678
1111
21111
31 111
411 1
51 1
6111 1
71 1 1
8111
48
Задание № 7 Задание № 8
1 2 3 4 5 6 7 8
1 1 1 1 1
2 1 1
3 1 1 1
4 1 1 1
5 1 1 1 1 1
6 1 1 1 1 1
7 1
8 1 1 1
12345678
1 1 1 11
2 11 1
31 1
4 11 11
511 1 111
6 11
711 1
81 1
Поиск пустых подграфов
Пример 1
Задан граф. Найти все пустые подграфы и определить
:
.
Сопоставляем корню порождающего дерева исходный граф .
Фиксируем вершину с минимальной степенью. В данном графе их две: 3 и 5. Выбираем любую, например 3. Порождаем дугу, конец которой идентифицируем вершиной 3.
49
Также из корня испускаем 2 дуги и конец каждой идентифици-
руем вершиной из окрестности вершины 3 в графе . Это верши-
ны 2 и 4.
Каждую вершину нового яруса взвешиваем графом, который яв-
ляется неокрестностью соответствующей вершины в графе .
=
(3)
,
:
:
=
(2)
,
:
=(4).
Рассматриваем каждую вершину нового яруса как корень нового дерева и повторяем шаги алгоритма с начала.
В графе
фиксируем вершину с минимальной степенью: 1 или 5.
Выбираем, для определенности, вершину 1. Сопоставляем ее концу исходящей дуге из вершины 3. Также из вершины дерева 3 испуска-
ем одну дугу по числу смежных с вершиной 1 в графе
и сопостав-
ляем номер вершины из окрестности с концом этой дуги.
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]