Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
System_analiz / Копия ОСА_розділ2.doc
Скачиваний:
28
Добавлен:
12.02.2016
Размер:
328.19 Кб
Скачать

Алгоритм упорядкування графів

1. В підмножину нульового рівняN0 включаються всі вершини і, для яких G-1(i)=0 (пуста множина). Проводиться послідовна нумерація вершин: 1,2 …l.

2. В підмножину першого рівня N1 включаються всі вершини і, для яких G-1(i)  N0. Проводиться послідовна нумерація вершин: l+1, l+2, …l+r.

3. В підмножину другого рівня N2 включаються всі вершини і, для яких G-1(i)  (N0 U N1). Проводиться послідовна нумерація вершин: l+r, l+r+1…, l+r+p.

4. В підмножину третього рівня N3 включаються всі вершини і, у яких G-1(i)  (N0 U N1 U N2) , після чого також проводиться послідовна нумерація вершин.

Процес повторюється до тих пір, поки не будуть пронумеровані всі вершини графа. Тоді в матриці суміжності вершин графа аij=0 при і>1.

Н

2

а рис.2.5 показані впорядкований та невпорядкований графи без контурів. Для графа при наявності контурів виділяються спочатку сильно зв’язні підграфи, які утворюють класи, далі, так як граф класів не має контурів, на ньому можна виконувати впорядкування та ввести поняття рівнів.

1

3

7

9

10

4

6

8

5

Рис.2.5. а) невпорядкований граф

РІВНІ

3(2))

0 (1) 1 2 3 4

3(9)

9(3)

4(8)

6(7)

4

2(10)

7(6)

5(5)

Рис. 2.5., б) Впорядкований граф

(в дужках - номери вершин)

Числові функції на графі.Числову функцію задають як на вершинах, так і на дугах (ребрах) графа.

Числова функція на вершинах графа вважається заданою, якщо кожній вершині (і-й) аі графа G(V), ai  V, ставиться у відповідність деяке число ei=e(ai) з деякої множини L.

Числова функція на дугах (ребрах) для орієнтованого (неорієнтованого) графа вважається заданою, якщо кожній дузі (аі аj) або ребру ставиться у відповідність число q=q(аі аj) з множини Q. В деяких випадках числова функція на графі задається комбінованим способом: на вершинах і на дугах.

Значення функції на шляху S через вершини a1, a2,…ai, … (aiS)

при заданні числової функції на вершинах графа визначається або у відповідності з адитивною формою:

(2-9)

або з мультиплікативною:

(2-10)

Аналогічно визначаються значення функції на шляху через вер-шини a1, a2,…ai, … при заданні числової функції на дугах (ребрах) графа:

(2-11)

(2-12)

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

– максимальне значення функції на шляхах S з деякої початкової вершини а1 у вершину аj (аналогічно );

G-1(aj) – множина лівих інциденцій для вершини аj;

q(aiaj) – значення функції на дузі (аіаj).

Передбачається, що всі вершини в графі впорядковані.

Визначення максимальних і мінімальних шляхів викорсто-вується:

- в задачі сіткового та календарного планування для визначення критичних шляхів;

- в транспортних задачах;

- в задачах контролю і діагностики.

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

Використання матриці шляхів на графі. Матриця є квадратною, кількість стовпців відповідає кількості елементів в складі ТК. Якщо на графі є шлях будь-якої довжини з вершини і у вершину j, то на пересіченні і-го рядка та j-го стовпця ставиться одиниця, в протилежному випадку – 0.

2

3

4

1

5

6

7

8

9

Рис.2.6. Структура системи

Таблиця 2.1.

Матриця шляхів графа – P:

І

J

1

2

3

4

5

6

7

8

9

1

1

1

1

1

1

1

1

1

1

2

0

1

1

1

1

1

1

1

1

3

0

1

1

1

1

1

1

1

1

4

0

1

1

1

1

1

1

1

1

5

0

1

1

1

1

1

1

1

1

6

0

0

0

0

0

1

1

1

0

7

0

0

0

0

0

0

1

1

0

8

0

0

0

0

0

0

1

1

0

9

0

1

1

1

1

1

1

1

1

На основі матриці P будується допоміжна матриця S

(2-13)

Таблиця 2.2

Допоміжна матриця S

I

J

1

2

3

4

5

6

7

8

9

1

1

0

0

0

0

0

0

0

0

2

0

1

1

1

1

0

0

0

1

3

0

1

1

1

1

0

0

0

1

4

0

1

1

1

1

0

0

0

1

5

0

1

1

1

1

0

0

0

1

6

0

0

0

0

0

1

0

0

0

7

0

0

0

0

0

0

1

1

0

8

0

0

0

0

0

0

1

1

0

9

0

1

1

1

1

0

0

0

1

На основі матриці S визначаються комплекси, які входять в склад графа ТК. Якщо в і-му рядку є лише один ненульовий елемент Sii (на головній діагоналі), то елемент ТК з номером і можна розрахувати окремо від решти елементів (це – 1,6).

Рядки матриці S, які мають крім елемента Sii інші ненульові елементи – комплекси. Ненульові елементи показують вершини графа, які входять в комплекс.

В прикладі в склад ТК входять два комплекси:

комплекс 1: - 2, 3, 4, 5, 9

комплекс 2: - 7, 8.

Наведений алгоритм потребує багато ручної праці.

Ще один алгоритм. Розглядаються будь-які три вершини графа ТК – i, j, m. Якщо існує шлях (будь якої довжини!) з вершини і в вершину j і з j в і, то ці вершини належать одному комплексу k. Для приєднання вершини m до комплекса необхідно проаналізувати: чи є шлях з будь-якої вершини комплекса (наприклад, і), у вершину m та зворотній шлях з вершини m в будь-яку вершину комплекса k (наприклад,і). Якщо ці два шляхи існують, то вершина m належить комплексу k.

Для наведеного вище прикладу виділяються комплекси:

k1 (вироджений): - елемент 1

k2: 2, 3, 4, 5, 9

k3 (вироджений): елемент 6

k4 : 7,8

Соседние файлы в папке System_analiz