Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab7_descreet_math.doc.doc
Скачиваний:
9
Добавлен:
18.03.2016
Размер:
1.61 Mб
Скачать

Лабораторна робота №7

Тема: Дослідження задачі розтину графа на шматки.

Мета: набути навичок розв'язку задачі розтину графа на шматки і реалізувати його програмн.

ТЕОРЕТИЧНІ ВІДОМОСТІ

1 . Постановка задачі розрізу графа схеми.

Сформулюємо задачу розрізу графа G= (Х,U)на шматки Gi = (Хii) і

I = {1,2,...,1}, де 1 - кількість шматків, на які розрізається граф. Розріз графа визначимо по аналогії з розбиттям множин.

Сукупність шматків В(Gі) називається розрізом графа G=(Х, V), якщо

(1)

де Uii - множина ребер, що попадають в розріз між шматками Gi та Gi. Позначимо {Uii}=kii та назвемо його числом реберного об'єднання шматків, причому

Якщо kii =1, то шматок Gi , називається напівостовом.

Задачею розрізу графа G=(Х,U) є знаходження такої сукупності шматків., щоб сумарне число реберного з'єднання задовольняло заданому критерію оптимальності.

Під оптимальним розрізом графа G=(X,U) будемо розуміти такий розріз

B(Gt), який задовольняє умові

(2)

тобто критерієм оптимальності є мінімальна кількість ребер між шматками графа G.Сформульована задача е задачею комбінаторно-логічного типу, і роз'вязок її пов'язаний з великим перебором різних варіантів розбиття графа на шматки.Щоб запобігти цьому, розроблені алгоритми, не пов'язані з повним перебором, хоч і такі, які приводять до знаходження не загального, а локального мінімума, достатнього для практичних цілей.

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

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

2. Послідовні алгоритми розрізу.

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

Нехай задано граф G=(Х, UF) та множина заборонених елементів Q c X,

|Q|=q . Вимагається знайти такий розріз В(Gщ) на І однакових шматків, щоб

де Xi - вершини i-го шматка.

Інакше передбачається, що будь-які дві заборонені вершини розміщуються в різних шматках. Ця вимога не порушує загальності міркувань.

Побудова першого шматка починається з вершини , яку апріорно вважаємо належного множиш вершин Хi першого шматка Gl = (Хl,Ul) та створюючої перший рівень. На першому рівні множина X, = {хσ}.

Для визначення вершини слідуючого рівня, тобто другої вершини, яку необхідно розмістити в шматок Gl , будується множина вершин, суміжних з вершиною

Позначимо цю множину Гхє .

Введемо поняття віносної ваги δ(хi) для будь-якої вершини графа хі :

(3)

де аik - кількість ребер, з'єднаючих вершину xі з вершинами Xl .

У відповідності з обраним критерієм для отримання необхідного шматка з множини Гхе необхідно обрати вершину хi з мінімальною величиною δ(хi) тобто обрати xі , для якої

δ(xi)=min δ(xi)

де i ={1,2,…,t}, t=| Гхе |

Вершина xі є вершиною другого рівня. На другому рівні Xi = {хеі].

Далі розглянемо множину Гхе Гхі та для кожної вершини Xk (Гхє Гхі ) визначимо відносну вагу у відповідності з виразом (3). Обираючи вершину хk з мінімальною вагою, отримає Xl = {хеіk}.

Вказаний процес виконується до тих пір, поки множина Хl не буде утримувати n/1 елементів.

Отриманий шматок Gl видаляється з графа G. Обирається слідуюча заборонена вершина хɷ та будується слідуючий шматок по описаній

процедурі.

Сформулюємо описану процедуру у вигляді алторитма

1. Видаляємо першу заборонену вершину хє та по матриці суміжності або її кодовій реалізації будуємо множину Гхе . Переходимо до п.2.

2. Для вершин з множини Гхе визначаємо по формулі (3) відносні ваги та вибираємо з них мінімальну. Переходимо до п.4. Якщо таких вершин декілька, то перехопимо до п.З.

3. З підмножини вершин з рівною відносною вагою обираємо вершину з більшим локальним ступенем, розміщуємо її в шматок та переходимо до л.5.

4. Обрану вершину розміщуємо в шматок. Переходимо до п.5.

5. Підраховуємо кількість з вершин в шматку. При s<k пере ходимо до п. 7; якщо s=k, то шматок отримано. Видаляємо його з графа G та переходимо до п.6.

6. Перевіряємо існування заборонених вершин; якщо такі вершини існують, то переходимо до п. 1, інакше - до п.8.

7. Будуємо множину вершин, суміжних раніш обраним в даний шматок, та переходимо до п.2.

8. Кінець роботи алгоритму.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]