Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритми_МетодиОбчислень_Р2.doc
Скачиваний:
20
Добавлен:
19.11.2019
Размер:
2.07 Mб
Скачать

2.4 Алгоритми на графах

Графи є зручними моделями при аналізі роботи і проектуванні комп’ютерних мереж.

Граф є кінцева множина V, яка називається множиною вершин, і множина Е двоелементних підмножин множини V. Множина Е носить назву множини ребер. Елемент множини Е називають ребром. Граф позначають G(V,E).

Зазвичай кінцевий граф, зображають у вигляді діаграми, на якій вершини це точки, а лінії – ребра.

Якщо {a,b} – ребра, тоді вершини a і b називають їх кінцями. Ребро (a,b) називають інцедентним вершинам a і b. І, навпаки, вершини a і b інцедентні ребру (a,b). Дві вершини називають суміжними, якщо вони є кінцями ребра (інцедентні ребру). Два ребра називають суміжними, якщо вони інцедентні одній вершині (рис. 2.5)

Рисунок 2.5 – Суміжні ребра (a,b) і (b,с)

Приклад. Граф з множиною вершин V={a,b,c,d,e} і множиною ребер E={(a,b), (a,e), (b,e), (b,c), (b,d), (c,d)} показаний на рис. 2.6

Визначені нами графи носять назву – простих. Обмеження на існування тільки одного ребра між двома вершинами дає можливість подати будь – яке ребро не як елемент множини Е.

Рисунок 2.6 – Граф з множиною вершин V і множиною ребер Е.

Наше визначення виключає також ребра, які називають петлями (рис. 2.7). Ребро яке з’єднує вершину саму з собою називається петлею. Граф, в якому є петлі, називають графом з петлями.

Рисунок 2.7 – Граф з петлею

Якщо в графі є більше одного ребра між двома вершинами, то він носить назву мультиграфа (рис. 2.8)

Рисунок 2.8 – Мультиграф.

Якщо граф має петлі і вершини, які з’єднані більше ніж одним ребром, то такий граф називають псевдографом

Степеню вершини , позначають deg(v), називають кількість ребер, які інцидентні даній вершині V. Вершина степені 0 називається ізольованою.

Граф, який складається із множини вершин V і множини Е упорядкованих пар елементів із V називається орієнтованим графом або орграфом. Ребра такого графа називають дугами. Якщо , то апочаткова, а b кінцева вершини. Відмітимо, що поняття орграфа допускає наявність петель, чого не було у випадку простих графів. Це пояснюються тим, що орграф допускає відношення між елементами, а простий граф визначений як множина вершин і ребер, а в множині два однакових елементи вважаються одним елементом.

Якщо а – початкова, а b – кінцева вершини орграфа G(V,E), то вершини a і b інцидентні ребру (a,b); вершина а суміжна до вершини b, і, навпаки, вершина b також суміжна до вершини а.

Степеню виходу вершини називається кількість ребер, для яких є початковою вершиною, позначається outdeg( ). Степеню входу вершини називається кількість ребер, для яких є кінцевою вершиною і позначається . Якщо =0, то називається джерелом. Якщо outdeg( )=0, то вершина називається стоком (рис. 2.9).

Існує два способи подання граф як набір списків суміжних вершин або як матрицю суміжності.

Подання графа у вигляді списку суміжних вершин використовує масив із списків – по одному на кожну вершину ( - кількість вершин графа). Для кожної вершини список суміжних вершин вміщує у довільному порядку всі суміжні з нею вершини, для яких . На рис. 2.10,б показано подання неорієнтованого графа (рис.2.10,а) за допомогою списку суміжних вершин, а на рис 2.10,в той же граф поданий за допомогою матриці суміжності.

Рисунок 2.9 - Орграф, в якому є джерело і стік

а б в

Рисунок 2.10 – Два подання неорієнтованого графа

Аналогічним чином можна подати і орграф: у вигляді списку суміжних вершин (рис. 2.11,б) та у вигляді матриці суміжності (рис. 2.11,в).

Для орієнтованого графа сума всіх елементів матриці суміжності дорівнює числу його дуг (орієнтованих ребер), а для неорієнтованого графа – подвоєній сумі елементів матриці суміжності, так як ребро асоційовано в таблиці суміжності з двома елементами: як з вершиною , так і з вершиною . В обох випадках кількість пам’яті є . Списки суміжних вершин зручні для зберігання графів з вагами, в якому кожному ребру назначена певна вага (вагова функція). Недолік такого способу наступному: якщо необхідно дізнатись чи є у графа ребро із у , то необхідно проглянути увесь список у пошуку . Цього можна уникнути, подавши граф у вигляді матриці суміжності – але тоді буде потрібно більше пам’яті.

а б в

Рисунок 2.11 – Два подання орієнтованого графа

При використанні матриці суміжності будемо нумерувати вершини графа числами 1, 2, …, і розглядатимемо матрицю розміром , елементи якої

На рис. 2.10,б і 2.11,б наведені матриці суміжності для неорієнтованого і орієнтованого графів відповідною. Матриця суміжності вимагає пам’яті незалежно від кількості ребер.

Оскільки матриця суміжності неорієнтованого графа симетрично, то вона співпадає зі своєю транспонованою матрицею, тобто . Завдяки симетрії матриці у пам’яті машини можна зберігати лише числа на головній діагоналі і числа, які розміщені вище головної діагоналі. Зберігання ваг ребер графа у пам’яті машини здійснюється у матриці на пересіченні лінійки і стовпця.