You are on page 1of 48

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ


ІМЕНІ СЕМЕНА КУЗНЕЦЯ

Кафедра вищої математики й


економіко-математичних методів

Матеріали лекцій з навчальної дисципліни

«ДИСКРЕТНА МАТЕМАТИКА»

Харків
ХНЕУ ім. С. Кузнеця
2020
Лекція 1. Основи теорії множин

1.1. Початкові відомості, пов'язані з поняттям "множинá"

Теорія множин як математична дисципліна створена німецьким


математиком Георгом Кантором (1845 – 1918 рр.). Поняття "множина" є
одним із первісних понять математики, яким неможливо дати означення,
використовуючи інші математичні поняття.
Під множиною розуміють сукупність об'єктів (предметів), які
об'єднано у цю сукупність за певними ознаками. Об'єкти, що складають
множину, називають її елементами. Наприклад, можна говорити про
множину допитливих у студентській групі, про множину нервових клітин
тіла людини, про множину точок на заданій лінії тощо.
Множини позначають, як правило, великими літерами латинського
або грецького алфавітів, а їхні елементи – малими. Якщо A – множина,
x – її елемент, то пишуть: x  A , де  – символ належності, і
читають: " x належить A ". У протилежному випадку, коли x не є
елементом множини A , пишуть x  A і читають: " x не належить A ".
Будь-яка множина вважається заданою, якщо указано
характеристику її елементів, за допомогою якої стосовно кожного об'єкта
можна сказати, чи належить він цій множині, чи ні.
Існує два способи задання множин:
1) спосіб переліку – це коли вказуються всі елементи, які
складають множину, що розглядається.
Наприклад, A  1, 2, 3, 4, 5; B   2, 4, 6, 8,  ;
2) спосіб опису, який ґрунтується на заданні так званої
характеристичної (визначальної) властивості P(x) елементів x
( x  A ).
Наприклад, множину B   2, 4, 6, 8,   можна задати так:
B   x x  2n, n  N або B   x  N x  парне число, де n –
натуральне число, N – множина натуральних чисел,  – вертикальна
риска – символ, який читається: "які мають властивість".
Відзначимо, що і спосіб переліку, і спосіб опису зручні для задання
множин, які мають відносно невелику кількість елементів. У
протилежному випадку, коли множини мають велику кількість елементів

2
(або взагалі перелічити їх усі неможливо), віддають перевагу способу
опису.
Порожньою множиною називається множина, яка не містить
жодного елемента, і позначається символом  . Множини, які не є
порожніми, природно називати непорожніми множинами.
Наприклад, множина дійсних коренів рівняння x 2  10  0 є
порожньою, бо не знайдеться такого числа із R – множини дійсних
чисел, – щоб його квадрат у сумі з числом 10 давав нуль, тобто
x  R x 2  10  0   .
Множини A , B називають рівними, якщо вони містять одні і ті ж
самі елементи, і пишуть: A  B .
Наприклад, рівними є множини: A   m, n, p ; B   p, m, n ;
C   m, p, p, n  (не зважаючи на те, що елемент p записано двічі).
Щоб не виникало колізій при підрахунку кількості елементів
множини, треба домовитись, що у множині не повинно бути однакових
членів.
Із означення рівності множин випливає, що порядок елементів у
множині несуттєвий (!).
Розглянемо дві непорожні множини A і B . Множину A назвемо
підмножиною множини B , якщо кожний елемент множини A також
належить множині B .
Наприклад, A   a, b є підмножиною B   a, b, c і записують:
A  B.
Якщо A не є підмножиною B , то пишуть: A  B і кажуть: " A не
включається в B ”.
Наприклад,  A  1, 2, B  1, 3, 5  A  B , бо елемент 2 із A не
належить B .
Якщо розглядається декілька множин A1 , A2 , …, Ak , k  N , які є
підмножинами однієї і тієї ж множини A , то цю "найбільшу" множину A
називають основною ( універсальною, або універсумом) і позначають
через I або U .
Наприклад, студентська академічна група є універсумом для
всіляких підмножин: відмінників; спортсменів; студентів, що одержують
стипендію; студентів, що проживають у гуртожитку тощо цієї групи; у

3
планіметрії (стереометрії) універсум U – множина точок площини
(простору).
Розглянемо дві непорожні множини A , B . Якщо кожному елементу
x  A можна поставити у відповідність один елемент y  B , з яким
співставляється елемент x , і навпаки, то кажуть, що між множинами A і
B установлено взаємно однозначну відповідність (або бієкцією), і
пишуть: A  B , де  – символ бієкції.
Наприклад, для множин A   2, 8,16,1, B   0, 3, 4,1 відповідність,
яка описується парами 2,1 , 8, 3 , 16, 4  , 1, 0, є бієкцією, а пари 2,1 ,
8, 3 , 16, 0 , 1, 0 не визначають бієкцію, бо елемент 0 B є
відповідним двом елементам із A : 16 і 1 .
Якщо між елементами двох множин A і B можна установити
бієкцію, то їх називають еквівалентними, і пишуть A  B , де  –
символ еквівалентності.
Множина A називається скінченною (нескінченною), якщо існує
(не існує) таке натуральне число n n  N  , що множина A еквівалентна
множині 1, 2, 3,, n .
Наприклад, множина A   m, p, n, q  є скінченною, бо вона
еквівалентна множині 1, 2, 3, 4 (тут n  4 ).
Як відомо зі шкільної математики, нескінченною множиною є
множина натуральних чисел: N  1, 2, 3,, n, .
Прикладом множини, яка еквівалентна множині N , є множина
парних чисел  2, 4, 6,, 2n,, n  N , оскільки відповідна бієкція
описується парами n, 2n , n  N .
Прикладами інших нескінченних множин є множини: цілих чисел
(додатних, від’ємних і нуля): Z   0,1,2,3, ..., n, ...; дійсних чисел: R ;
точок на прямій, на площині, у просторі, точок деякої поверхні тощо.
Оскільки між множиною R і множиною точок на прямій існує
бієкція, то множину R і її підмножини називають також точковими, а
терміни "дійсне число" і "точка прямої" сприймають як синоніми. З іншого
боку, пряму можна розглядати як геометричне зображення множини
дійсних чисел (рис. 1.1).

4
Рис. 1.1. Числова пряма (вісь)

Нехай a – довільне дійсне число,  – будь-яке додатне число із R ,


тобто   0 . Інтервал a   ; a   називається -околом точки a , де
a – центр околу,  – радіус околу. Точка a деякої множини A
називається ізольованою точкою цієї множини, якщо у неї є окіл, який
не містить інших точок множини A . Множина A , елементами якої є лише
ізольовані точки, називається дискретною (ізольованою) множиною.
Прикладами дискретних множин є знайомі множини: натуральних
чисел N , раціональних чисел Q , будь-які їхні підмножини (скінченні чи
нескінченні).
Дискретна математика (дискретний аналіз, скінченна
математика) – наука, об'єктами вивчення якої є дискретні множини, а
предметом – властивості цих об'єктів, різноманітні відповідності між
ними та застосування їх до побудови математичних моделей реальних
явищ та процесів. Дисципліна "Дискретна математика" включає в себе
розділи: "Основи теорії множин", "Елементи комбінаторики", "Основи
теорії графів" та "Основи математичної логіки".
Нехай маємо скінченну (а значить дискретну) множину A , яка
містить n елементів n  N  . Надалі таку множину A будемо називати
n-елементною множиною, або n-множиною; n -елементна множина з
фіксованим (певним) порядком елементів називається n-елементним
кортежем (кортежем довжини n або n-кортежем). Для позначення
n -кортежа використовують круглі дужки, між якими записують (через
кому або крапку з комою) його елементи.
Приклади: множина букв (слів) у слові (реченні); шеренга
військових, які вишикувані за ранжиром.
На відміну від множини кортежі припускають наявність однакових
елементів: однакові букви в слові, однакові координати вектора тощо.

1.2. Операції (дії) над множинами

Для кращого розуміння і засвоєння відповідного матеріалу будемо


використовувати наочне зображення множин за допомогою кругів
(діаграм) Ейлера – це коли множини зображають на площині у вигляді
кругів, а їхній універсум (він включає в себе усі розглядувані множини) –
прямокутником (рис. 1.2).
5
Теоретико-множинні операції – це один із способів утворення
нових множин із уже заданих. У подальшому множини, які одержуються в
результаті операцій над заданими множинами, зображатимемо
заштрихованими областями.

Рис. 1.2. Діаграма (круги) Ейлера

Об'єднанням множин A і B називається множина C  A  B , яка


містить усі елементи множин A , B і не містить інших елементів
(рис. 1.3), де  – символ об'єднання.

Рис. 1.3. Ейлерова діаграма об'єднання множин

Приклад. Нехай A  1, 2, 3 і B  1, 2, 4, 5 , тоді C  A  B  1, 2, 3, 4, 5.

Перетином множин A і B називається множина C  A  B , яка


містить усі спільні елементи множин A , B і не містить інших елементів
(рис. 1.4), де  – символ перетину.
Якщо A  B   , то кажуть, що множини A і B не перетинаються.

6
Рис. 1.4. Ейлерова діаграма перетину множин

Приклад. Нехай A  1, 2, 3 і B  1, 2, 4, 5, тоді C  A  B  1, 2 .


Різницею множин A і B називається множина C  A \ B , яка
містить усі елементи множини A , що не належать множині B , і не
містить інших елементів (рис. 1.5), де \ – символ різниці.

Рис. 1.5. Ейлерова діаграма різниці множин

Приклад. Нехай A   m, n, p, q, r  і B   m, n, p, тоді C  A \ B   q, r.


Симетричною різницею множин A і B називається множина
C  AB , яка визначається як об'єднання різниць A \ B та B \ A (рис.
1.6), де  – символ симетричної різниці: C  A  B   A \ B   B \ A .

Рис. 1.6. Ейлерова діаграма симетричної різниці множин

Доповненням множини A (до універсальної I)множини


називається множина A , яка є різницею між універсумом і множиною A
7
(рис. 1.7): A  I \ A . Інакше кажучи, A – множина, якій належать усі
елементи універсума, за виключенням елементів множини A , і тільки
вони.

Рис. 1.7. Ейлерова діаграма доповнення множини


Якщо A і B – підмножини деякого універсума I , то їхню різницю
можна подати через операцію доповнення у вигляді:

A \ B  A B.
Приклад: Нехай A  1, 2, 3, B   3, 4, 6, 7, C   4, 5, 6.
Об'єднання цих множин приймемо за універсум:
I  A  B  C  1, 2, 3, 4, 5, 6, 7, тоді A  4, 5, 6, 7.

1.3. Основні закони (властивості) операцій над множинами

Властивості головних операцій , ,  над множинами,


виражені у вигляді тотожностей, називаються законами теорії множин.
Основні закони – закони, яких достатньо для виконання тотожних
перетворень складних формул з метою їх спрощення (табл. 1.).
Таблиця 1.
Основні закони теорії множин

№ Запис закону у символах


Назва закону
п/п для об'єднання для перетину

1 Комутативний A B  B  A A B  B  A
(переставний)

2 Асоціативний A  B  C    A  B   C A  B  C    A  B   C
(сполучний)

3 Дистрибутивний A  B  C    A  B    A  C  A  B  C    A  B    A  C 
(розподільний)
Виключення
4 A A I
третьої можливості

8
5 Суперечності A A

6 Ідемпотентності A A A A A A

7 Де Моргана A B  A B A B  A B
A    A, A  I  I , A    , A  I  A,
Поглинання
A   A  B  A A   A  B  A
8

9 Склеювання  A  B  A  B  A  A  B  A  B  A
Подвійного
10
доповнення A A
Приклад. Доведемо рівність:

A \ B   C   A  C  \  B  C .
 
L P

За допомогою законів 1 – 10 рівності L  P доводяться так: із лівої


частини L тотожними перетвореннями одержують праву частину P , чи,
навпаки, або ліву і праву частини зводять до однієї і тієї ж формули.
У нас:

 
L   A \ B  C  X \ Y  X  Y  A  B  C  A  B  C .

P   A  C  \ B  C   X \ Y  X  Y   A  C   B  C  

 
 X  Y  X  Y   A  C   B  C  X  (Y  Z )  ( X  Y )  ( X  Z ) 
   
 A  C  B  A  C  C  X  X  , X     

 
 AC  B   X     A B C .

Отже, L  P  A  B  C , тобто L і P рівносильні формули.

Для доведення властивостей множин, які містять символ


включення (  ,  ,  ,  ), дуже корисним є ланцюжок рівносильних
співвідношень:

A  B  A  B  B  A  B  A  A \ B  .

Наприклад, покажемо справедливість співвідношення:

9

A  B   C  A  B  C   C  A .
 
P L

Дійсно, маємо:

P  L  P  A  L  A   A  B   C   A   A  B  C   A 
  X  Y   Z   X  Z   Y  Z  

   
  A  B   A  C  A   A  B  C   A  X  X  , X     

   C  A    X    X  C  A    C \ A    C  A .

Навпаки:

C  A   A  B   C   A  C   B  C   A  B  C  .
Аналізуючи табл. 1.1 за стовпцями, помічаємо, що тотожності для
перетину (об'єднання) можна одержати з тотожностей для об'єднання
(перетину), якщо символ  замінити на  і навпаки, а символ 
замінити на символ I і навпаки.
Пари символів  ,  і  , I називаються двоїстими символами.

Лекція 2. Елементи комбінаторного аналізу

2.1. Комбінаторика: предмет, основні задачі, основні правила

Комбінаторний аналіз (комбінаторика, теорія сполук) –


галузь математики, предметом якої є теорія скінченних множин.
Основні задачі комбінаторного аналізу:
1) визначення числа і виду підмножин даної множини або кортежів,
складених з елементів множини, розрізнювальних у деякому сенсі;
2) визначення числа способів, якими можна здійснити деякий вибір.
Нехай A1 , A2 ,, Ak – скінченні множини з кількістю елементів
n1 , n2 ,, nk відповідно. Значне число теорем і формул комбінаторного
аналізу базується на двох правилах.
Правило добутку. Якщо елемент x1 можна вибрати n1 способами
і після кожного такого вибору x1 елемент x 2 можна вибрати n2

10
способами; після вибору x1 і x 2 елемент x3 можна вибрати n3 способами
і т.д., нарешті, елемент x k можна вибрати n k способами незалежно від
вибору всіх попередніх елементів, то вибір кортежу  x1 , x 2 ,, x k  можна
здійснити П  n1  n2    nk способами.
Наприклад, якщо у шухляді 6 видів головного вбрання  x , 5 –
верхнього одягу  y  , 4 – взуття  z  , то комплект x, y, z  можна скласти
120 способами: П  6  5  4  120 .
Правило суми. Якщо деякий елемент x1 можна вибрати n1
способами, а елемент x 2 – n2 способами, причому ніякий спосіб вибору
x1 не збігається з жодним із способів вибору x 2 ; елемент x3 можна
вибрати n3 способами, причому ніякий вибір x1 , x 2 не збігається з
вибором x3 і т. д., нарешті, елемент x k – n k способами, які не збігаються
зі способами вибору x1 , x2 ,, xk 1 , то вибір x1 або x 2 або ... x k можна
здійснити S  n1  n2    nk способами.
Наприклад, підрахуємо, скільки існує чисел, кратних 3 або 7 , серед
перших двадцяти натуральних чисел n  20 :
A  1, 2, ..., 20  ( A1  3, 6,..., 18   3n1 – множина чисел,
6

A2  7,14  7n 1 – множина чисел, кратних 7 ) 


2
кратних 3 ;

 A1  A2    S   20    20   6  2  8 , де   – ціла частина числа.


 3   7 
Якщо б множини A1 , A2 мали спільні елементи  A1  A2    , то
треба враховувати кількість n12 таких елементів, щоб не рахувати їх
двічі, і тоді S  n1  n2  n12 . Отже, якщо взяти A  1, 2, ..., 30 n  30 ,

то S        
30 30 30   10  4  1  13 , бо число 21 можна вибрати
 3   7   3  7 
як число, кратне 3 , і як число, кратне 7 , а враховувати його треба тільки
один раз.

2.2. Комбінаторні конфігурації: означення, основні типи

Нехай A   x1 , x2 ,, xn  – n -елементна множина. Будь-яка


множина (упорядкована, неупорядкована), складена з елементів
11
множини A у відповідності з заданими вимогами (деяким правилом,
законом), називається комбінаторною конфігурацією, або сполукою.
До основних конфігурацій відносять переставлення, розміщення,
комбінації (без повторень і з повтореннями).
Переставленням з n елементів називається будь-який
n -елементний кортеж, який одержується при різних упорядкуваннях
n -елементної множини.
Число всіх переставлень з n елементів позначають символом Pn і
знаходять за формулою:

Pn  n ! 1  2  3    n . (Нагадаємо, що 0 ! 1; 1! 1 ).

Наприклад, множина A   a, b, c породжує такі переставлення:


a, b, c  , a, c, b , b, a, c  , b, c, a  , c, a, b , c, b, a  ; P3  3! 1  2  3  6 .
Відзначимо, що переставлення відрізняються одне від одного
тільки порядком розташування елементів.
Розміщенням з n елементів по m m  n  називається будь-який
m -елементний кортеж, складений із елементів n -множини.
Число всіх розміщень з n елементів по m позначають символом
Anm і знаходять за формулою:
n!
Anm  n  n  1    n  m  1  .
n  m!
Відзначимо, що розміщення відрізняються одне від одного або
порядком розташування елементів, або самими елементами (хоча б
одним). Переставлення можна розглядати як розміщення з n елементів
по n і Pn  Ann .
Приклад. Множина A   a, b, c n  3 породжує такі розміщення з
трьох елементів по два: a, b  , a, c , b, c  , b, a  , c, a , c, b  ; A32  3 2  6 .
Комбінацією з n елементів по m m  n  називається будь-яка
m -елементна підмножина n -множини.
Число всіх комбінацій з n елементів по m позначають символом
Cnm і знаходять за формулою:

12
Anm n  n 1 n  m  1 n!
Cnm   
m!n  m !
.
Pm 1 2  m

Приклад. Множина A  a, b, c n  3 породжує такі комбінації з

трьох елементів по два: a, b, a, c, b, c; C32  3 2  3 .
1 2
При розв'язанні застосовних задач доводиться стикатися з
кортежами, елементи яких повторюються: код Морзе – кортеж з
елементів множини {крапка (), тире (–)}; інформаційний код в ЕОМ –
кортеж з елементів множини 0,1; слово в лінгвістиці – рядок з літер
абетки тощо.
Нехай A   x1 , x2 , , xn  – деяка n -множина (основна множина),
кожний елемент якої xi можна вибрати будь-яке скінченне число разів

k i , i  1, n . Якщо здійснено вибірку об'єму m , в якій елемент x1


повторюється k1 разів, x 2 – k 2 разів, ..., x n – k n разів, то кажуть, що ця
вибірка ( m -кортеж) має специфікацію k1 , k 2 ,, k n  , тобто

k1 , k 2 ,, k n  :  
x1 x1 x1
 
x x2 x2  xn xn xn  – m -кортеж, де
2  
k1 k2 kn
n
k1  k 2    k n   k i  m .
i 1

Переставленням з повтореннями з n елементів по m


називається будь-який m -кортеж із заданою специфікацією
k1 , k 2 ,, k n  , утворений з елементів n -множини. Число всіх
переставлень складу k1 , k 2 ,, k n  з n елементів по m позначають
символом Pm k1 , k 2 ,, k n  і знаходять за формулою:
m!
Pm k1 , k 2 ,, k n   .
k1! k 2 !k n !
Зауваження:
1. На елементи специфікації k i , i  1, n , а, отже, і на число m  N ,
ніякі обмеження в загальному випадку не накладаються.
2. Переставлення з повтореннями, як і переставлення без
повторень, відрізняються одне від одного лише порядком розташування
елементів і мають один і той самий склад елементів.
13
Приклад. Множина A  {x1, x2 }  {a, b} , (n  2) породжує такі
переставлення з повтореннями специфікації (k1, k2 )  (2, 2) , (m  4) :
(aabb) , abab, baba, bbaa, abba , baab ;
4! 1 2  3 4
P4 2, 2   6.
2! 2! 1 2 1 2
Розміщенням з повтореннями з n елементів по m називається
будь-який m -кортеж, складений з елементів n -множини.
m
Число всіх розміщень з повтореннями позначають символом A n і
знаходять за формулою:
m
A n  nm .
Зауваження:
1. Розміщення з повтореннями, як і розміщення без повторень,
відрізняються одне від одного або порядком розташування елементів,
або самими елементами (хоча б одним);
2. На число m  N , в загальному випадку, ніякі обмеження не
накладаються, тобто може бути m  n , m  n , m  n .
Приклад. Множина A  {a, b} (n  2) при m  3 породжує такі
розміщення з повтореннями: (aaa) , (aab) , (aba) , (baa) , (abb) , (bab) ,
3
(bba) , (bbb) ; A 2  23  8 .
Будемо говорити, що m -кортежі, складені з елементів n -множини,
утворюють клас еквівалентності, якщо вони мають однаковий склад
елементів (однакову специфікацію). Згідно з наведеним вище прикладом
маємо такі чотири класи еквівалентності:
aaa ;
aab, aba , baa ;
abb, bab , bba ;
bbb ,
кожен з яких, як бачимо, є переставленням з повтореннями певного
складу.
Комбінацією з повтореннями з n елементів по m називається
будь-який клас еквівалентності на множині m -кортежів, складених з
елементів n -множини. Інакше, комбінація з повтореннями – це
множина переставлень з повтореннями певного складу. Зрозуміло, що

14
комбінації з повтореннями відрізняються одна від одної тільки складом
елементів, порядок розташування елементів значення не має.
Число всіх комбінацій з повтореннями з n елементів по m
m
позначають символом C n і знаходять за формулою:

C n  Pnm1 m, n 1 


m n  m 1!  C m .
m! n 1! n m1

Загальні рекомендації щодо розв'язання задач


на відшукання числа основних конфігурацій

Розв'язання задач на знаходження числа переставлень, розміщень,


комбінацій без повторень доцільно проводити за наступною схемою:
1) визначаємо число елементів (потужність, об'єм) основної
множини (чи декількох основних множин);
2) підраховуємо число елементів, які входять у вибірку (тобто
довжину рядка або потужність підмножини);
3) з'ясовуємо, які вибірки нам потрібні (упорядковані чи
неупорядковані);
4) при підрахунку числа кортежів (підмножин) використовуємо
 
формули (формулу) для Pn , Anm Cnm .
Задача. Для участі в конкурсі танцюристів треба з 10 хлопців і 10
дівчат виділити дві пари: дует бального танцю і дует сучасного танцю.
Скількома способами це можна зробити, якщо всі хлопці і всі дівчата
вміють танцювати як бальні, так і сучасні танці?
Розв'язання. Маємо дві основні множини: X ( D ) – множина хлопців
(дівчат); P( X )  P( D)  10 . У кожній із них нас цікавлять 2 -елементні
кортежі, бо один і той самий хлопець (чи дівчина) в різних дуетах дають
різні варіанти вибору пар. Із 10 хлопців одного виконавця бального
танцю і одного виконавця сучасного танцю можна вибрати 2
A10
способами. Аналогічно маємо 2 способів вибрати виконавців із
A10
множини дівчат. За правилом добутку знаходимо загальне число S
способів виділення дуетів бального і сучасного танців:
2  A2  10  92  810 .
S  A10 10
При розв'язанні задач на відшукування числа розміщень,
переставлень, комбінацій з повтореннями рекомендуємо:
15
1) усвідомити, про що йдеться –
про підрахунок числа всіх кортежів певної довжини;
про підрахунок числа кортежів заданого складу (специфікації) чи
про підрахунок числа можливих складів кортежів;
2) у першому випадку встановити довжину потрібного кортежу і
m
застосувати формулу для A n ; у другому – знайти склад вибірки з
елементів основної множини і використати формулу для
Pm (k1, k2 ,, kn ) ; у третьому – знайти число елементів основної
m
множини, об'єм вибірки і використати формулу для C n .
Задача. Є п'ять крісел 1) різного виду; 2) однакового виду.
Скількома способами можна розставити ці крісла уздовж трьох стін за
умов, що всі крісла можна поставити уздовж однієї стіни і не важливо, як
стоятимуть крісла: поруч чи на деякій відстані одне від одного?
Розв'язання.
1. Введемо позначення: C  {c1 , c2 , c3} (n  3) – множина стін
(основна множина), K  {k1 , k 2 , k3 , k 4 , k5 } (m  5) – множина крісел.
Складаються 5 -кортежі, бо крісла (за умовою) різні. Кожний елемент k j ,

j  1, n можна вибрати трьома способами. Отже, загальне число


m 5
способів S  A n  A 3  3  3  3  3  3  243. Наведемо деякі кортежі
розташування крісел:  1 1 1 1 1 – усі крісла стоять уздовж c1 ; 1 3 1 2 1 –
перше, третє, п'яте крісло – уздовж c1 , друге – уздовж c3 , четверте –
уздовж c 2 .
2. Оскільки крісла однакові (за умовою), то їх порядок
розташування не має суттєвого значення. Отже, нам потрібне число
m 5
можливих складів кортежів: S  C n  C 3  C75  C72 
76 21.
1 2
Абстрагуючись від природи об'єктів, які розглядаються при
розв'язанні задач комбінаторики, застосовують так звану модель
комірок (урн, ящиків) і куль (предметів): елементи основної множини A
– комірки, елементи кортежів (чи підмножин A ) – кулі.
В розглянутій вище задачі: комірки – це стіни, кулі – це крісла.
Тлумачення числа конфігурацій з повтореннями на мові "комірок –
куль" виглядає так:

16
m
A n – це число способів, якими можна розкласти m різних
предметів по n ящиках;
Pm k1 , k 2 ,  , k n  – це число способів, якими можна розкласти m
різних куль по n комірках так, щоб до i -тої комірки потрапило k i куль
i  1, 2, , n ;
m
C n – це число способів, якими можна розкласти m однакових
предметів по n ящиках.

Лекція 3. Основи теорії графів

3.1. Неорієнтовані графи: основні означення, способи задання

Неорієнтованим графом, або просто графом, називається пара


G   X ,U , де X   x1 , x2 , , xn  – непорожня скінченна множина деяких
об'єктів (елементів), U  u1 , u 2 , , u m  – множина неупорядкованих пар,
складених з елементів множини X ( u j   xi , xk ; i, k  I x  1, 2,, n,
j  I u  1, 2,, m; I x , I u – множини індексів). Об'єкти множини X U 
називають вершинами (ребрами) графа.
Вершини xi , x k , які визначають ребро u j   xi , xk  , називають
граничними вершинами ребра, або кінцями ребра. Якщо вершина xi є
кінцем ребра u j , то кажуть, що вершина xi та ребро u j інцидентні. Два
ребра називаються суміжними (сусідніми), якщо вони інцидентні одній і
тій самій вершині. Дві вершини називають суміжними (сусідніми), якщо
вони інцидентні одному і тому ж ребру. Вершина, не інцидентна жодному
ребру, називається ізольованою, а вершина, інцидентна тільки одному
ребру, – кінцевою. Ребро, кінці якого співпадають, називають петлею.
Ребра, які мають спільні граничні вершини, називають кратними, або
паралельними.
У залежності від того, в якому вигляді подають пару  X ,U  , існують
різні способи задання графів.
Теоретико-множинний спосіб – це коли дають перелік (список)
ребер графа u j  {xi , xk } ; i, k  I x , j I u , до якого додають список
ізольованих вершин.

17
Геометричне задання графів: кожній вершині графа відповідає
точка із R 2 чи R 3 , кожному ребру – прямолінійний або криволінійний
відрізок, що з'єднує інцидентні ребру вершини. Як правило, намагаються
зобразити граф так, щоб його ребра перетиналися тільки в їхніх
граничних вершинах.
Матричне зображення графів. Матриця A  [aij ] розміру n m , де
aij  1, якщо вершина xi інцидентна ребру u j ( xi u j ) , і aij  0 , якщо
вершина xi не інцидентна ребру u j ( xi u j ) , називається матрицею
інциденцій графа (з n вершинами і m ребрами).
Квадратна матриця B  [bij ] порядку n , де bij – число ребер з
вершинами xi , x j ; i, j  I x , називається матрицею суміжності
вершин графа. Матриця B – симетрична матриця (bij  b ji ) , яка також
однозначно описує неорієнтований граф.
Приклад задання графа G  ( X ,U )  ({xi }15 ,{u j }16 ) :
а) теоретико-множинне задання графа –

 u1   x1 , x2 , u 2   x2 , x2 , u3   x2 , x3 , u 4   x3 , x4 , u5   x3 , x4 ,u 6   x1 , x3 ; x5  ;
б) геометричне зображення цього ж графа подано на рис. 3.1:

Рис. 3.1. Геометричне зображення графа

в) матриці інциденцій A і суміжності вершин B мають вигляд:


u1 u2 u3 u4 u5 u6 x1 x2 x3 x4 x5
x1 1 0 0 0 0 1 x1 0 1 1 0 0
x2 1 1 1 0 0 0 x2 1 1 1 0 0
A  x3 0 1 B  x3 1 0 .
,
0 1 1 1 1 0 2
   
x4  0 0 0 1 1 0 x4 0 0 2 0 0
x5 0 0 0 0 0 0 x5 0 0 0 0 0

18
3.2. Маршрути. Відшукання ланцюгів мінімальної довжини

Нехай G   X ,U  – неорієнтований граф; xi , x j – його довільні


вершини. Маршрутом у графі G , що з'єднує вершини xi , x j ,
називається така скінченна послідовність суміжних ребер (не обов'язково
різних), що кожна гранична вершина (можливо, крім xi , x j ) будь-якого
ребра інцидентна принаймні двом ребрам.
Наприклад, у графі на рис. 3.1 можемо виділити такий маршрут, що
з'єднує вершини x1 , x 2 :
12  u 6 , u 4 , u5 , u 6 , u1    x1 , x3 ,  x3 , x4 ,  x4 , x3 ,  x1 , x3 ,  x1 , x2  .
Маршрут можна також записати як послідовність вершин, через які
він проходить: 12   x1  x3  x4  x3  x1  x2 .
Довжиною маршруту називається число ребер у ньому; однакові
ребра лічать стільки разів, скільки разів вони входять у маршрут.
Довжину маршруту  позначають через l  . Так, у нашому прикладі:
l  12   5 .
Маршрут, що з'єднує вершини xi , x j , називають замкненим
(незамкненим), якщо вершини xi , x j співпадають (не співпадають).
Незамкнений (замкнений) маршрут, всі ребра в якому різні,
називається ланцюгом (циклом). Ребро (петля) – це ланцюг (цикл)
одиничної довжини.
Ланцюг (відповідно цикл), у якому всі вершини різні, називають
простим, або елементарним.
У графі на рис. 3. 1, наприклад, маємо:
14  (u1 , u3 , u4 )  ( x1  x2  x3  x4 ) – простий ланцюг;
11  (u1 , u3 , u6 )  ( x1  x2  x3  x1 ) – простий цикл;
13  (u1, u2 , u3 )  ( x1  x2  x2  x3 ) – ланцюг (не простий).
Граф називають зв'язним, якщо будь-які дві його вершини можна
сполучити (з'єднати) хоча б одним ланцюгом. У протилежному випадку
кажуть, що граф незв'язний.

19
У практичних застосуваннях має велике значення задача
відшукання найкоротшого ланцюга між двома вершинами зв'язного
графа. До такої задачі зводяться задачі вибору найбільш економічного (з
точки зору відстані або часу або вартості) маршруту між двома
об'єктами.
Задача про найкоротший ланцюг на графі в загальному вигляді
може бути сформульована таким чином: задано неорієнтований граф
G   X ,U  , кожному ребру {xi , x j } якого приписано деяке дійсне число
d ( xi , x j )  d (i, j )  dij  0 , яке називають довжиною ребра. (Залежно від
конкретного застосування це число може бути мірою фізичної відстані,
ваги, вартості або іншого важливого параметра). Треба для двох
довільних вершин x , x знайти в графі G ланцюг L  L , такий,
щоб сумарна довжина його ребер d була мінімальною:
L

d L   d ij  min . (3.1)
( xi , x j )L

Надалі (для визначеності) домовимося одну з граничних вершин


x , x ланцюга L(, ) називати початковою, другу – кінцевою;
нехай x  G – початкова вершина. При геометричному зображенні, як
правило, вершину x розташовують лівіше вершини x .
Існує декілька методів розв'язання сформульованої задачі.
Розглянемо один із них.
Метод індексації (зважування) вершин полягає в наступному:
1. Початкова індексація вершин.
Кожній вершині xi графа приписується певне число p i , яке звуть
індексом (вагою) вершини. Спочатку кінцевій вершині x приписують
вагу p  0 , а решті вершин – вагу pi    i   .
2. Поновлення індексів (переіндексація) вершин.
На кожному наступному (після початкового зважування) кроці
шукаємо ребро {xi , x j }, для якого p j  pi  d ij , і замінюємо індекс p j
новим індексом p нj  pi  d ij (зауважимо, що p нj  p j ). Продовжуємо
процес заміни індексів до тих пір, поки не залишиться хоча б одна
вершина, індекс якої можна зменшити.
20
3. Відшукання власне найкоротшого ланцюга. Відштовхуючись від
початкової вершини x з індексом p , знаходимо вершину x i , для якої
1

p  pi1  d , i1 . Далі знаходимо вершину x i2 , для якої


pi1  pi2  d  i1, i2 , і т. д., поки не дійдемо до кінцевої вершини
x ik 1  x . Ланцюг L (, )  ( x  x i1  x i2    x ik  x  ) , довжина якого
дорівнює вазі початкової вершини d L  p , є найкоротшим, тобто
L,   L .
Приклад. Розглянемо семивершинний граф (рис. 3.2), покладаючи
,  1, 7. Після проведення процесу зважування вершин одержуємо
індекси, які вказано в кружках (переконайтеся).

Рис. 3.2. Граф зі зваженими (проіндексованими) вершинами


та найкоротшим ланцюгом на ньому
Найкоротший ланцюг L1 1,7  x1  x2  x4  x6  x7  позначено

пунктирною ламаною. Ланцюг L2 1,7  x1  x2  x5  x6  x7  теж


оптимальний. Довжини обох ланцюгів рівні: d
L1
 d L  p1  8 .
2

3.3. Дерева. Побудова економічного дерева

Зв'язний (незв'язний) граф без циклів називають деревом (лісом).


Стосовно дерев мають місце твердження:
1) кожне дерево, яке містить (покриває) n вершин, має n  1-е
ребро;

21
2) число всіх дерев, які покривають n заданих вершин, дорівнює
n n2 .
Часто дерева розглядають не самі по собі, а у взаємозв'язку з
графами більш складної структури.
Частина графа G , яка містить всі його вершини і являє собою
дерево, називається кістяком (покривним деревом) графа G . Щоб
одержати кістяк графа G з n вершинами і m ребрами (який містить
цикли), треба вилучити з нього m  n  1 -е ребро.
Задача побудови економічного (екстремального) дерева. У
багатьох задачах практичного характеру потрібно зв'язати деякі об'єкти
(міста, села, будинки, підприємства і т. ін.) найбільш економічним чином
з точки зору відстані, часу, вартості і т. ін.
Мовою теорії графів ця задача формулюється в загальному вигляді
таким чином: нехай G  ( X ,U ) – зв'язний граф, кожному ребру {xi , x j }
якого поставлено у відповідність дійсне число d ij  0 – довжину цього
ребра. Треба побудувати покривне дерево T графа G так, щоб сумарна
довжина його ребер dT була мінімальною:

dT   dij  min . (3.2)


xi , x j T

Кожне дерево, яке задовольняє умову (3.2), називають економічним.


Існує дуже простий спосіб побудови економічного дерева, який
базується на послідовному введені в нього ребер з пріоритетом за
мінімумом їх довжин:
1. Вибираємо ребро найменшої довжини (якщо таких ребер
декілька, то беремо будь-яке з них).
2. Додаємо (приєднуємо) на кожному наступному кроці найкоротше
з ребер, при долученні якого до вже обраних ребер не утворюється
ніякого циклу;
3. Процес закінчується, як тільки буде обрано (n  1) ребер.
Приклад. Розглянемо п'ятивершинний граф, в якому кожні дві різні
вершини суміжні (графи з такою властивістю називають повними). У
цього графа кількість ребер дорівнює C52  10 , а покривних дерев можна
побудувати 53  125. Одержуємо шукане економічне дерево згідно з
наведеним алгоритмом: обрані ребра позначені поперечними рисками
22
(рис. 3.3-а). На рис. 3.3-б зображено знайдене покривне дерево,
упорядковане за рівнями вершин за умови, що його корінь – вершина x3 .

а) б)

Рис. 3.3. Побудова екстремального дерева:


а) заданий граф та екстремальне дерево на ньому;
б) економічне дерево з коренем у x 3 , упорядковане за рівнями вершин

Можна вказати ще один кістяк мінімальної довжини, якщо в


знайденому дереві замінити ребро {x1 , x2 } ребром {x2 , x3 } .

3.4. Орграфи: основні означення, способи задання

Орієнтованим графом (орграфом) називається пара G  ( X ,U ) ,


де X  {xi } 1n – непорожня скінченна множина деяких об'єктів

(елементів), U  {u j }1m – множина упорядкованих пар, складених з

елементів множини X ( u j  ( xi , xk ) ; i, k {1, 2, ...,n} , j  1, 2,, m.


Як бачимо, єдиною структурною відмінністю означення графа і
орграфа є той факт, що в графі розглядаються неупорядковані пари
{xi , xk }  {xk , xi } , а в орграфі – упорядковані пари ( xi , xk )  ( xk , xi ) . Саме
це дозволяє іноді з деякими змінами перенести на орграфи поняття і
терміни, які використовують при вивченні неорієнтованих графів.
Наведемо деякі відповідні терміни:

23
ребро {xi , xk }  орієнтоване ребро (орребро), або просто дуга
( xi , xk ) , що виходить з вершини xi і заходить у вершину xk ; xi  xk  –
початок (кінець) дуги;
маршрут  x1  x2    xk   ормаршрут  x1  x2    xk  ;
ланцюг  орланцюг, або шлях;
цикл  орцикл, або контур.
Способи задання орграфів такі ж, як і графів, але з певними змінами.
При теоретико-множинному способі наводиться перелік
упорядкованих пар ( xi , xk ) ; i, k {1, 2, ...,n} , і ізольованих вершин.
При геометричному – вершини орграфа зображають в R 2 чи R 3
точками, а дуги ( xi , xk ) – стрілками, які йдуть у напрямі від xi до x j .
При матричному заданні орграфів елементи матриці інциденцій
A  [aij ] n m визначаються так:

 1, якщо xi  початок u j ;

aij   1, якщо xi  кінець u j ;
 0, якщо xi не інцидентна u j або u j  петля ,

при цьому ізольованій вершині відповідає нульовий рядок, а петлі –
нульовий стовпець.

3.5. Сіткові графіки (СГ), задача відшукання критичного часу


і критичного шляху на СГ

Орграфи, як і графи, мають численні застосування в задачах


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

24
(людських, технічних, енергетичних, фінансових тощо), термінів
виконання і т. ін.
Нехай визначено комплекс робіт U  {u1 , u 2 ,  , um }, необхідних
для реалізації даного проекту, і множину подій X  {x0 , x1 ,..., xn } , де x0 –
початок, x n – кінець, xi i  0, n  – проміжні події.
Задачі, в яких ставиться питання про відшукання мінімального часу
виконання всіх робіт комплексу U , називаються оптимізаційними
задачами за критерієм часу.
Орієнтований зв'язний граф G   X , U  без петель і контурів, який
відображає природний порядок виконання робіт комплексу U в часі, в
поєднанні з певними числовими даними – характеристиками проекту, –
називається сітковим графіком (СГ) комплексу робіт (даного проекту).
Перш ніж будувати СГ, треба скласти структурно-часову
таблицю: перелік подій і робіт комплексу, місце роботи в комплексі, її
технологічні зв'язки з іншими роботами, терміни виконання робіт, інші
числові характеристики (витрати ресурсів, кількість виконавців і т. ін.)
Наведемо найважливіші правила побудови СГ:
1. Скласти структурно-часову таблицю.
2. Зобразити в R 2 чи R 3 роботи дугами, над (під) якими вказують
потрібний для їх виконання час, а події – кружками, в яких записують
порядковий номер події. (Подія як результат виконання попередніх робіт
є передумовою виконання наступних операцій).
3. У СГ не повинно бути (згідно з означенням) контурів і петель, а
також проміжних подій (крім кінцевої x n ), які не дають початку ніякій
роботі, і таких проміжних подій (крім початкової x0 ), яким не передує
ніяка робота.
4. У СГ уникають наявності паралельних дуг, що відповідає
одночасно виконуваним роботам між двома подіями.
Для спрощення формального опису розрахунків в СГ G  ( X ,U )
домовимось вершини (події) xi , xk  X називати за їх номерами i, k
( i, k {0, 1, , n}) , а дуги (роботи) розглядати як пари (i, k ) .
Введемо позначення:

25
 U  – множина робіт, які починаються (закінчуються) подією
U  
i  k 
i  k ;
t (i) – час, який пройшов від нульової події до моменту, коли
настала подія i – строк звершення події i ;
t (i, k ) – тривалість роботи (i, k ) , яка починається подією i і
закінчується подією k .
Раннім строком t p (k ) звершення події k називають найменший
можливий час настання події k за умови, що всі попередні події
відбуваються без затримки. Якщо подією k закінчується одна робота
(i, k ) , то: t p (k )  t p (i)  t (i, k ) ; якщо ж подією k закінчується кілька робіт,
то за кожною роботою знаходять свій ранній строк, а шуканим t p (k )
буде максимальний з них:
t p (k )  max {t p (i)  t (i, k )}. (3.3)
(i , k )  U
k

Пізнім строком tп (i ) звершення події i називають найбільший


можливий час настання події i за умови, що всі наступні події
відбуваються без затримки. Якщо подією i починається одна робота
(i, k ) , то: tп (i)  tп (k )  t (i, k ) ; якщо ж подією i починаються кілька робіт,
то за кожною роботою знаходять свій пізній строк, а шуканим tп (i ) буде
мінімальний з них:
tп (i)  min {tп (k )  t (i, k )}. (3.4)
i , k  U
i

Резервом часу R(i) події i називається різниця між пізнім і раннім


строками звершення цієї події:

R(i)  tп (i)  t p (i) . (3.5)

Резерв R(i) показує, на який найбільш можливий час можна


затримати звершення події i за умови, що це не спричинить затримку
завершення всього проекту. Звичайно, настання початкової і кінцевої
подій в СГ не може затримуватись, тому R(0)  R(n)  0 , тоді:

26
t p (0)  tп (0) , t p (n)  tп (n) . (3.6)

З нульовим резервом часу можуть бути і проміжні події; саме вони


визначають найбільш відповідальні події і роботи в СГ, стежачи за
виконанням яких можна тримати в полі зору хід виконання всього
проекту.
Мінімальний час виконання всіх робіт даного комплексу називають
критичним строком (часом) t kp . Він визначається раннім строком
t p (n) звершення кінцевої події (а згідно з (3.6) – і пізнім строком tп (n) ):

tkp  t p (n)  tп (n) . (3.7)

Орланцюг (шлях)  on довжини t kp , який проходить через вершини


з нульовим резервом часу, називають критичним шляхом  kp в СГ:

l ( кр )  tkp . (3.8)

Отже, критичний шлях – це найдовший у часі орланцюг робіт, які


ведуть від початкової до кінцевої події. Усі роботи і події, які лежать на
критичному шляху, теж називаються критичними, решта робіт і подій в
СГ – некритичними.
Підсумовуючи розглянуте, ми зможемо розв'язати задачу
відшукання критичного часу і критичного шляху на СГ G  ( X ,U )
заданого комплексу робіт.
Розрахунки проводять в чотири етапи.
І етап. Обчислення ранніх строків звершення подій: рухаються по
СГ від початкової події до наступних в порядку зростання їх номерів і
знаходять за формулою (3.3) t p (k ) k  I x  {0, 1,, n} , при цьому
tkp  t p (n) .
ІІ етап. Обчислення пізніх строків звершення подій: рухаються по
СГ від кінцевої події до попередніх в порядку спадання їх номерів і за
формулою (3.4) знаходять tп (i ) i  I x , з урахуванням, що tп (n)  t p (n) .
ІІІ етап. Підрахунок резервів часу подій: за формулою (3.5)
знаходять різницю між пізніми і ранніми строками подій.

27
ІV етап. Визначення критичного шляху: рухаючись від x0 до x n ,
відшукують орланцюг довжини t kp , події якого мають нульовий резерв
часу (критичні події); це визначає відповідні критичні роботи і критичний
шлях у цілому.
Приклад. Знайти критичній час t kp і критичний шлях  kp на
сітковому графіку, зображеному на рис. 3.4.

Рис. 3.4. Сітковий графік до прикладу

Для зручності здійснення етапів І – IV кожну подію зобразимо


кружком, поділеним на чотири сектори. У верхньому секторі запишемо
номер i події, в лівому в міру обчислення будемо записувати ранній
строк t p (i ) звершення події i , в правому – пізній строк tп (i ) , в нижньому
– резерв R(i) часу події (рис. 3.5). Результати підрахунків для
визначення t kp і  kp подано на СГ, зображеному на рис. 3.6.

Рис. 3.5. Зображення вершин Рис. 3.6. Результати підрахунків


(подій) СГ для визначення t kp ,  kp
За формулою (3.3) за вхідними дугами знаходимо ранні строки:

28
t p  1  t p 0  t 0,1  0  3  3 ;
 
t p 2  max t p 0  t 0, 2, t p  1  t  1, 2  max 0  6, 3  0  6 ;
t p 3  max t p 0  t 0, 3, t p 2  t 2, 3  max 0  4, 6  1  7 ;
t p 4  max t p 1  t 1, 4, t p 2  t 2, 4, t p 3  t 3, 4 
 max 3  5, 6  9, 7  6  15;
 
t p 5  max t p 3  t 3, 5, t p 4  t 4, 5  max7  5, 15  8  23  tkp .

За формулою (3.4) по вихідним дугам підраховуємо пізні строки:

tп 5  t p 5  23 ;
tп 4  tп 5  t 4, 5  23  8  15 ;
tп 3  min tп 4  t 3, 4, tп 5  t 3, 5  min15  6, 23  8  9 ;
tп 2  min tп 3  t 2, 3, tп 4  t 2, 4  min 9  1, 15  9  6 ;
tп 1  min tп 2  t 1,2, tп 4  t 1, 4  min 6  0, 15  5  6 ;
tп 0  min tп 1  t 0,1, tп 2  t 0, 2, tп 3  t 0, 3 
 min 6  3, 6  6, 9  4  0 ;
Знаходимо резерви часу подій:

R0  0, R1  3, R2  0, R3  2, R4  0, R5  0 .

Критичному часу t kp  23 відповідає критичний шлях


 kp  0  2  4  5 , який зображено подвійною ламаною.
У розглянутому прикладі критичний шлях виявився єдиним.

3.6. Транспортні мережі (ТМ): основні означення, відшукання


повного та максимального потоку

Транспортною мережею (ТМ) називається орграф G   X ,U 


без контурів і петель – такий, у якому:
1) існує єдина вершина x0  X тільки з додатно інцидентними
дугами ( x0 – вхід сітки);

29
2) існує єдина вершина xn  z  X тільки з від'ємно інцидентними
дугами ( z – вихід сітки);
3) кожній дузі u  U поставлено у відповідність ціле невід'ємне
число c(u ) , назване пропускною спроможністю дуги.
Якщо x  X – довільна вершина ТМ, то позначимо множину дуг, які
 
заходять у x через U x , а через U x – множину дуг, які виходять з x .
Потоком по дузі u  ( x, y) , x, y  X , або дуговим потоком,
називається числова цілозначна функція дуги (u ) , яка задовольняє
умови:

1) 0  (u)  c(u) u  U (умова обмеженості); (3.8)

2)  (u )   (u ) ; x  x0 , x  z (умова балансу). (3.9)


uU x uU x

Ліва (права) частина в (3.9) – це сума потоків до (від) вершини x .


У фізичній інтерпретації (u ) – це сукупність однорідних об'єктів,
які треба переслати з однієї вершини графа в іншу по його дузі, або
кількість речовини, що протікає (за одиницю часу) по дузі u  ( x, y) від
вершини x до вершини y .
Згідно з (3.8) (u ) (кількість речовини, сукупність об’єктів) не може
перевищувати пропускної спроможності дуги c(u ) .
Згідно з (3.9) в кожній вершині x , відмінній від входу x0 і виходу z ,
кількість речовини, що надходить, дорівнює кількості речовини, що
виходить. Отже, речовина не може накопичуватись в жодній з вершин
ТМ, за винятком входу і виходу. Це означає, що сумарний потік на
 
множині дуг U z (вхідний потік) і сумарний потік на множині дуг U x
0
(вихідний потік) рівні між собою.
Потоком (на) ТМ  z називається сума дугових потоків від
вершини x0 , або, що те ж саме, сума дугових потоків до вершини z :

z   (u )   (u ) . (3.10)


uU  uU z
x0

30
Дуга u називається насиченою, якщо (u)  c(u) , тобто дуговий
потік дорівнює пропускній спроможності цієї дуги.
Дуга u називається ненасиченою, якщо (u)  c(u) .
Якщо (u)  0 (u)  0 , то кажуть, що дуга u навантажена
(ненавантажена).
п
Потік  z називають повним, якщо кожний шлях  від x0 до z
містить принаймні одну насичену дугу (такий шлях також називатимемо
повним); у протилежному випадку  z (  ) – неповний потік (шлях).
Якщо на ТМ вказано потік  z і дугові потоки (u) u U u  U ,
то кажуть, що здійснено розподіл потоку на ТМ (за дугами).
Розглянемо таку задачу: на заданій ТМ з фіксованими пропускними
п
спроможностями її дуг побудувати (знайти) повний потік  z .
Розв'язання цієї задачі проводять в два етапи.
І етап. Побудова довільного (початкового) потоку  z : вибирають
0

деякий (невеликий) потік і згідно з умовами (3.8) і (3.9) здійснюють його


розподіл за дугами. (при цьому  z визначається неоднозначно).
0

ІІ етап. Побудова повних шляхів від x0 до z : розглядають кожний


неповний шлях  від x0 до z і для всіх дуг такого шляху підраховують
число r  min {c (u )   (u )} , а потім збільшують на r всі дугові потоки на
u

шляху  , в результаті чого кожний неповний шлях перетворюється в


п
повний, а  z – в повний потік  z . Як і  z , повний потік визначається
0 0

неоднозначно.
Приклад. Розглянемо п'ятивершинну ТМ G  ( X ,U ) , x0 – вхід,
x4  z – вихід (рис. 3.7-а), пропускні спроможності c(u) дуг якої вкажемо
в круглих дужках, а дугові потоки (u ) записуватимемо праворуч від них;
насичені дуги позначатимемо подвійними лініями.
Візьмемо початковий потік  z  3 і здійснимо розподіл його за
0

дугами: покладемо 0,1  0,2  0,3  1, враховуючи умови


обмеженості і балансу, одержимо решту дугових потоків. У результаті
розподілу виявилося, що дуга (2,4) насичена, але потік  z в цілому не
0

31
буде повним, бо 1  0  2  4 ,  2  0  3  2  4 ,
 3  0  1  3  2  4 – повні шляхи, а  4  0  1  3  4 ,
 5  0  3  4 – неповні.

а) б)

Рис. 3.7. Транспортна мережа:


а) розподіл початкового потоку на ТМ; б) побудова повного потоку на ТМ

На шляху 4 знаходимо величину r  min{c(u )  (u )} 


u 4

 min {3  1, 2  1, 6  1}  1 і збільшуємо на 1 всі дугові потоки на цьому


шляху, тоді дуга 1,3 стане насиченою (рис. 3.7-б). Після цього на шляху
 5 підраховуємо r : r  min  7  1, 6  2   4 , і збільшуємо на 4 всі дугові
потоки на  5 , тоді дуга 3,4 стане насиченою. Побудований потік

 пz  2  1  5  2  6  8 повний, бо кожний шлях від x0 до z містить


хоча б одну насичену дугу.
Розглянемо задачу про відшукання максимального потоку на ТМ:
при заданій конфігурації ТМ і відомих пропускних спроможностях її дуг
знайти максимальний потік на ТМ, а також розподіл цього потоку за
дугами.
Метод розв'язання цієї задачі базується на двох кроках, а саме:
"індексація вершин" і "зміна потоку". Їх виконують один за одним доти,
поки дістануть максимальний потік.
І. Індексація вершин. Нехай здійснено розподіл деякого потоку  z
за дугами ТМ.

32
Під індексацією вершин ТМ розуміють процес приписування її
вершинам x0 , x1 , …, xn  z індексів (чисел) наступним чином:
вершині x0 приписується індекс 0 ;
якщо вершина з номером i , тобто xi , уже проіндексована, то:
а) усі непозначені вершини y , в які йдуть ненасичені дуги із xi ,
позначаються індексом (i) (рис. 3.9-а);
б) усі непозначені вершини y , із яких йдуть навантажені дуги в xi ,
позначаються індексом (i) (рис. 3.9-б).

а) б)
Рис. 3.8. Зважування вершин ТМ:
а) в які входять дуги; б) з яких виходять дуги

Якщо з непозначеної вершини y виходять дві або більше дуг до


позначених вершин, то вершині y можна приписати індекс за будь-якою
з цих позначених вершин. Зауважимо також, що потік нульової величини
x, y   0 можна рахувати напрямленим як від x до y , так і від y до
x (при індексації вершин необхідно розглядати обидва можливі напрями).
З процедури індексації вершин ТМ витікає, що вершині y (за умови
вже зваженої вершини xi ) індексу приписати не можна, якщо дуга ( xi , y )
насичена або дуга ( y, xi ) ненавантажена (порожня).
Отже, якщо в результаті процесу індексації вершин вихід мережі z
разом з деякими іншими вершинами (або без них) виявився
непроіндексованим, то це означає, що потік, розподілений на ТМ є
максимальним. Якщо ж вершина z виявиться проіндексованою, то потік
на ТМ не є максимальним, а, значить, його можна збільшити.
ІІ. Зміна потоку. Нехай вихід z ТМ в процесі індексації вершин
отримав якийсь індекс. Тоді існує шлях    x0 z від x0 до z , усі вершини
якого різні і, починаючи з другої, позначені (без урахування знаку)
номерами попередніх вершин.

33
Наприклад, якщо    x0  x2  x4  x5  z  , або (за номерами
вершин)   0  2  4  5, то кортеж I  індексів (з точністю до знаку)
вершин на цьому шляху матиме вигляд: I   0, 0, 2, 4.
На шляху  можуть бути дуги ТМ, орієнтація яких співпадає або не
співпадає з напрямком руху по  від x0 до z . Дугу u  U , орієнтовану в
напрямку (проти напрямку) руху по  , назвемо попутною (зустрічною),
 
а відповідну обставину позначимо символом u   u   . Потоки на
цих дугах будемо теж називати попутними, або зустрічними.
Зміну потоку на ТМ у бік його збільшення проводять так: знаходять
шлях  від x0 до z (з позначеними, як указано вище, вершинами) і
дугові потоки (u ) на ньому замінюють новими наступним чином:
для попутних дуг підраховують мінімальну різницю між cu  і u  :

r   min  cu   u  ,


u 
для зустрічних дуг знаходять мінімальний потік:

r   min  u  ,
u 
тоді попутні (зустрічні) дугові потоки можна збільшити (зменшити) на
величину:
r  min {r  , r } ,
тобто
u   r , якщо u   ;
u   
u   r , якщо u   .
При цьому одна із зустрічних дуг можливо стане порожньою. При

відсутності зустрічних дуг r  r .
Відзначимо також, що індексацію вершин і зміну потоку можна
проводити, відштовхуючись від розподілу довільного потоку  z (навіть
п
нульового), але краще застосувати їх до повного потоку  z , щоб
зменшити кількість обчислень.
Приклад. Знайти максимальний потік на транспортній мережі,
зображеній на рис. 3.9-а.
Розв'язання.
34
1. Виберемо початковий потік  z  3 і покладемо: 0,1  0, 2 
0

 0, 3  1 . Потім, враховуючи умову балансу, маємо 1, 3  1 і


візьмемо 3, 2  3, 4  1, тоді 2, 4  2 .
Усі дуги виявилися навантаженими, але сформований потік не є
повним (насичені дуги зовсім відсутні).
2. Для відшукання повного потоку перетворюємо кожний неповний
шлях від x0 до x4  z у повний.
Розглядаємо 1  0  2  4 і підраховуємо для його дуг різниці
cu   u  , а потім знаходимо найменшу з них:

r  min  c0, 2  0, 2, c2, 4  2, 4  min  6  1, 3  2   1.

Збільшуємо всі дугові потоки на 1. Нові дугові потоки записані біля


дуг через кому з попередніми: 0, 2  2 , 2, 4  3  c2, 4 , тобто
маємо насичену дугу.
Аналогічно для  2  0  3  4 одержимо:

r  min c0, 3  0, 3, c3, 4  3, 4   min  3  1, 9  1   2 ,


0, 3  1  2  3  c0, 3, 3, 4  1  2  3 .

а) б)

Рис. 3.9. Транспортна мережа:


а) побудова повного потоку;
б) індексація вершин та відшукання максимального потоку на ТМ

35
Нарешті, для  3  0  1  3  4 :
r  min  3  1, 10  1, 9  3   2 , 0,1  1  2  3  c0,1,
1, 3  1  2  3 , 3, 4  3  2  5 .
Тепер кожен шлях від входу до виходу ТМ є повним. Отже,
п
побудовано повний потік:  z  3  2  3  3  5  8 .
3. Індексацію вершин (і подальші кроки) будемо проводити,
виходячи з повного потоку (рис. 3.9-б).
Припишемо початковій вершині індекс 0. Тоді можна
проіндексувати  0 вершину x2 (дуга 0, 2  ненасичена), а вершини x1 ,
x3 , відштовхуючись від x0 , позначити не можна, бо дуги 0,1 , 0, 3
насичені. Дуга 3, 2 навантажена і орієнтована в бік позначеної вершини
x2 , значить, вершина x3 отримує індекс  2 . На тій самій підставі
вершині x1 приписуємо індекс  3 ; вершині ж x4  z приписуємо індекс
 3, бо дуга 3, 4 ненасичена і виходить з проіндексованої вершини
x3 .
4. Вихід сітки виявився позначеним. Отже, потік  z  8 хоча і
повний, але не максимальний.
5. Для зміни потоку ТМ знаходимо шлях  від x0 до z  x4 ,
вершини якого позначені (з точністю до знаку) номерами попередніх
вершин:   0  2  3  4, а I   0, 0,  2,  3 . На цьому шляху дві
попутні дуги: 0, 2 , 3, 4 і одна – зустрічна – 3, 2 . Підрахуємо, на
скільки одиниць можна збільшити дугові потоки попутних дуг і зменшити –
зустрічної:

r   min 6  2, 9  5  4 , r   1, r  min  r  , r    min  4,1  1.

Нові потоки: 0, 2  2  1  3 , 3, 2  0 , 3, 4  5  1  6 ,а  z  9 .


3. Повертаємося до індексації вершин. Дуга 3, 2 ненавантажена і
при наступній індексації вершина x3 вже не одержить від’ємний індекс;
зате як ненасичена (орієнтована від x2 до x3 ) дуга вона дозволяє

36
проіндексувати вершину x3 додатним індексом  2 . Індекси вершин x1 ,
x2 , x4 не зміняться (рис. 3.9-б).
4. Вихід сітки знову позначено. Отже, потік  z  9 хоча і повний,
але не максимальний.
5. Знову аналізуємо шлях   0  2  3  4 з кортежем індексів
I   0, 0,2,3 . Усі дуги ТМ на цьому шляху попутні:
r  min  6  3, 2  0, 9  6  2 .
Отже, збільшуємо дугові потоки на дві одиниці: 0, 2  3  2  5 ,
2, 3  0  2  2  c2, 3 , 3, 4  6  2  8 , а  z  11.
Дуга (2, 3) стала насиченою (на рис. 3.9-б це позначено двома
лініями, одна з яких пунктирна, що відображує переорієнтацію дуги
(3, 2) ). Отже, при наступній індексації ми зможемо позначити тільки
вершини x0 , x2 . Оскільки вихід ТМ – вершина z залишилася не
проіндексованою, то потік, розподілений на ТМ, є максимальним:

z  3  3  2  3  3  3  5  3  8  11 .

Лекція 4. Основи математичної логіки (МЛ)

4.1. Висловлення: основні означення, логічні операції

Під висловленням розуміють твердження, сформульоване у


вигляді розповідного речення, стосовно якого можна сказати – істинне
воно чи хибне. Позначатимемо висловлення буквами: a, b, c,, x, y, z
(можливо, з індексами).
"Істинність" і "хибність" тлумачаться як значення висловлення:
якщо висловлення x істинне (хибне), то пишуть: x  1  x  0 ; символи
1, 0 називають значеннями істинності висловлення.
До висловлень не відносяться запитальні та окличні речення,
твердження, які носять суб'єктивний характер. Наприклад: "ти куди
поспішаєш? ", "як красиво!", "цікава книжка" тощо.
Висловлення називають складним (простим), якщо воно містить
(не містить) у собі інші висловлення як складові частини.

37
Теорія висловлень має тісний зв'язок з теорією множин. Нехай I –
універсум деякої сукупності множин. Множина X  I , стосовно
елементів якої висловлення x істинне, називається областю
істинності висловлення x . Якщо область істинності є порожньою
множиною, то кажуть, що x тотожно хибне  x  0 ; якщо ж область
істинності співпадає з універсумом I , то x тотожно істинне  x  1 .
Наприклад, якщо I – множина студентів деякої академічної групи,
X – множина відмінників, Y – множина карооких студентів, то
висловлення x ("студент відмінник") має областю істинності множину X ;
y ("студент кароокий") – множину Y ; z ("студент старше 70 років") –
порожню множину, тобто z – тотожно хибне. Множина X  Y буде
областю істинності складного висловлення: "студент відмінник і
кароокий".
Під логічною операцією (ЛО) над висловленнями розуміють
утворення складного висловлення, для якого задані висловлення є
складовими частинами; вихідні висловлення, з яких формується
результат ЛО, називають операндами.
Таблицею істинності ЛО називається таблиця, в якій указано всі
можливі набори значень істинності операндів (із множини 0, 1) і
відповідні значення істинності результату ЛО.
Розглянемо вісім основних ЛО над висловленнями x, y з
областями істинності відповідно X , Y .
1. Інверсією (запереченням) x
висловлення x називається
висловлення з областю істинності X
(рис. 4.1), яке істинне тоді і тільки тоді,
коли x хибне: Рис. 4.1. Область істинності
висловлення x
1, якщо x  0 ,
x
x 0 1
0, якщо x  1.
 x 1 0
Читається: "не x ", або "неправильно, що x ". Інверсію x
позначають також символом  x .

38
2. Диз’юнкцією (логічною
сумою) x  y висловлень x , y
називається складне висловлення з
областю істинності X  Y (рис. 4.2), яке
хибне тоді і тільки тоді, коли обидва Рис. 4.2. Область істинності
висловлення хибні: висловлення x  y

0, якщо x  0, y  0 ,
x y 
x 0 0 1 1
 1 в решті випадків. y
 0 1 0 1
x y 0 1 1 1
Читається: " x або y ".

3. Кон’юнкцією (логічним
добутком) x  y висловлень x , y
називається складне висловлення з
областю істинності X  Y (рис. 4.3),
яке істинне тоді і тільки тоді, коли Рис. 4.3. Область істинності
обидва висловлення істинні: висловлення x  y
1, якщо x  1, y  1,
x y 
x 0 0 1 1
 0 в решті випадків. y
 0 1 0 1
x y 0 0 0 1
Читається: " x і y ".

4. Імплікацією (логічним
наслідком) x  y висловлень x , y
називається складне висловлення з
областю істинності X  Y (рис. 4.4), яке
хибне тоді і тільки тоді, коли x істинне, Рис. 4.4. Область істинності
а y хибне: висловлення x  y

0, якщо x  1, y  0 ,
x y
x 0 0 1 1
 1 в решті випадків. y
 0 1 0 1
x y 1 1 0 1
Читається: "якщо x , то y ", або "із x випливає y ".

39
5. Еквіваленцією
(рівнозначністю) x ~ y висловлень
x , y називається складне висловлення
  
з областю істинності X  Y  X  Y 
Рис. 4.5. Область істинності
(рис. 4.5), яке істинне тоді і тільки тоді,
висловлення x ~ y
коли значення істинності обох
висловлень однакові:
1, якщо x  y ,
x~ y
x 0 0 1 1
 0, якщо x  y. y
 0 1 0 1
x~ y 1 0 0 1
Читається: " x еквівалентне y ", або " x тоді і тільки тоді, коли y ",
або " x , якщо і тільки якщо y ". Еквіваленцію позначають також
символами x  y , x  y .
6. Операцією Жегалкіна (нерівнозначністю) x  y називається
інверсія еквіваленції:
0, якщо x  y ,
x y  x ~ y 
x 0 0 1 1
 1 якщо x  y. y
 0 1 0 1
x y 0 1 1 0
Читається: " x не еквівалентне (не рівнозначне) y ".
7. Операцією (штрихом) Шеффера x | y називається інверсія
кон'юнкції (несумісність):
0, якщо x  1, y  1,
x | y  x y 
x
0 0 1 1
 1 в решті випадків. y
 0 1 0 1
x| y
1 1 1 0
Читається: " x не сумісне з y ", або "неправильно, що x і y ".
8. Операцією (стрілкою) Пірса x y називається інверсія
диз'юнкції:
1, якщо x  0, y  0 ,
x  y  x  y  
x
0 0 1 1
y
 0 в решті випадків. 0 1 0 1
x y 1 0 0 0
Читається: "ні x , ні y ", або "неправильно, що x або y ".
Операції  ,  ,  називаються головними (базисними)
операціями у тому розумінні, що решту логічних операцій  , , , , 
можна виразити через них за допомогою співвідношень:
40
x  y  x  y   x  y ,
x ~ y  x  y    y  x   x  y   x  y   x  y   x  y  ,
x  y   x ~ y   x  y   x  y   x  y   x  y , (4.1)
x| y  x  y  x  y,
x  y  x y  x  y.
У справедливості наведених співвідношень легко переконатися за
допомогою таблиць істинності.

4.2. Основні закони математичної логіки

Наведемо властивості головних логічних операцій, які називають


основними законами математичної логіки (табл. 4.1). Справедливість
цих законів легко доводиться за допомогою таблиць істинності.
Таблиця 4.1
Основні закони математичної логіки

№ Запис закону у символах


Назва закону
п/п для диз’юнкції для кон’юнкції

1 Комутативний x y y x x y yx
(переставний)

2 Асоціативний x   y  z   x  y   z x   y  z   x  y   z
(сполучний)

3 Дистрибутивний x   y  z   x  y   x  z  x   y  z   x  y   x  z 
(розподільний)

Виключення
4 третьої x  x 1
можливості

5 Суперечності xx 0

6 Ідемпотентності x x  x xx x

7 Де Моргана x y  x  y x y  x  y

x  0  x , x  1  1, x  0  0 , x 1  x ,
Поглинання
x  x  y   x x  x  y   x
8

9 Склеювання x  y   x  y   x x  y   x  y   x
41
Подвійного
10
заперечення xx

4.3. Логічні формули: означення та їх класифікація,


принцип двоїстості

Аналізуючи таблиці істинності ЛО, заключаємо, що символи x , y ,


якими позначають висловлення, відіграють роль змінних величин, що
приймають значення 0 , 1 . Ці змінні називають елементарними
формулами (атомами). За допомогою ЛО із атомів будуються складні
висловлення.
Логічною формулою називають символічний запис складного
висловлення, утвореного з атомів за допомогою логічних операцій і лівої
і правої дужок: ( , ). Дужки визначають область дії логічного знаку
(символу). Логічні формули позначатимемо великими латинськими
буквами і, якщо треба підкреслити, які атоми входять до них, поруч в
дужках даватимемо їх перелік.
Формула F , яка приймає значення 1 ( 0 ) на всіх наборах (із нулів і
одиниць) значень атомів, з яких вона утворена, називається тотожно
істинною, або тавтологією (тотожно хибною, або протиріччям),
і пишуть F  1 F  0 . Формула, яка на деякій частині наборів значень
атомів, з яких вона утворена, істинна, а на іншій – хибна, називається
здійсненною.
Наприклад, за законами математичної логіки  x  x  – тавтологія,
x  x  – протиріччя; кожна ЛО – здійсненна формула.
Задача встановлення того, до якого з трьох класів (тавтологій,
протиріч, здійсненних формул) належить та чи інша формула
називається задачею (проблемою) розв'язності.
Цю проблему можна вирішити двома способами:
аналітичним (за допомогою тотожних перетворень досліджуваної
формули, з метою її спрощення, за законами математичної логіки);
табличним (за допомогою побудови таблиці істинності заданої
формули).

Дослідимо, наприклад, формулу F  a  b   a  b . 
Аналітичний спосіб.

42
F  (a  b)  (a  b )  x  y  x  y  a  b  (a  b ) 
 x  y  x  y  (a  b )  (a  b )  x  ( y  z )  x  y  z 
 a  b  a  b  x  y  y  x  a  a  b  b  x  x 1 
 1 b  b  x  x  x  1 b  x  y  y  x  b 1  x 1  1  1  F .

Висновок: задана логічна формула є тавтологією.


Табличний спосіб. Встановлюємо порядок виконання дій
(операцій), нумеруючи відповідні символи операцій:

1 3

F  a  b   a  b ,
2

а інверсію b виконуємо усно; відводимо n стовпців (за кількістю атомів)
для запису фіксованих значень аргументів (у нас n  2 ); далі йдуть
стовпці, що відповідають значенням проміжних операцій (їх для зручності
можна позначити однією літерою, як показано в табл. 4.2), а останній
стовпець відповідає всій формулі.
Таблиця 4.2
Таблиця істинності логічної формули
A B F
a b a b ab AB
0 0 0 1 1
0 1 0 0 1
1 0 0 1 1
1 1 1 1 1
Висновок: задана логічна формула є тавтологією.
На підставі формул переходу (4.1) будь-яку логічну формулу можна
представити через головні операції  ,  ,  . Якщо в формулі F символ
 замінити на символ  і навпаки, а символ 1 – символом 0 і навпаки, то
одержимо формулу F  , яка називається двоїстою по відношенню до
формули F ; символи  і  , 0 і 1 також називають двоїстими.

4.4. Диз'юнктивна та кон'юнктивна нормальні форми (ДНФ, КНФ)


логічної формули

43
Нехай M  {x1 , x2 ,, xn }  {xi }1n – множина атомів, з яких (не
обов'язково усіх) утворюються логічні формули. Якщо формула містить
атом xi  M (заперечення xi ), то кажуть, що атом xi входить у формулу
в прямому (інверсному) вигляді.
Формула D K  називається елементарною диз'юнкцією
(кон'юнкцією), якщо вона становить диз'юнкцію (кон'юнкцію) попарно
розрізнюваних атомів в прямому або інверсному вигляді, тобто

D~
xi1  ~
xi2    ~
xim ,
(4.2)
K~
xi1  ~
xi2    ~
xim .
~
де xik (1  k  m , 1  m  n ) – це або xik , або xik ; xik  M .
Домовились окремий атом (в прямому або інверсному вигляді) як
формулу відносити і до елементарних диз'юнкцій, і до елементарних
кон'юнкцій, а 0 (1 ) рахувати елементарною кон'юнкцією (диз'юнкцією).
Наприклад, для M   x1 , x2 , x3  : формули  x3  ,  x1  x2  x3  ,
 x1  x2 ,  x1  x3  є елементарними диз'юнкціями; формула
 x1  x2  x1  x3  – не елементарна диз'юнкція, хоча стає нею після
застосування закону комутативності та ідемпотентності:  x1  x2  x3  .
ДНФ (КНФ) логічної формули F називається рівносильна їй
формула F F , яка є диз'юнкцією (кон'юнкцією) елементарних
кон'юнкцій (диз'юнкцій), тобто:
r
ДНФ: F  K1  K 2    K r  V K i ( i  1, r )
i 1
(4.3)
s
(КНФ: F  D1  D2    Dr   D j ( j  1, s ))
j 1
де r, s  N ; K i ( Di ) – елементарні кон'юнкції (диз'юнкції).

Прикладами ДНФ і КНФ логічних формул на множині M   x, y, z 


є формули: F   x  y    x  z    x  y  z  ,    x   x  z    x  y .
Загальна схема зведення формул до ДНФ, КНФ така:

44
1) здійснюють перехід від операцій  , ~ ,  , | ,  до головних
операцій алгебри логіки  ,  ,  (з урахуванням законів де Моргана і
порядку виконання дій);
2) спрощують одержану формулу за допомогою законів МЛ
(ідемпотентності, склеювання, поглинання), вилучаючи з неї тавтології і
протиріччя;
3) приводять окремі частини формули за допомогою асоціативних і
дистрибутивних законів до елементарних диз'юнкцій чи кон'юнкцій,
причому дистрибутивні закони використовуються так:

x   y  z   x  y   x  z  – для ДНФ,
x   y  z   x  y   x  z  – для КНФ.

Надалі для позначення кон'юнкції (логічного добутку) будемо


користуватися знаком множення звичайної (шкільної) алгебри – крапкою
(), або зовсім її випускати: x  y  x  y  x y .
Спираючись на послідовне застосування дистрибутивних законів в
поєднанні з асоціативними законами, можна сформулювати правила
переходу від ДНФ до КНФ і навпаки.
Правило 1. Для того, щоб перейти від ДНФ F  K1  K 2    K r
до КНФ F , треба скласти кон'юнкцію всіх можливих диз'юнкцій із атомів
кон'юнкцій K1, K 2 ,, K r , взятих по одному із кожної з них (і спростити
одержану формулу).
Правило 2. Для того, щоб перейти від КНФ F  D1  D2    Dr
до ДНФ F , треба скласти диз'юнкцію всіх можливих кон'юнкцій із атомів
диз'юнкцій D1, D2 ,, Dr , взятих по одному з кожної з них (і спростити
одержану формулу).
Приклад. Зведемо до ДНФ і КНФ формулу: F  x  y   x ~ y  .
Переходимо до головних операцій з урахуванням співвідношень
A  B  A  B , A  B  ( A  B)  ( A  B ) , A ~ B  ( A  B)  ( A  B ) ):

F  ( x  y)  ( x ~ y )  (( x  y)  ( x  y))  (( x  y )  ( x  y)) 

45
A  (B  C)  A  B  C
 A B  B  A  ( x  y )  ( x  y )  K1  K 2  F .
A A  A
Застосовуючи правило 1 до F , одержимо F :

F  x  x   x  y    y  x    y  y   x  y   x  y   D1  D2 .

4.5. Досконалі диз'юнктивна та кон'юнктивна нормальні форми


логічної формули (ДДНФ, ДКНФ)

У застосовних питаннях важливе значення має випадок ДНФ (КНФ),


коли кожна елементарна кон'юнкція (диз'юнкція) містить всі атоми (в
прямому або інверсному вигляді) з деякої множини M   x1 , x 2 , , x n .
Елементарна кон'юнкція (диз'юнкція), яка містить всі атоми
розглядуваної множини М, називається конституентою одиниці c1
(конституентою нуля c 0 ), тобто:
n
c1 ~ ~ ~
 x1 x2  xn   ~
xi
i 1 (4.4)
n
~ ~ ~
( c 0  x1  x2    xn  V xi ),
~
i 1
~
де xi – це xi або xi , xi  M , i  1, n .
Досконалою диз'юнктивною нормальною формою логічної
формули F називається рівносильна їй формула F , яка є диз'юнкцію
конституент одиниці, тобто

ДДНФ: F  c11  c12    c1k , 1  k  2n . (4.5)

Досконалою кон'юнктивною нормальною формою логічної


формули F називається рівносильна їй формула F , яка є кон'юнкцію
конституент нуля, тобто

ДКНФ: F  c10  c20    ck0 , 1  k  2 n . (4.6)

Правило побудови ДДНФ. Щоб знайти досконалу диз'юнктивну


нормальну форму логічної формули F  0 , треба:

46
1) скласти її таблицю істинності і розглянути всі набори значень
атомів, на яких F  1;
2) замінити кожну одиницю (кожний нуль) такого набору на атом xi
(заперечення xi ), де i – номер відповідного елемента набору, що дає
деяку конституенту одиниці;
3) записати диз'юнкцію всіх конституент одиниці, що визначаються
наборами значень атомів, на яких F  1 .

Правило побудови ДКНФ. Щоб знайти досконалу кон'юнктивну


нормальну форму логічної формули F  1 , треба:
1) скласти її таблицю істинності і розглянути всі набори значень
атомів, на яких F  0 ;
2) замінити кожний нуль (кожну одиницю) такого набору на атом xi
(заперечення xi ), де i – номер відповідного елемента набору, що дає
деяку конституенту нуля;
3) записати кон'юнкцію всіх конституент нуля, що визначаються
наборами значень атомів, на яких F  0 .
Приклад. Побудувати ДДНФ і ДКНФ заданої логічної формули:

F  x ~ y   x | z   y .
Установлюємо значення F на всіляких наборах значень атомів
(табл. 4.3).
Таблиця 4.3
Таблиця істинності логічної формули

A B C F
x y z x~ y x| z A B C| y
0 0 0 0 1 0 1
0 0 1 0 1 0 1
0 1 0 1 1 1 0
0 1 1 1 1 1 0
1 0 0 1 1 1 0
1 0 1 1 0 0 1
1 1 0 0 1 0 0
1 1 1 0 0 0 0
За правилами побудови досконалих форм маємо:

47
F  x y z  x y z  x y z ,
F  x  y  z x  y  z x  y  z x  y  z x  y  z  .

48

You might also like