- •1 Мета і задачі дисципліни
- •2 Робоча програма дисципліни
- •Без виконання усіх без винятку пунктів табл. 2.6 студент до іспиту допущений не буде. Оцінка виставляється, виходячи з табл. 2.7.
- •2.7 Рекомендована література
- •21. Білоус н.В., Шубін і.Ю. Методичні вказівки для проведення практичних занять з дисципліни "кдм" – електронний варіант ( 24 годин, 2000).
- •3 Огляд рекомендованої літератури
- •Тема 3. Відношення та їх властивості
- •4 Методичні вказівки до вивчення дисципліни
- •Тема 1. Вступ
- •Тема 2. Основні поняття теорії множин. Алгебра множин
- •Тема 4. Відображення та функції
- •Тема 5. Булеві функції та алгебра логіки
- •Тема 6. Двоїстість булевих функцій
- •Тема 8. Алгебра Жегалкіна
- •Тема 9. Функціональна повнота наборів булевих функцій
- •Тема 10. Методи мінімізації булевих функцій
- •Тема 11. Основи математичної логіки
- •Тема 12. Логіка висловлювань Висловлення – це оповідальне речення, про яке можна сказати, істинне воно чи хибне, але не те й інше водночас.
- •Тема 13. Логіка першого порядку (лпп)
- •Тема 14. Основні поняття теорії графів
- •Тема 15. Ейлерові та гамільтонові ланцюги і цикли
- •Тема 16. Планарність графів
- •Тема 17. Відстані на графах
- •Тема 18. Дерева
- •Тема 19. Транспортні мережі
- •Тема 20. Основи комбінаторного аналізу
- •Тема 21. Формули простого перелічення
- •Тема 22. Формула включення та виключення
- •5 Методичні вказівки до тем для самостійного вивчення
- •Тема 1. Методи мінімізації булевих функцій
- •Тема 2. Синтез комбінаційних схем
- •Тема 3. Багатозначна логіка
- •Тема 4. Задача комівояжера
- •Тема 5. Розфарбування графів
- •Тема 6. Цикломатика графів
- •Тема 7. Розрізи графів
- •Тема 8. Комбінаторика
- •Розглянути додаткові розділи комбінаторики та навчитися використовувати їх на практиці [1, с. 438-453; 2, c. 437-453; 10, c. 90-121, с. 192-296, с. 212-216; 12, c. 28-30].
- •6 Індивідуальні контрольні завдання
- •7 Приклад розв’язання деяких типових завдань
- •Побудуємо заданий граф g і деяке відповідне йому остове дерево т (рис. 7.4).
- •Рекомендована література
Побудуємо заданий граф g і деяке відповідне йому остове дерево т (рис. 7.4).
Рисунок 7.4
Побудуємо базис розрізів графа. Знайдемо ранг розрізів: (G)= m- =8. Ранг розрізів відповідає кількості базисних розрізів для графа G.
e20: V1={ v2 }; V2={v1, v3, v4, v5, v6, v7, v8, v9},
c1={ e18, e19, e20, e21, e26};
e25: V1={ v2, v7 }; V2={v1, v3, v4, v5, v6, v8, v9 },
c2={ e18, e19, e22, e23, e24, e25, e26};
e13: V1={v9}; V2={v1, v2, v3, v4, v5, v6, v7, v8},
c3={e13, e14};
e5: V1={v2, v7, v8, v9}; V2={v1, v3, v4, v5, v6},
c4={e4, e5, e6, e10, e11, e12, e18, e19, e22, e23, e26};
e8: V1={ v2, v3, v7, v8, v9}; V2={ v1, v4, v5, v6},
c5={ e7, e8, e9, e10, e11, e12, e18, e19, e26};
e2: V1={ v1, v2, v3, v7, v8, v9}; V2={ v4, v5, v6},
c6={e1, e2, e3, e10, e11, e12, e18, e19};
e15: V1={ v1, v2, v3, v4, v7, v8, v9}; V2={ v5, v6},
c7={ e10, e11, e12, e15, e18, e19};
e17: V1={ v1, v2, v3, v4, v6, v7, v8, v9}; V2={ v5},
c8={ e16, e17, e18, e19}.
Побудуємо базис циклів графа G. Кількість базисних циклів відповідає цикломатичному числу для заданого графа. Отже, у заданому графі є 18 базисних циклів.
Для побудови базису циклів додаємо до остовного дерева Т кожну з хорд у порядку їхнього зростання, виділяємо простий цикл і формуємо базис циклів графа (у вигляді послідовності ребер, що утворять кожний з базисних циклів). Таким чином отримуємо 18 базисних циклів.
Сe1={ e1, e2}; Сe3={e2, e3}; Ce4={e4, e5}; |
Ce6={e5, e6}; Ce7={e7, e8}; Ce9={e8, e9}; |
|
Ce10={e5, e8, e2, e15, e10}; Ce11={e5, e8, e2, e15, e11}; Ce12={e5, e8, e2, e15, e12}; Ce14={e13, e14}; Ce16={e16, e17}; Ce18={e17, e15, e2, e8, e5, e25, e20, e18};
|
Ce19={e17, e15, e2, e8, e5, e25, e20, e19}; Ce21={ e20, e21}; Ce22={e5, e25, e22}; Ce23={e5, e25, e23}; Ce24={e24, e25}; Ce26={ e8, e5, e25, e20, e26}.
|
|
Завдання 9. Задано неорієнтований мультиграф (рис. 7.5). Визначити відстані від вершини v3 до інших вершин. Побудувати на вершинах графа дерево мінімальної вартості.
Рисунок 7.5
Для пошуку відстані від вершини v3 скористаємося алгоритмом Дейкстри. У кожному стовпчику вибираємо мінімальну відстань (перша цифра – номер вершини, друга – відстань).
v1 |
|
(4,7) |
(4,7) |
|
|
|
v2 |
|
(4,10) |
(4,10) |
(4,10) |
(4,10) |
|
v3 |
0 |
|
|
|
|
|
v4 |
(3,2) |
|
|
|
|
|
v5 |
|
(4,6) |
|
|
|
|
v6 |
|
|
(5,13) |
(1,19) |
|
|
v7 |
|
|
|
(1,10) |
(1,10) |
(1,10) |
d(v3,v1)=7; d(v3,v2)=10; d(v3,v3)=0; d(v3,v4)=2; |
d(v3,v5)=6; d(v3,v6)=9; d(v3,v7)=10.
|
Для побудови дерева мінімальної вартості упорядкуємо ребра в порядку зростання їхніх ваг. Після цього включаємо в остовне дерево ребра в порядку зростання їхніх ваг, якщо знов включене ребро утворить цикл з раніше включеними ребрами, то його пропускають (рис. 7.6).
v v4 – v3 = 2; v1 – v7 = 3; v1 – v2 = 4; |
v4 – v5 = 4; v1 – v4 = 5; v1 – v2 = 6; v2 – v6 = 6; |
v5 – v6 = 7; v6 – v7 = 8; v2 – v4 = 8; v2 – v5 = 9. |
Рисунок 7.6
Завдання 10. Задана транспортна мережа (рис. 7.7). Пропускнi спроможностi дуг, задані номерами j та k вказанi у табл. 6.6. х0 – вхiд мережi, z – вихiд. Знайти найбiльший потiк та найменший розрiз мережi.
Пропускаємо по мережі деякий початковий потік.
Рисунок 7.7
Розмір
початкового потоку у мережі
.
По черзі розглянемо всі шляхи між х0 і z та для кожної дуги обраного шляху знайдемо різницю між пропускною здатністю дуги і потоком, що проходить по дузі. Потім збільшимо потік таким чином, щоб шлях, що веде з х0 у z, містив хоча б одну насичену дугу.
Для кожної дуги обраного шляху додаємо до чисельника мінімальну отриману різницю. В результаті цієї дії хоча б одна дуга шляху стає насиченою. Після цього вибираємо наступний шлях. Повторюємо ці дії доти, поки не одержимо повний потік у мережі.
(рис.
7.8).
;
(рис.
7.9).
;
(рис.
7.10).
;
(рис.
7.11).
.
Всі існуючі і розглянуті шляхи від х0 до z містять потік , який є повним.
Рисунок 7.8
|
Рисунок 7.9
|
Рисунок 7.10
|
Рисунок 7.11
|
Збільшення потоку
мережі знаходиться в розмітці вершин
індексами, що вказують шлях, за яким
можлива зміна потоку. Якщо розмітка
досягає вершини z,
то потік можна збільшити по шляху, що
відповідає отриманій розмітці.
Збільшення потоку можливо доти, поки
в результаті розмічування вершина z
одержує позначки.
Процедура розмітки вершин:
Крок
1. Позначаємо х0
індексом
.
Крок 2. Якщо xi вже має позначку, то:
позначка
приписується всім непозначеним вершинам,
які зв'язані з xi
ненасиченою дугою, що веде з xi
до даної вершини;позначку
отримують усі непозначені вершини,
пов'язані зайнятою дугою, що йде з даної
вершини у вершину xi.
Таким
чином, позначку
отримують усі вершини y,
що задовольняють умовам:
,
у –
непозначена,
отримують усі y,
що задовольняють умовам
,
y –
непозначена.
Крок 3. Якщо в результаті такої розмітки виявиться позначена вершина z, то переходимо до пункту 4. У протилежному випадку потік, який було отримано на попередньому циклі, був максимальним.
Крок
4. Будуємо шлях
від х0
до z,
усі вершини якого відповідають номерам
позначок попередніх вершин з точністю
до знака. Побудова шляху
починається від вершини z.
Потік у всіх дугах шляху
змінюється за такими правилами:
Як
результат отримуємо новий потік у
мережі, який дорівнює
.
Переходимо
до пункту 1. Маємо шлях
,
яким можливе збільшення потоку:
.
Збільшимо потік на 1 по дугах
та зменшимо на 1 – по (х4,х2)
(рис. 7.12).
Рисунок 7.12
Повторимо розмітку.
Одержимо
потік
.
При подальшій розмітці позначки одержують
тільки вершини x0
і x1
(рис. 7.13 – позначки, виділені напівжирною
рамкою).
Рисунок 7.13
Оскільки
розмітка не досягає вершини z,
потік
– максимальний. Для знаходження
мінімального розрізу використовують
позначки, що передаються від входу всіма
можливими способами. Вершини, які при
цьому не одержують позначок, утворять
множину вершин розрізу А.
Позначені вершини утворять множину
.
Усі
дуги, що йдуть з вершин множини
у вершини множини А,
і утворюють мінімальний розріз. У нашому
прикладі:
,
.
Розріз утворить дуги:
.
Пропускна здатність цього розрізу дорівнює сумі пропускних здатностей вхідних у нього дуг, тобто 17.
З прикладу видно, що розмір максимального потоку мережі дорівнює розміру мінімального розрізу, що емпірично доводить теорему Форда-Фалкерсона.

1
– v6
= 2;