Professional Documents
Culture Documents
вся кдм
вся кдм
вся кдм
xyzu(P(x,z)P(y,z)Q(x,y,u)). ▲
а) xyA( x, y ) (xyB( x, y )) ,
перейменовуємо змінну у на z
x(zA( x , z ) yB ( x , y )) xzy ( A( x , z ) B ( x, y )) .
(x ( A( x ) y ( B( y ) C ( z )))) y ( D ( x, y ) E ( z ))
(x ( A( x ) y ( B( y ) C ( z )))) y ( D ( x, y ) E ( z ))
перейменовуємо змінну х на w
(w( A( w) y ( B( y ) C ( z )))) y ( D ( x, y ) E ( z ))
перейменовуємо змінну y на v
(w( A( w) v ( B(v ) C ( z )))) y ( D( x, y ) E ( z )) виносимо v
(wv ( A( w) B(v ) C ( z ))) y ( D ( x, y ) E ( z )) виносимо y
wvy ( A( w) B ( v ) C ( z ) ( D ( x, y ) E ( z )) .▲
1.7. Методи доведень
Для доведення теорем застосовують логічну аргументацію. Доведення в
інформатиці – невід’ємна частина перевірки коректності алгоритмів.
Необхідність доведення виникає, коли нам потрібно встановити істинність
висловлювання виду (P Q ). Існує декілька стандартних типів доведень.
1. Пряме міркування. Допускаємо, що висловлювання Р істинне і
показуємо справедливість Q. Такий спосіб доведення виключає ситуацію,
коли Р істинне, а Q хибне, оскільки саме в цьому і лише в цьому випадку
імплікація P Q набуває хибного значення (див. табл. 1.1).
2. Обернене міркування. Допускаємо, що висловлювання Q хибне і
показуємо помилковість Р. Фактично прямим способом перевіряємо
істинність імплікації ( Q P), що згідно з прикладом 1.1.5 (правилом
контрапозиції) логічно еквівалентне істинності вихідного твердження
(P Q ).
3. Метод «від протилежного». У допущенні, що висловлювання Р істинне,
а Q хибне, використовуючи аргументоване міркування, одержимо
протиріччя. Цей спосіб оснований на тому, що імплікація (P Q) набуває
хибного значення лише тоді, коли Р істинне, а Q хибне.
Приклад 1.7.1. Покажіть прямим міркуванням, що добуток ху двох
непарних цілих чисел х та у завжди непарне число.
Розв’язання.
Перш за все зауважимо, що будь-яке непарне число, і зокрема х, можна
записати у вигляді x 2 m 1 , де т – ціле число. Аналогічно, y 2 n 1 , де п –
ціле число. Отже, добуток
xy ( 2 m 1)( 2 n 1) 4 mn 2 m 2 n 1 2 ( 2 mn m n ) 1
теж є непарним числом. ▲
{
int i=0;
int M=0;
while (i<n) {
i=i+1;
M=max(M,a[i]);
}
}
Прослідкуємо дію алгоритму на наборі даних а1=4, а2=7, а3=3, а4=8 (табл.
1.10), за потреби функції max та min можна підключити з бібліотеки.
Таблиця 1.10
i M i<n
0 0 так
1 4 так
2 7 так
3 7 так
4 8 ні
Розв’язання.
Нехай Р(п) – предикат «sq=n2 після п-го проходу циклу», а sqk – значення
змінної sq після k-го проходу циклу. Покажемо, що
1) sq1=12;
2) якщо sqk=k2, то sqk+1=(k+1)2.
Очевидно, що після першого проходу циклу sq1=1 і перший пункт
виконано. Допустимо, що після k-го проходу циклу sqk=k2. Тоді після
наступного проходу sqk+1= sqk +2(k+1)-1=k2+2k+1=(k+1)2. Отже, другий пункт
теж має місце, тобто для будь-якого натурального k імплікація P ( k ) P ( k 1)
справедлива. Тому згідно принципу математичної індукції предикат Р(п) має
істинне значення для всіх натуральних п. ▲
Розв’язання.
Заповнимо таблицю істинності (табл. 1.4):
Таблиця 1.4
P Q P P Q P Q
T T F T T
T F F F F
F T T T T
F F T T T
T T T F F
T F Т F F
F T T F F
F F F T F
за дужки;
заперечення;
диз’юнкції.
Закони асоціативності
( P Q ) R P (Q R ) ( P Q ) R P (Q R )
Закони комутативності
Закони ідемпотентності
PPP PPP
Закони дистрибутивності
P (Q R ) ( P Q ) ( P R ) P (Q R ) ( P Q ) ( P R )
Закони доповнення
Закони де Моргана
(P Q) P Q (P Q) P Q
Закони поглинання
(P Q) P P (P Q) P P
P T T (домінування) P T P (тотожності)
P F P (тотожності) P F F (домінування)
Алгоритм доведення:
1. Вилучити імплікації, еквівалентності та альтернативне «або» за правилами:
(P Q ) P Q , (1.1)
(ми довели це правило, розв’язуючи приклад 1.1.6);
P Q ( P Q ) (Q P ) , (1.2)
P Q P Q. (1.3)
2. Позбутись знаків заперечень над великими виразами за допомогою законів де
Моргана та закону подвійного заперечення.
3. Використати решту законів для спрощення формул.
Використовуємо закони
де Моргана: (( P Q ) P ) Q (( P Q ) P ) Q
подвійного заперечення: (( P Q ) P ) Q
дистрибутивності: (( P P ) ( Q P )) Q
виключення третього: ( T ( Q P )) Q
тотожності (Q P ) Q
асоціативності Q P Q
комутативності QQ P
ідемпотентності Q P
комутативності P Q
Розв’язання.
Припускаємо, що формула не є тавтологією. Оскільки остання операція, яка
виконується, є імплікація, то формула є хибною, коли передумова (її ліва частина) є
істинною, а висновок (права частина) хибним:
(( A C ) ( B C )) T , (1.6)
(( A B ) C )) F . (1.7)
Рівність (1.7) виконується, якщо одночасно ( A B ) Т і C F . Припустимо, що
A T, B F, підставимо їх у (1.6):
(( T F ) ( F F )) F T Т .
Означення 1.4.4. Перехід від P(x) до х P(x) або х P(x) називають зв’язуванням
предметної змінної х, а саму змінну х – зв’язаною (заквантованою). Незв’язану змінну
називають вільною. У виразах х P(x) або х P(x) предикат належить області дії
відповідного квантора. Формулу, що не містить вільних змінних, називають
замкненою.
змінною.
Приклад 1.4.3. Позначимо через P(x) предикат «х – ціле число і x2=16». Виразіть
словами висловлювання: х P(x) і визначте його істиносне значення.
Розв’язання.
Висловлювання х P(x) означає, що знайдеться ціле число х, яке задовольняє
рівняння x2=16. Воно істинне, бо вказане рівняння перетворюється у вірну тотожність
при х=4 та х=-4. ▲
6. x(P(x)Q)=xP(x)Q.
7. x(P(x)Q)= xP(x)Q.
8. x(P(x)Q)= xP(x)Q.
9. xyP(x,y)= yxP(x,y).
а) б)
Рис. 2.2. Діаграми Ейлера-Венна множин А (а) та {a, b, c}, {b, d, e} (б) в
універсальних множинах U
2.3. Операції над множинами
A B { x : ( x A) ( x B )} . (2.1)
Вона складається з тих елементів, які належать або множині А, або множині В, а
можливо і обом відразу. Діаграма Ейлера-Венна об’єднання показана на рис. 2.3, а.
Означення 2.3.2. Перетином (перерізом) двох множин А і В називають множину
A B { x : ( x A) ( x B )} . (2.2)
Вона складається з тих елементів, які належать множині А і множині В. Діаграма
Ейлера-Венна перетину показана на рис. 2.4, б.
а) б)
Рис. 2.3. Діаграми Ейлера-Венна об’єднання та перетину двох множин
A \ B {x : ( x A) ( x B )} . (2.3)
а) б)
Рис. 2.4. Діаграма Ейлера-Венна різниці та симетричної різниці двох множин
Приклад 2.3.1. Нехай A={1, 3, 5, 7}; B={2, 4, 6, 8}; C={1, 2, 3, 4, 5}. Знайдіть
A C , B C , A \ C , B C .
Розв’язання.
A C {1, 3 , 5 , 7 , 2 , 4 } ;
B C { 2 , 4 };
A \ C { 7 };
Розв’язання.
Перш за все зауважимо, що універсальною множиною тут є
U={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}.
Крім того,
А={2, 4, 6, 8, 10, 12} і В={3, 6, 9, 12}.
Тому ( A B ) {6 ,12 } {1, 2 ,3, 4 ,5 , 7 ,8,9 ,10 ,11} і
A B {1, 3, 5, 7, 9, 11} {1, 2, 4, 5, 7, 8, 10, 11}={1, 2, 3, 4, 5, 7, 8, 9, 10, 11}.
Отже, ( A B ) A B. ▲
Розв’язання.
( A B ) { x : x ( A B )} { x : ( x ( A B ))} { x : (( x A ) ( x B ))};
A B { x : ( x A ) ( x B )} { x : ( ( x A )) ( ( x B ))}.
Закони асоціативності
A (B C ) (A B) C A (B C ) (A B) C
Закони комутативності
A B B A A B B A
Закони тотожності
A A A U A
Закони домінування
A U U A
Закони ідемпотентності
A A A A A A
Закони дистрибутивності
A (B C ) (A B) ( A C ) A (B C ) (A B) (A C )
Закони поглинання
( A B) A A ( A B) A A
Закони доповнення
A A U A A
U U
A A A A
Закони де Моргана
( A B) A B ( A B) A B
Розв’язання.
Застосовуючи закони алгебри множин до правої частини рівності, маємо:
( A B) ( A B) (закон де Моргана)
( A B) ( A B) (закон дистрибутивності)
(( A B ) A ) (( A B ) B ) (закон дистрибутивності)
(( A A ) ( B A )) (( A B ) ( B B )) (закон доповнення)
( ( B A )) (( A B ) ) (закон тотожності)
(B A ) ( A B) (закон комутативності)
( A B ) ( B A) .
5) AU A .
2.5. Доведення рівностей множин
Моргана A B A B .
Розв’язання.
Припустимо, що x A B , тоді x A B , звідси x A і x B . Тому x A або
що x A B , тобто x A B . Отже, A B A B .
0 0 0 1 1 1 1
0 1 0 1 1 0 1
1 0 0 1 0 1 1
1 1 1 0 0 0 0
x : ( x A) ( x B ) x : x A B A B .
| A B | | A | | B | | A B | .
m | A \ B | , n | A B | , p | B \ A | .
Тоді | A | m n , | B | n p , | A B | m n p ( m n ) ( n p ) n | A | | B | | A B | . ▲
A B C A B C A B B C A C A B C.
Доведення
Діаграма Ейлера-Венна зображена на рис. 2.7.
Позначимо різні області мітками 1, 2,..., 8, як показано на рис. 2.7, і допустимо, що
область і містить пі елементів. Тоді
| A | | B | | C | ( n1 n2 n4 n5 ) ( n1 n2 n3 n6 ) ( n1 n3 n4 n7 )
З іншого боку,
| A B | | B C | | A C | ( n1 n2 ) ( n1 n3 ) ( n1 n4 ) 3n1 n2 n3 n4 .
| A | | B | | C | | A B | | B C | | A C | | A B C |
n1 n2 n3 n4 n5 n6 n7 | A B C |,
Таблиця 2.4
А В A B A B, B, AB , A\ B,
аi bi ai bi ai bi bi ai bi a i bi
0 0 0 0 1 0 0
0 1 0 1 0 1 0
1 0 0 1 1 1 1
1 1 1 1 0 0 0
а) б) в)
Рис. 3.2. Приклади неорієнтованих графів:
а) простий граф, б) мультиграф, в) псевдограф
а) б) в)
Рис. 3.14. Повні графи: а) К1, б) К2, в) К4
n ( n 1)
Кількість ребер у графі Kn рівна m .
2
Повний граф Kn є регулярним степеня (п-1), а цілком незв’язний Nп – регулярним
нульового степеня. Регулярними є також платонові графи – графи, утворені вершина-
ми і ребрами п’яти платонових тіл (правильних багатогранників). Їх особливістю є те,
що всі їхні грані є однаковими правильними багатокутниками. Отже, всі сторони пра-
вильного багатогранника рівні, всі плоскі кути при вершинах рівні, всі кути між
гранями також рівні. Багатогранники названі відповідно до кількості граней (табл. 3.2):
правильний тетраедр (трикутна піраміда, 4 грані, рис. 3.16, а), правильний гексаедр
(куб, 6 граней), правильний октаедр (8 граней), правильний додекаедр (12 граней,
рис. 3.29) і правильний ікосаедр (20 граней).
Таблиця 3.2
Символ Кількість Кількість Кількість
Шлефлі вершин ребер граней
Тетраедр (3,3) 4 6 4
Куб (гектаедр) (4,3) 8 12 6
Октаедр (3,4) 6 12 8
Додекаедр (5,3) 20 30 12
Ікосаедр (3,5) 12 30 20
Символ Шлефлі (р, q) означає, що многогранник складається з правильних р-
кутників, які утворюють при вершині q-гранний кут.
Використовуючи поняття повного графу можна інакше сформулювати означення
3.1.8 про доповнення до графа.
Означення 3.2.3. Граф G є доповненням до графа G, якщо їхнє об’єднання
утворює повний граф, тобто K n G G , а перетин множин ребер графів G та G
утворює порожню множину.
Кількість ребер у доповнювальному графі G рівна m n ( n 1) / 2 E , де n –
кількість вершин графа G, а E – кількість ребер графа G. Кількість вершин
доповнювального графа G дорівнює кількості вершин графа G.
Означення 3.2.4. Зв’язний простий граф з п вершинами називають простим
ланцюгом, якщо рівно дві його вершини мають степінь 1, а всі інші – степінь 2,
позначають Рп. Зв’язний простий регулярний граф степеня 2 називають циклічним
графом або графом-циклом (його перша і остання вершини співпадають, тобто
з’єднані у замкнуте кільце, рис. 3.15) і позначають Сn, де n – кількість вершин (n≥3).
а) б) в)
Рис. 3.15. Графи-цикли: а) С3; б) С4; в) C6
Кількість ребер т у графі Cn рівна n.
Означення 3.2.5. З’єднання графів N1 та Сn називають графом-колесом (він
отриманий з’єднанням однієї єдиної вершини з усіма вершинами графу Cn, рис. 3.16) і
позначають Wn, де n – кількість вершин у графі циклі Cn (n≥3).
а) б) в)
Рис. 3.13. Графи-колеса: а) W3; б) W4; в) W6
Кількість ребер т у графі Wn рівна 2n , а кількість вершин дорівнює n+1.
Означення 3.2.3. Простий граф називаються n-вимірним кубом, якщо він
зображає усі бітові рядки довжиною 2n (рис. 3.17). Його позначають Qn. Зауважимо,
що дві вершини в графі Qn з’єднані ребром тоді, коли бітові рядки, які вони
зображають, не відрізняються більше, ніж на біт.
а) б) в)
Рис. 3.17. n-вимірні куби: а) Q1; б) Q2; в) Q3
Означення 3.2.7. Простий граф називають двочастковим, якщо множину його
вершин V можна розбити на дві підмножини ( V V1 V2 ,V1 V2 ), що не
перетинаються, так, що кожне ребро з’єднує вершину з множини V1 із вершиною з
множини V2. Двочастковий граф називають повним, якщо кожна вершина з V1
з’єднана з усіма вершинами V2. Його позначають Kk,p, де k V1 , p V2 , Vi – це
потужність підмножини Vі. Граф K1,p називають зіркою.
Приклад двочасткових графів наведено на рис. 3.18.
Кількість ребер у графі Kk,p рівна m k p , а кількість вершин n = k+p.
а) б) в)
Рис. 3.18. Двочасткові графи: а) неповний двочастковий граф;
б) зірка К1,5; в) повний двочастковий граф К2,3
Означення 3.2.8. Маршрутом довжини k в графі G називають таку послідовність
вершин v1, v2,…, vk+1, що для кожного і {1,…,k} пара vіvі+1 утворює ребро графа
(ребра можуть повторюватися). Позначають такий маршрут v1-v2…-vk+1. Цикл – це
маршрут, який з’єднує вершину саму з собою. Маршрут або цикл називають простим,
якщо він не містить ребер, що повторюються. Граф, в якому нема циклів, називають
ациклічним.
Структури дерев, які виникають в обчисленнях, є частковим випадком ациклічних
графів. Ними ми займемося у п’ятій темі.
Приклад 3.2.1. Знайдемо маршрут довжиною 4 та цикли в графі (рис. 3.19).
Розв’язання.
Наприклад, 1-4-3-2-5 – це маршрут довжиною 4.
У цьому графі є 2 різних цикли довжиною 5:
1-3-2-5-4-1 і 1-2-5-4-3-1.
1 2
4 5
0 2 2
1 1
1
y v y z u
u
z w p
x
v
t s w
s x
t
G H
Рис. 3.25. Зв’язний граф
Означення 3.4.2. Числом реберної зв’язності (G) простого графа G з п>1
вершинами називають найменшу кількість ребер, вилучення яких дає незв’язний граф
(але вершини, які з’єднує це ребро, залишаються). Число реберної зв’язності
одновершинного графа вважають рівним 0.
Для графа G з рис. 3.25 (G)=3.
Означення 3.4.3. Вершину простого графа називають точкою з’єднання, якщо в
разі її вилучення новий граф матиме більше компонент, ніж даний. Ребро графа
називають мостом, якщо його вилучення збільшує кількість компонент. Граф
називають нероздільним, якщо він є зв’язний і не має точок зчленування.
Граф називають сепарабельним, якщо він має хоча б одну точку зчленування (він
є роздільним).
Отже, точки з’єднання і мости – це свого роду «вузькі місця» простого графа.
Граф Н з рис. 3.25 має три точки з’єднання t, s, p та один міст ts.
Означення 3.4.4. Простий граф називають t-зв’язним (вершинно-t-зв’язним),
якщо к(G) t і реберно-t-зв’язним, якщо (G) t .
Граф G, зображений на рис. 3.25, однозв’язний і реберно-3-зв’язний.
Неважко побачити, що зв’язність (вершинна і реберна) незв’язного графа
дорівнює нулю, к(Кп)= (Кп)=п-1, к(Сп)=2.
Теорема 3.4. Для кожного простого зв’язного графа G маємо
к(G) (G) (G ) ,
де (G ) – найменший степінь вершин графа G.
Нерівності цієї теореми покращити не можна – має місце теорема.
Теорема 3.5. Для довільних цілих чисел а, b, c (0<a b c) існує граф G, для якого
к(G)=a, (G)=b, (G ) =c.
Якщо зв’язати ці величини з кількістю вершин графа, то отримаємо таку умову.
Теорема 3.6. Якщо граф має п вершин і (G ) [n / 2] , то (G ) (G ) , тут [a] –
ціла частина числа а.
Наведемо достатні умови того, що простий граф є вершинно-t-зв’язним.
Теорема 3.7 (теорема Бонді). Нехай G – простий граф з п вершинами, які
позначені так, що (v1 ) (v2 ) ... (vn ) . Тоді граф G є вершинно-t-зв’язним, якщо
(v r ) r t 1 для 1 r n 1 (v n t 1 ) .
3.5. Ейлерові графи
Модель поставленої Ейлеру задачі – це мультиграф, складений з множини вершин
і множини ребер, що з’єднують ці вершини. Вершини А, В, С і D символізують береги
ріки і острови, а ребра a, b, c, d, e, f і g позначають 7 мостів (рис. 3.26). Шуканий
маршрут (якщо він існує) відповідає обходу ребер мультиграфа так, що кожне з них
проходять лише один раз. Прохід ребра, очевидно, відповідає переходу ріки по мосту.
Отже, задачу про кенігсбергські мости мовою теорії графів можна сформулювати так:
чи існує в мультиграфі простий цикл, який містить усі його ребра?
e e
d c d c с d e
G1 G2 G3
Рис. 3.27. Ейлерові цикли і ейлерові маршрути ▲
Ейлер зауважив, що якщо в графі є ейлеровий цикл, то для кожного ребра, що
входить у якусь вершину, має існувати інше ребро, що з неї виходить (бо з умови
задачі, зайшовши у вершину, ми не можемо вийти по тому ж ребру) і отримав з цього
простого спостереження такий висновок: якщо в графі існує ейлеровий цикл, то до
кожної вершини має підходити парна кількість ребер. Крім того, Ейлеру вдалося
довести й протилежне твердження і таким чином сформулювати теорему.
Теорема 3.8 (теорема Ейлера). Граф, в якому будь-яка пара вершин зв’язана
деякою послідовністю ребер, є ейлеровим тоді і лише тоді, коли всі його вершини
мають парний степінь.
Тепер цілком очевидно, що в графі, яким змодельована задача про мости
Кенігсберга, неможливо знайти ейлерового циклу. Дійсно, степені всіх його вершин
непарні: ( B ) (C ) ( D ) 3 і ( A) 5 .
6 3
5 4 13 14
7
20
9
8 12
11
10
18 17 16
19 15
Рис. 3.28. Гамільтоновий цикл
Не всі зв’язні графи мають ГЦ хоча б тому, що такі графи мають бути
двозв’язними (необхідна умова), але граф, що має дві точки з’єднання, може не мати
ГЦ. Граф, зображений на рис. 3.29, є двозв’язним (можна, наприклад, вилучити точки
1 і 5), але цього недостатньо для наявності ГЦ.
1 2
3 4 5
6 8
7
d f
c
b
e
h g
3 5
2
1
6
8 7
b 1 b
c 2 bc
d 3 bcd
a 4 bcda
- - bcd
- - bc
f 5 bcf
e 6 bcfe
g 7 bcfeg
- - bcfe
- - bcf
- - bc
h 8 bch
- - bc
- - b
- -
Ребра, які позначено потовщеною суцільною лінією, називають прямими, а
тонкою – зворотними. Їх використовують у різних алгоритмах, основаних на пошуку
углиб.▲
3 4
2
1
8
6 5
b 1 b
c 2 bc
d 3 bcd
- - cd
f 4 cdf
g 5 cdfg
h 6 cdfgh
- - dfgh
a 7 dfgha
- - fgha
e 8 fghae
- - ghae
- - hae
- - ae
- - e
- -
3.8. Ізоморфізм графів
Буквальний переклад слова “ізоморфізм” означає “однаковість форми”. Форма
графа – це його структура. Таким чином, ізоморфізм графів означає однаковість їх
структури.
Означення 3.8.1. Два графи G1 = (V1, E1) і G2 = (V2, E2) називають ізоморфними
(позначають G1 G2), якщо між множинами їх вершин існує взаємно однозначне
відображення f : V1→V2, яке зберігає суміжність, тобто для довільних вершин v і w
ребро vw E1 тоді й лише тоді, коли f(v)f(w) E2. При цьому f називають ізоморфним
відображенням або ізоморфізмом графа G1 на граф G2.
Простіше кажучи, граф, ізоморфний до заданого, – це той самий граф з точністю
до позначення вершин і графічного зображення. Але побачити це часом не так просто.
Два графи, показані в табл. 3.9, ізоморфні, незважаючи на свою зовнішню
відмінність. Графи, зображені на рис. 3.30 (повний граф K5) та 3.35, теж ізоморфні.
Таблиця 3.9
ƒ(a) = 1
ƒ(b) = 6
ƒ(c) = 8
ƒ(d) = 3
ƒ(g) = 5
ƒ(h) = 2
ƒ(i) = 4
ƒ(j) = 7
г) д)
Рис. 3.36. Приклади ізоморфних та неізоморфного графів
Розв’язання.
Розглянемо пару графів (рис. 3.36, а). Перевіримо необхідні умови ізоморфізму.
Крок 1: кількість вершин – 5=5.
Крок 2: кількість ребер – 5=5.
Крок 3: сума степенів – 10=10.
Крок 4: сума степенів сусідніх вершин співпадає, бо кожна вершина має
однаковий степінь (2).
Крок 5: Пронумерувавши кожну вершину графа, ми бачимо, що існує однозначне
відображення кожної вершини обох графів.
Отже, графи на рис. 3.36, а ізоморфні.
Розглянемо пару графів (рис. 3.36, б). Перевіримо необхідні умови ізоморфізму.
Крок 1: кількість вершин – 4=4.
Крок 2: кількість ребер – 6=3.
Крок 3: сума степенів – 12=12.
Крок 4: сума степенів сусідніх вершин співпадає, бо кожна вершина має
однаковий степінь (3).
Крок 5: Пронумерувавши кожну вершину графа, ми бачимо, що існує однозначне
відображення кожної вершини обох графів.
Отже, графи на рис. 3.36, б ізоморфні.
Розглянемо пару графів (рис. 3.43, в). Перевіримо необхідні умови ізоморфізму.
Крок 1: кількість вершин – 6=3.
Крок 2: кількість ребер – 5=5.
Крок 3: сума степенів – 3+2х2+3=10, 10=10.
Кроки 4-5: пронумеруємо вершини обох графів (рис. 3.36, г, д):
Після нумерації вершин обох графів у графі 3.36, г є вершина 2 зі степенем
(2)=3, сусідами якої є вершини 1, 3 та 4 зі степенями (1)=1, (3)=2, (4)=1
відповідно. У графі 3.36, д теж є вершина 2 зі степенем (2)=3, сусідами якої є
вершини 1, 3 та 4 зі степенями (1)=2, (3)=2, (4)=1 відповідно. Отже, не існує
однозначної відповідності вершин, тому графи не є ізоморфними. ▲
Для того, щоб граф G1 був ізоморфним графу G2 , необхідно і достатньо, щоб
існувала така підстановка, яка встановлювала б взаємно однозначну відповідність між
вершинами графа, а також між їх ребрами.
Далі дамо відповідь на запитання: чи можна встановити ізоморфізм графів за
їхніми матрицями інцидентності та суміжності або за списками ребер та суміжності?
Для перевірки ізоморфності графів G1 і G2 за матрицею суміжності необхідно
визначити, чи існує така перестановка рядків і стовпців у матриці суміжності G1 , щоб
у результаті вийшла матриця G2 . З цією метою треба зробити всі можливі
перестановки рядків і стовпців (а їхня максимальна кількість дорівнює n!∙ n!). Якщо
після однієї із цих перестановок матриці суміжності тотожньо збігаються, то графи
ізоморфні.
Для перевірки ізоморфності графів G1 і G2 за матрицею інцидентності необхідно
визначити, чи існує така перестановка рядків і стовпців у матриці інцидентності G1 ,
щоб у результаті вийшла матриця G2 . З цією метою треба зробити всі можливі пари
перестановок рядків і стовпців (а їхня максимальна кількість дорівнює n!m! ). Якщо
після однієї із цих перестановок матриці інцидентності тотожно збігаються, то графи
ізоморфні.
Аналогічно, переставляючи рядки у списках ребер чи суміжності одного графа,
можна визначити, чи він є ізоморфним іншому.
І в першому, і в другому випадку це доволі трудомісткі операції, і розв’язування
задачі “вручну” не завжди виправдано. Часто ізоморфність графів простіше
встановити за їхніми графічними поданнями.
Наприклад, на рис. 3.37 зображено графи G і H з однаковою кількістю вершин і
ребер.
Рис. 3.37. Пара графів для перевірки на ізоморфізм
Степінь кожної вершини для цих графів запишемо в табл. 3.10:
Таблиця 3.10
Степінь у Назва Степінь у
графі H вершини графі G
3 a 3
6 b 2
2 c 2
2 d 5
3 e 3
2 f 3
Як бачимо з табл. 3.10, степені вершин b, d та f не збігаються, тому графи не є
ізоморфними.
Приклад 3.8.2. Знайдемо серед графів Н, К і L, зображених на рис. 3.38, підграфи
графа G.
Розв’язання.
Позначимо вершини графів H, K і G як показано на рис. 3.39. Графи Н і K – під-
графи в G, а граф L не є підграфом в G, бо у нього є вершина степеня 4, якої нема в G.
а) б) в)
Рис. 3.40. Планарні (а-в) та плоскі (б, в) графи
6 5 4
Розв’язання
Укладемо спочатку цикл C=1-2-3-4-1, що розбиває площину на дві грані Г1 і Г2 .
На рис. 3.45, а зображено граф G C і сегменти S1, S2, S3 відносно G з контактними
вершинами, обведеними колами. Оскільки Г(Si) = {Г1, Г2} (i=1, 2, 3), то кожний α-ланцюг
довільного сегмента можна укладати в будь-яку припустиму для нього грань.
Помістимо, наприклад, α-ланцюг L=2-5-4 у Г1. Виникає новий граф G і його
сегменти (рис. 3.45, б). При цьому Г(S1)={Г3}, Г(S2)={Г1, Г2}, Г(S3)={Г1, Г2, Г3}.
1 2 5 6 2
Г2 Г1
4 ~ 3 1 2 4 2 3 4 4
G S1 S2 S3
а
1 2 15 6 2
Г3
Г2 5 Г1
4 ~ 3 1 2 3 4 4
G
S1 S2 S3
б
Рис. 3.45. Алгоритм укладання графу (початок)
Укладаємо L=1-5 у грань Г3 (рис. 3.46, а). Тоді Г(S2)={Г1, Г2}, Г(S3)={Г1, Г2}. Потім
укладемо α-ланцюг L=2-6-4 сегмента S2 у Г1 (рис. 3.46, б). У результаті маємо
Г(S2 )={Г 5}, Г(S3)={Г1 , Г2, Г5}. Нарешті, уклавши ребро 6-3 у Г5, а ребро 2-4 –
наприклад, у Г1 (тоді Г(S3)={Г1}), одержуємо укладання графу G на площині (рис.
3.46, б).
1 2 6 2
Г4
Г2 Г3
5 Г1
2 3 4 4
4 ~ 3
G S2 S3
а
1 2 6 2
Г4 1 2
Г2 Г3
5 6
Г1 Г5 5 6
3 3 4
4 ~ 4 3
G S2 S3
б
Рис. 3.46. Алгоритм укладання графу (завершення)
4.1. Термінологія
а) б) в)
Рис. 4.1. Графи: а) змішаний; б) орієнтований; в) орієнтований мультиграф.
Означення 4.1.2. Шляхом довжини k в орграфі називають послідовність різних
вузлів v0, v1,…, vk, кожна пара vі-1vі (і=1,..., k) якої утворює дугу (дуги можуть
повторюватися). Довжиною шляху називають кількість дуг, з яких він складається.
Контуром в орграфі називають послідовність вузлів v0, v1,…, vk, що утворює шлях, в
якій перший вузол v0 співпадає з останнім vk, а інших повторювальних вузлів в ньому
нема. Орграф називають безконтурним, якщо в ньому нема контурів. Шлях або
контур називають простим, якщо він не містить повторюваних дуг.
Від орграфів існує природній перехід до неорієнтованих графів, який полягає у
«витиранні стрілок».
Означення 4.1.3. Граф Н=(V, E), утворений з орграфа G=(V, E), якщо його кожну
дугу замінити на ребро, називають основою орграфа. Якщо орграф простий, то це ще
не означає, що простим є його граф-основа (протилежно спрямовані дуги переходять у
пару кратних ребер).
Поняття суміжності та інцидентності переносяться на орграф з його основи:
кажемо, що дуга інцидентна вузлам, які вона з’єднує; вузли є суміжні, якщо вони
з’єднані деякою дугою; дуги суміжні, якщо вони мають спільний вузол.
Означення 4.1.4. Вузол и називають антецедентом вузла v, якщо існує дуга uv
орграфа. Степенем (або валентністю) вузла v орграфа G називають кількість дуг
(v) , які інцидентні цьому вузлу (петлю домовимося рахувати двічі). Півстепенем
виходу вузла v називають число дуг (v ) орграфа, які виходять з v, а півстепенем
входу цього вузла називають число дуг (v ) орграфа, які входять в неї. Через (G ) і
(G ) позначимо мінімальні півстепені виходу і входу всіх вузлів орграфа G, а через
(G ) і (G ) – їх максимальні півстепені виходу і входу. Якщо для вузла маємо
(v ) =0, то його називають стоком орграфа, якщо (v ) =0, то – джерелом.
Теорема 4.1. Нехай G – орграф з т дугами. Тоді
(v ) (v ) m .
vV vV
а) б) в)
Рис. 4.2. Сильна (а), одностороння (б) і слабка зв’язність (в)
Означення 4.1.7. Максимальний сильно зв’язний підграф орграфа називають його
сильно зв’язною компонентою. Орграф називають мінімально зв’язним, якщо він є
сильно зв’язним, але при вилученні будь-якої своєї дуги цю властивість втрачає.
Ясно, що мінімальний зв’язний орграф не може мати ні петель, ні паралельних дуг.
Теорема 4.2. Якщо мінімально зв’язний орграф має більше, ніж один вузол, то
він містить не менше, ніж два вузли степеня 2.
Означення 4.1.8. Ейлеровим шляхом (контуром) у слабко зв’язному
орієнтованому мультиграфі називають простий шлях (контур), який містить усі дуги
графа. Ейлеровим орграфом називають орграф, який містить ейлеровий контур.
Теорема 4.3. Орієнтований слабко зв’язний мультиграф має ейлеровий контур
тоді і лише тоді, коли півстепінь входу кожного вузла дорівнює його півстепеню
виходу.
Теорема 4.4. Орієнтований слабко зв’язний мультиграф має ейлеровий шлях
тоді і лише тді, коли існують два такі вузли v1 і v2 , для яких (v1) (v1) 1 і
(v2 ) (v2 ) 1, а для всіх інших вузлів півстепінь входу дорівнює півстепеню
виходу.
Означення 4.1.9. Гамільтоновим шляхом (контуром) у слабко зв’язному орієн-
тованому мультиграфі називають простий шлях (контур), який проходить через усі
вузли графа. Гамільтоновим орграфом називають орграф, який містить гамільтоно-
вий контур. Орграф називають повним (або турніром), якщо його основа є повним
графом.
Повним графом можна зображати результати тенісних чи інших спортивних
турнірів, в яких усі учасники зустрічаються між собою, і в результаті зустрічі хтось
виграє (немає нічиїх). Якщо вузли орграфа означають команди (чи гравців), то дуга uv
означатиме, що команда и виграла в команди v.
Як і у випадку неорієнтованих графів, характеризація гамільтонових орграфів є
складною. Наведемо декілька достатніх умов гамільтоновості орграфів.
Теорема 4.5. Нехай G – повний сильно зв’язний орграф з п вузлами. Тоді через
кожен його вузол проходить контур довільної довжини k, де 3 k n .
Наслідок. Сильно зв’язний турнір є гамільтоновим.
Теорема 4.6. Нехай G – сильно зв’язний орграф з п вузлами, який не має
паралельних дуг і петель. Якщо для кожного його вузла v виконується нерівність
(v ) (v ) n , то цей орграф гамільтоновий.
Наслідок. Нехай G – орграф з п вузлами, який не має паралельних дуг і петель.
Якщо для нього виконується нерівність min( (G ), (G )) n / 2 1 , то цей орграф
гамільтоновий.
Теорема 4.4. Кожен турнір має гамільтоновий шлях.
Безконтурні орграфи моделюють ситуації, коли задачі мають виконуватись у
визначеному порядку (контур в такій інтерпретації означає, що та чи інша задача
виконується з деякою періодичністю і передує сама собі). В задачі про планування
завдань відповідний безконтурний орграф має кодову назву «система ПЕРТ».
Приклад 4.1.1. Для отримання ступеня магістра біології студенту університету,
зокрема, необхідно прослухати 8 курсів, які частково залежать один від одного (табл.
4.1). Зобразимо систему ПЕРТ, яка ілюструє пріоритетну структуру курсів.
Розв’язання.
Система ПЕРТ (рис. 4.3) – це орграф, який подає дану пріоритетну структуру.
Його вузли – 8 курсів, позначені літерами латинського алфавіту. Дуги відображають
вимоги, необхідні для засвоєння курсу.
Таблиця 4.1.
Попередні курси
A Біотехнології B
B Початковий курс біотехнології C
C Цитологія H
D Структура ДНК C
E Ензимологія D, G
F Дієтологія E
G Генна інженерія C
H Біологія людини Без вимог
Означення 4.3.1. Матриця інцидентності (МІ) – матриця, у якій для кожної дуги
вказані інцидентні їй вузли, тобто рядкам матриці відповідають номери вузлів,
стовпцям – дуги графа.
Для орієнтованого мультиграфа елементи МІ знаходять так:
1, якщо дуга vi v j виходить з вузла vi ,
1, якщо дуга v v входить у вузол v ,
j i i
mij
2 якщо дуга vi vi є петлею,
0, якщо дуга не існує.
a b c d e f g h k m
1 -1 0 0 0 0 0 0 -1 1 1
2 1 1 1 1 -1 0 0 0 0 0
3 0 -1 -1 -1 1 1 1 0 0 0
4 0 0 0 0 0 -1 -1 1 -1 -1
6. Позначаємо вузол F.
Таблиця 4.5 (закінчення)
Крок Позначені Відстань до вузла Непозначені
вузли вузли
A B C D E F
0 A 0 2 3 B, C, D, E, F
1 B 0 2 3 3 C, D, E, F
2 D 0 2 3 3 5 C, E, F
3 C 0 2 3 3 5 8 E, F
4 E 0 2 3 3 5 6 F
5 F 0 2 3 3 5 6
B D
1 2
C E
1
F
Рис. 4.10. Дерево найкоротших шляхів з вузла A до всіх інших
4.6. Найкоротший шлях між усіма парами вузлів у зваженому
орграфі. Алгоритм Флойда
Алгоритм будує МОД у зваженому графі G=(V, E), послідовно вибираючи ребра
найменшої можливої ваги до утворення остовного дерева. МОД зберігається в пам’яті
комп’ютера як множина Т ребер.
Розглянемо одну з можливих реалізацій алгоритму Краскала.
Крок 1. Упорядкувати множину ребер у порядку зростання ваг: е1, е2,..., ет.
Крок 4. Якщо вже вибрано (п-1) ребро (у такому разі всі підмножини розбиття
виявляться об’єднаними в одну), то зупинитися, бо вибрані ребра утворюють
мінімальний остов. Інакше перейти до кроку 3.
Приклад 5.2.1. В табл. 5.1 дана відстань в кілометрах між 5-ма селами A, B, C, D і
E. Знайдемо мінімальне остовне дерево.
Таблиця 5.1
A B C D E
A - 13 3 9 9
B 13 - 11 11 13
C 3 11 - 9 7
D 9 11 9 - 2
E 9 13 7 2 -
Розв’язання.
Ребра вибираємо так: 1-е – ребро DE вагою 2, 2-е – ребро АС вагою 3, 3-є – СЕ
вагою 7 (рис. 5.3).
Наступні по вазі ребра – AD, AE і CD, кожне з яких має вагу 9, однак яке б з них
ми не додали, отримаємо цикл, тому перелічені ребра треба виключити з доступних
для побудови дерева. Далі йдуть ребра BC і BD вагою 11, можна приєднати будь-яке
з них, отримавши при цьому 2 різні МОД: {AC, BC, CE, DE} або {AC, BD, CE, DE}
вагою 23 кожне. ▲
5.3. Орієнтовані, впорядковані і бінарні дерева
Микола
р. 1623
Син (нащадок),
внутрішній вузол
Листки (нащадки)
Рис. 5.6. Кореневе дерево висотою 3
Означення 5.3.5. Піддеревом ордерева називають вузол ордерева, розглянутий як
корінь іншого ордерева, з відповідними ребрами.
Кореневе дерево можна визначити рекурентним способом. Окремий вузол є
кореневим деревом (він слугує і коренем такого дерева). Якщо Т1, Т2,..., Тk – незв’язні
між собою дерева з коренями v1, v2,..., vk, то граф, який отримують приєднанням нового
вузла v до кожного з вузлів v1, v2,..., vk окремою дугою, є деревом Т з коренем v. Вузли
v1, v2,..., vk графа Т – це сини кореня v. Ми зображаємо таке дерево з коренем, розміще-
ним нагорі, і синами, розміщеними нижче, безпосередньо під коренем (рис. 5.7).
а) б) в) г)
Рис. 5.8. Приклади зображення дерев у програмуванні
Той факт, що більшість систем керування файлами використовує орієнтовані
дерева, відображається навіть в термінології, наприклад, «кореневий каталог диска».
Оскільки у деревах зв’язки подають ребрами, графічні подання вільних,
орієнтованих і упорядкованих дерев виявляються нерозрізняльними і потрібні
уточнення, дерево якого класу зображено. У більшості випадків це ясно з контексту.
Приклад 5.3.1. На рис. 5.9 подано три дерева, які зовні виглядають відмінними.
Як упорядковані дерева вони дійсно всі різні: перше не дорівнює другому, друге –
третьому, третє – першому. Як орієнтовані дерева перше дорівнює другому, але друге
не дорівнює третьому. Як вільні дерева вони всі ізоморфні.
1 2 3
Рис. 5.9. Зображення дерев
5.3.3. k-арні дерева
Означення 5.3.7. Кореневе дерево називають k-арним деревом, якщо кожний
його внутрішній вузол має не більше, ніж k синів. Кореневе дерево називають повним
k-арним, якщо кожен його внутрішній вузол має точно k синів.
Теорема 5.5. Повне k-арне дерево з v внутрішніми вузлами містить n=k·v+1
вузлів.
Використовують кореневі дерева у інформатиці, біології, менеджменті. Для
застосування в інформатиці найважливіші є так звані двійкові (бінарні) дерева, тобто
такі ордерева, в яких кожний внутрішній вузол має не більше двох синів. У ньому вниз
від кожного вузла йде не більше, ніж два ребра.
Означення 5.3.7. Збалансованим називають k-арне дерево висотою h, у якого усі
листки розміщені на рівнях h або h-1. Ордерево називають ідеально збалансованим,
якщо рівень всіх його листків є однаковим. Завершеним називають повне k-арне
дерево, у якого усі листки розміщені на одному рівні.
На рис. 5.10 та 5.11 зображено 3-арні та бінарні дерева.
а) б)
Рис. 5.10. 3-арні дерева: а) ідеально збалансоване; б) завершене
а) б)
Рис. 5.11. Збалансоване (а) та завершене (б) бінарні дерева
Ліве Праве
піддерево піддерево
а) б)
Рис. 5.13. Двійкові дерева Т і T
Визначимо
а) корінь Т;
б) корінь лівого піддерева вузла В;
в) листки Т;
г) синів вузла С.
Нарисуємо двійкове дерево T , отримане з Т переставленням лівих і правих
піддерев у кожному вузлі.
Розв’язання.
а) А; б) D; в) G, H, I , J та Е; г) F.
Двійкове дерево T подано на рис. 5.13, б. ▲
5.4. Способи подання дерев
Для дерев, так само як і для графів, найзрозумілішим і найпростішим для людини
є графічний спосіб подання, хоч він непридатний для їх опрацювання на комп’ютері.
Зазвичай кореневі дерева на рисунку зображають у вигляді сукупності точок,
з’єднаних між собою лініями, причому корінь є найвищим вузлом на рисунку, його
сини знаходяться нижче від нього, сини синів – ще нижче, і т.д. За графічного
відображення бінарних дерев (k-арних рідко) має значення положення вузла, щоб
відрізняти лівого та правого сина. Наприклад, бінарні дерева, зображені на рис. 5.14, є
різними, оскільки у першому випадку (зліва) маємо справу з деревом, корінь якого має
нульове праве піддерево, а у другому (справа) – ліве.
Рис. 5.14. Відображення двох різних бінарних дерев, для яких порядок синів має
значення
a) б)
Розв’язання.
Запакований масив елементів у ордереві подано в табл. 5.3.
Таблиця 5.3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
a b c f d e k j m
Пояснення порожніх клітинок: 3 – немає лівого сина у b; 7, 8 – немає синів у
відсутнього лівого сина; 9, 10 – немає синів у f; 13 – немає лівого сина у е. Частина
елементів масиву буде порожньою, але, незважаючи на це, економія відбудеться за
рахунок того, що ми зберігаємо лише дані масиву, а зв’язки між елементами
обчислюємо за допомогою індексів і не потребуємо їх зберігати. ▲
5.5. Обхід ордерев
Означення 5.5.1. Об’єкт називають рекурсивним, якщо він містить сам себе чи
його означено за допомогою самого себе.
Означення повного бінарного дерева через рекурсію таке:
а) ізольований вузол R – повне бінарне дерево;
б) якщо А та В – повні бінарні дерева, то конструкція, зображена на рис. 5.21, –
повне бінарне дерево.
а) б)
с)
Рис. 5.22. Обходи ордерева: прямий (а), внутрішній (б), зворотний (с)
На рис. 5.23 наведено прямий та зворотний порядки обходу ордерева.
а) б)
Рис. 5.23. Прямий (а) та зворотний (б) порядки обходу бінарного дерева
Порядок обходу бінарного дерева можна зберегти безпосередньо в структурі
даних. Для цього достатньо ввести додаткове поле в елементі спискової структури і
зберегти в ньому вказівник на вузол, наступний за даним вузлом при обході ордерева.
Подання ордерев у вигляді запакованих масивів також допускає зберігання порядку їх
проходження (рис. 5.24). Для цього вводять додатковий масив, в який записують
адресу вузла в основному масиві, наступного за даним вузлом. Такі структури даних
отримали назву прошитих бінарних дерев, при цьому відповідно до порядку
проходження вузлів розрізняють вправо прошиті, вліво прошиті і симетрично прошиті
бінарні дерева. Вказівники або адреси, що визначають порядок обходу, називають
нитками. Клітинку з адресою останнього вузла повного ордерева відзначають
спеціальним символом, як і закінчення списку.
Розв’язання.
Послідовність дій відтворено на рис. 5.25. Останнім зображено математичне
дерево, яке подає заданий арифметичний вираз, його внутрішнім вузлам відповідають
символи операцій, а листкам – операнди.
*+а/bc-d*ef;
а+b/с*d-e*f;
Зупинимось на інфіксній формі запису виразу. Без дужок вона неоднозначна: один
запис може відповідати різним ордеревам. Наприклад, ордереву, зображеному на
рис. 5.26, у разі обходу зліва направо відповідає той самий вираз а+b/с*d-e*f, що й ор-
дереву на рис. 5.25, хоча на цих рисунках зображено різні ордерева. Щоб уникнути
неоднозначності інфіксної форми, використовують круглі дужки щоразу, коли зустрі-
чають операцію. Вираз з дужками, одержаний під час обходу ордерева у внутрішньому
порядку, називають інфіксною формою запису. Отже, для ордерева з рис. 5.25 інфіксна
форма така:
((а+(b/c))*(d-(e*f))),
Таблиця 5.4
Вираз
Крок Виділені символи Виконання операції
3 *23 2*3=6
+–*2352
4 –65 6–5=1
+–652
5 +12 1+2=3
+12
6 3
Опишемо загальний метод, який дає змогу значно зменшити обсяг обчислень в
алгоритмах типу повного перебору всіх можливостей. Щоб застосувати цей метод,
розв’язок задачі повинен мати вигляд скінченної послідовності (х1, …, хп). Головна ідея
методу полягає в тому, що розв’язок будують поступово, починаючи з порожньої
послідовності λ (довжини 0). Загалом, якщо є частковий (неповний) розв’язок (х1, …,
хі), де і<п, то намагаємося знайти таке допустиме значення хі+1, щоб можна було
продовжувати (х1,…, хі, хі+1) до одержання повного розв’язку. Якщо це допустимо, але
ще невикористане значення хі+1 існує, то долучаємо цю нову компоненту до
часткового розв’язку та продовжуємо процес для послідовності (х1, ..., xi, xi+1). Якщо
такого значення хі+1 немає, то повертаємося до попередньої послідовності (х1, ..., xi-1) і
продовжуємо процес, шукаючи нове, ще невикористане, значення хі. Тому процес
називають бектрекінгом (англ. backtracking – пошук із поверненнями).
Роботу алгоритму можна інтерпретувати як процес обходу якогось ордерева.
Кожен його вузол відповідає якійсь послідовності (х1, ..., xi), причому вузли, які
відповідають послідовностям вигляду (х1, ..., хi, у ) – сини цього вузла. Корінь
ордерева відповідає порожній послідовності.
Виконується обхід ордерева пошуком углиб. Окрім того, задають предикат Р,
означений на всіх його вузлах. Якщо P(v)=FALSE(F), то вузли піддерева з коренем у
вузлі v не розглядають, і обсяг перебору зменшується. Предикат P(v) набуває значення
F тоді, коли стає зрозумілим, що послідовність (х1,…, хi), яка відповідає вершині v, ніяк
не можна добудувати до повного розв’язку.
Проілюструємо застосування алгоритму бектрекінг на конкретних прикладах.
Задача 5.1. Побудова гамільтонових циклів у графі.
Починаємо з довільного вершини. Будуємо маршрут без повторення вершин, доки
це можливо. Якщо вдалося пройти всі вершини, то перевіряємо, чи існує ребро, що
з’єднує останню й початкову вершини цього маршруту. Якщо описаний процес у
певний момент неможливо продовжити, то повертаємося на одну вершину назад і
намагаємося продовжити побудову маршруту (без повторення вершин) іншим
способом.
Пошук усіх гамільтонових циклів у графі з п’ятьма вершинами (рис. 5.28, а)
можна проілюструвати за допомогою дерева. Роботу алгоритму почато з одноеле-
ментної послідовності, бо в циклі вибір першої вершини неістотний. До розв’язків
задачі у прямокутних рамках приписано відповідні гамільтонові цикли (рис. 5.28, б).
Отже, замість побудови й аналізу 5! = 120 послідовностей довжиною 5, які проходять
через вершини графа, ми розглянули лише 26 послідовностей довжиною від 1 до 5 (це
кількість дуг у ордереві).
а) б)
Рис. 5.28. Побудова гамільтонових циклів у графі
Задача 5.2. Розфарбовування графа в n кольорів.
Нехай вершини графа позначено як а, b, с, ... . Спочатку розфарбуємо вершину а в
колір 1, потім вершину b в той самий колір, якщо вона не суміжна з вершиною а, у
протилежному випадку розфарбуємо вершину b в колір 2. Перейдемо до третьої
вершини с. Використаємо для вершини с колір 1, якщо це можливо, якщо ні, то колір
2, якщо це можливо. Тільки якщо жоден із кольорів 1 і 2 не можна використовувати,
розфарбуємо вершину с в колір 3.
Бінарне дерево пошуку забезпечує дуже зручний метод організації даних, який
дозволяє легко знайти будь-які конкретні дані або виявити, що їх нема. Воно дозволяє
уникнути послідовного перегляду усіх даних. У бінарному дереві пошуку кожному
вузлу присвоєно значення, яке називають ключем. Ключ – це елемент якоїсь множини,
на якій задано лінійний порядок, наприклад, алфавітний або числовий. Під час
побудови бінарного дерева пошуку використовують його рекурсивну властивість, яку
можна описати так. Кожен вузол розбиває дерево на два піддерева. Ліве дерево містить
лише ключі, менші від ключа цього вузла, а праве – більші. Ця властивість
повторюється для кожного вузла.
Бінарні дерева пошуку є структурами даних, що підтримують більшість операцій з
динамічними множинами: пошук елементів мінімального та максимального значення,
попереднього та наступного елементу, додавання та видалення.
а) б) в) г)
д) е) є)
ж) з)
Рис. 5.32. Додавання елементів до бінарного дерева пошуку ▲
Приклад 5.8.2. Додамо елементи, що є рядками даними, до бінарного дерева
пошуку: кава, лате, сік, лайм, гриб, чай, джем.
Розв’язання.
Послідовність кроків подана на рис. 5.33.
а) б) в) г)
д) е) є)
Рис. 5.33. Додавання елементів до бінарного дерева пошуку ▲
5.8.2. Алгоритм пошуку елемента в бінарному дереві пошуку
Найпоширенішою операцією, яку виконуються з бінарним деревом пошуку, є
пошук в ньому певного ключа. Окрім цього, ці дерева забезпечують пошук
мінімального та максимального елементів. Щоб здійснити пошук вузла зі значенням z,
необхідно виконати таку послідовність кроків:
Крок 1. Почати з кореня.
Крок 2. Якщо z дорівнює значенню вузла, що розглядається, то алгоритм
завершено і елемент знайдено.
Крок 3. Якщо z менше за значення вузла, що розглядається, то переходимо у його
ліве піддерево.
Крок 4. Якщо z більше за значення вузла, що розглядається, то переходимо у його
праве піддерево.
Крок 5. Повторювати кроки 2-4, доки не досягнемо вузла з відповідним
значенням z або покажемо, що його не існує.
а)
б)
в)
Рис. 5.35. Видалення елемента в бінарному дереві пошуку
Приклад 5.8.4. Видалити із бінарних дерев пошуку, зображених на рис. 5.36, а, та
на рис. 5.36, б, вузли 4 та 5 відповідно.
а) б)
Рис. 5.36. Бінарне дерево пошуку
Розв’язання.
Вилучення вузла 4 із ордерева, зображеного на рис. 5.36, а, відповідає випадку 2 із
алгоритму видалення елемента в бінарному дереві пошуку, тому замінюємо вузол 4 на
вузол 2 (рис. 5.37, а). Вилучення вузла 5 з ордерева, зображеного на рис. 5.36, б,
відповідає випадку 3 із цього ж алгоритму, тому замінюємо вузол 5 на вузол 7 (він не
має лівого сина, рис. 5.37, б). ▲
а) б)
Рис. 5.37. Видалення вузлів бінарного дерева пошуку
а) б)
Рис. 9.38. Малі ліве та праве обертання
велике праве (подвійне ліво-праве) обертання використовують тоді, коли ліве
піддерево b переважує (різниця між висотами піддерев b і R рівна 2) і висота його
правого сина С більша за висоту лівого сина L (рис. 9.39, б); тоді правого сина с
лівого сина b обертають вліво, потім батька a вправо, у результаті c стає батьком
дідуся і свого батька.
а) б)
Рис. 9.39. Великі ліве та праве обертання
Після додавання вузла в дерево деякі вузли можуть переважувати вправо чи вліво
або стати чи залишатись повністю збалансованими.
Проходження дерева в симетричному порядку має бути таким же, як і для
початкового дерева. Дерево після перетворення має бути збалансованим.
На рис. 5.47 проілюстровано, як у дерево з рис. 5.45 додаємо ключ 15. У пошуках
позиції для нового ключа ми наштовхуємося на заповнений вузол (7, 9, 11, 13, 16) (рис.
5.47, а). За алгоритмом розбиваємо його на два нові, при цьому 11 переходить у
батьківський вузол. Далі ключ 15 вставляємо в другий з нових вузлів (рис. 5.47, б). Всі
властивості B-дерева зберігаються!
а)
б)
Рис. 5.47. Додавання ключа до В-дерева з рис. 5.45
CGM TX
а) Якщо в листку є більше за t-1 ключ, то видаляємо вказаний ключ і більше нічого
робити не потрібно (рис. 5.49, а).
б) Якщо в листку є рівно t-1 ключ, то перевіряємо, чи сусідні листки мають більше за t-
1 ключ. Якщо правий листок-сусід має більше за t-1 ключ, то видаляємо вказаний
ключ, вибираємо у цьому листку-сусіді найменший ключ і переміщаємо його у
батьківський вузол, а ключ, менший за нього, з вузла-батька переміщаємо на місце
видаленого (рис. 5.49, б). Якщо лівий листок-сусід має більше за t-1 ключ, то
видаляємо вказаний ключ, вибираємо у цьому листку-сусіді найбільший ключ і
переміщаємо його у батьківський вузол, а ключ, більший за нього, з вузла-батька
переміщаємо на місце видаленого.
в) Якщо ж два листки-сусіди вихідного вузла-листка мають рівно по t-1 ключу, то
видаляємо вказаний ключ і об’єднуємо вихідний вузол-листок з правим або лівим
сусідом. Той ключ з вузла-батька, який розділяв двох колишніх сусідів, перемістимо в
новоутворений вузол, очевидно, він буде в ньому медіаною (рис. 5.49, в).
P
CGM TX
AB DE JKL NO QRS UV YZ
а) видалення ключа F з листка В-дерева з рис. 5.50, у якого ключів більше за t-1=2
CJM TX
AB DG KL NO QRS UV YZ
б) видалення ключа Е з листка попереднього В-дерева, у якого ключів рівно
t-1=2, а правий сусід якого має ключів більше за t-1 (J переміщаємо у батьківський вузол,
а G – на місце видаленого)
P
CM TX
AB DJKL NO QRS UV YZ
в) видалення ключа G з листка попереднього В-дерева, сусіди якого мають ключів рівно t-
1=2 (D об’єднуємо з KL, J переміщаємо в новоутворений вузол)
Рис. 5.49. Видалення ключа з листка
CGL TX
AB DE JK NO QRS UV YZ
а) видалення ключа М з внутрішнього вузла В-дерева з рис. 5.51, а, один син якого (той,
що передує ключу) має більше за t-1=2 ключів (М замінюємо на L – його попередника)
CL TX
AB DEJK NO QRS UV YZ
б) видалення ключа G з внутрішнього вузла попереднього В-дерева, два сини якого
(попередній та наступний) мають рівно по t-1 ключу(об’єднуємо DE і IK)
в) видалення ключа 11 з кореня В-дерева з рис. 5.47, наступний син якого має більше за t-1
ключів
Рис. 5.51. Видалення ключа з внутрішнього вузла
Залишилось останнє ребро (12, 5), інформацію про яке можна не зберігати,
оскільки вона відновлюється однозначно. На рисунку числа на ребрах вказують
порядок, в якому вибирають висячі вершини і вилучають ребра при побудові коду
Прюфера.
1. Бінарні дерева на рис. 5.14 зліва та справа. Вважаємо, що верхній вузол містить а,
нижній b.
1 a 0 2 a 2 a 2
2 b 0 0 b 0 b 0
2. Бінарне дерево на рис. 5.8, a.
Спискові структури Прошиті бінарні Польський запис з
дерева поміченими степенями
Адреса i l r i k i d
1 + 2 3 + 3 + 3
2 a 0 0 a 0 a 0
3 * 4 5 * 5 * 3
4 b 0 0 b 0 b 0
5 c 0 0 c 0 c 0
Коли йде мова про родинні стосунки двох людей – Василя і Анни – то розуміють,
що вони є членами якоїсь сім’ї. Впорядкована пара (Василь, Анна) відрізняється від
інших впорядкованих пар людей тим, що між Василем і Анною є якісь родинні
відношення (батько, двоюрідний брат і т.п.). У математиці серед усіх упорядкованих
пар прямого добутку A B двох множин А і В теж виділяються деякі пари у зв’язку з
тим, що між їхніми компонентами є деякі «родинні» відношення, яких нема в інших.
Як приклад розглянемо множину S студентів якогось інституту і множину K
курсів, які там читають. У прямому добутку S K можна виділити велику підмножину
впорядкованих пар (s, k), які володіють властивістю: студент s слухає курс k.
Побудована підмножина відображає відношення «... слухає ...», яке природно виникає
між множинами студентів і курсів.
Для строгого математичного опису будь-яких зв’язків між елементами двох
множин ми введемо поняття бінарного відношення. В цьому розділі ми розглянемо
різні шляхи визначення відношень і обговоримо деякі їхні властивості. Зокрема,
розглянемо два важливі спеціальні типи відношень, які часто з’являються в математиці
та інформатиці: еквівалентності та часткового порядку. Також вивчимо два найважли-
віші способи побудови нових бінарних відношень з існуючих, основані на обчисленні
оберненого відношення і визначенні композиції відношень. Відношення між елемен-
тами декількох множин задають у вигляді таблиць даних. Ми покажемо, як такі п-арні
відношення застосовують для опису простої системи управління базами даних.
Функції відіграють центральну роль в математиці, де їх використовують для
опису процесів, за яких елементи однієї множини якимось чином переходять в
елементи іншої. Як ми побачимо, функції є спеціальним типом бінарних відношень.
Дамо означення функції і обговоримо деякі їхні властивості. Сформулюємо закон,
відомий як принцип Діріхле, за допомогою якого зможемо розв’язувати задачі, явно не
зв’язані одна з одною.
Означення 6.1.2. Два кортежі називаються рівними, якщо вони мають однакову
довжину та їхні відповідні компоненти рівні. Тобто, кортежі (a1 , a2 ,..., an ) та
(b1 , b2 ,..., bm ) рівні, якщо m=n, а також a1 b1 , a2 b2 , ..., an bm .
Означення 6.1.3. Прямим добутком довільного числа множин А1, А2, ..., Ап
називають множину A1 A2 ... An {( a1 , a 2 ,..., a n ) : a i Ai , i 1, 2 ,..., n} . У тому
випадку, коли кожна з множин А1, А2, ..., Ап співпадає з множиною А, пишуть Ап для
n
позначення прямого добутку п екземплярів А A
A
A
...
A і кажуть про n-й
n разів
A B {(a , b) : (a A) (b B )} .
Якщо A=B, то такий добуток називають декартовим квадратом множини А:
A2 A A {(a, b) | a A, b A}.
B A і BB.
Розв’язання.
A B {( x ,1), ( x , 2 ), ( x , 3 ), ( y ,1 ), ( y , 2 ), ( y , 3 )} ,
B A {( 1, x ), (1, y ), ( 2 , x ), ( 2 , y ), ( 3 , x ), ( 3 , y )} ,
| A B | mn , якщо | A | m і | B | n .
Це дійсно так, оскільки кожен елемент множини А (їх є т) бере участь в п різних
впорядкованих парах. Якщо ж одне з них або обидва нескінченні, то і добуток буде
мати нескінченну кількість впорядкованих пар.
Як і у випадку попередніх операцій над множинами, ми можемо нарисувати
діаграму Ейлера-Венна, яка ілюструє прямий добуток. Зокрема, для попереднього
прикладу вона має вигляд (рис. 6.2):
Приклад 6.2.2. Нехай A={0, 1, 2}, В={а, b} та задано відношення R={(0,а), (0,b),
(1,а), (2,b)}. Отже, 0Ra, оскільки (0,а) R, але 1 R b, оскільки (1,b) R. ▲
Mij =Т (1), якщо (аі, bj) R , Mij =F (0), якщо (аі, bj) R . (6.1)
Якщо розглядати матрицю взаємин і таблицю фактів лише для одного відно-
шення, то вони будуть фактично ідентичні булевій матриці і списку впорядкованих
пар, але займатимуть більше місця у пам’яті комп’ютера.
Отже, бінарне відношення між скінченними множинами може бути задано одним
з шести способів:
словами (за допомогою предикатів);
множиною впорядкованих пар;
орграфом;
булевою матрицею;
таблицею фактів;
матрицею взаємин.
6.3. Властивості відношень
а б
Рис. 6.6. Граф і матриця рефлексивного відношення
Відношення та < на множині дійсних чисел є рефлексивним та антирефлексив-
ним відповідно. Відношення «бути сином» на множині людей – антирефлексивне.
Відношення «бути симетричним відносно вісі Х на множині точок координатної
площини» не є ні рефлексивним, ні антирефлексивним: точка площини симетрична сама
собі, якщо вона лежить на вісі Х, і несиметрична сама до себе в протилежному випадку.
Відношення «бути симетричним відносно осі Х на множині точок координатної
площини» є симетричним: якщо перша точка симетрична другій, тоі друга симетрична
першій. Відношення на множині дійсних чисел є антисиметричним: якщо a b і b a
, то а=b. Відношення < на множині дійсних чисел є асиметричним: якщо a b , то b a
не виконується.
а б
Рис. 6.7. Граф і матриця симетричного відношення
Важливо зазначити, що властивості симетричності й антисиметричності не є антагоніс-
тичними: існують відношення, які одночасно мають ці властивості. Наприклад, відношення
R = на множині А={а} одночасно й симетричне, і антисиметричне. Є також відношення,
які не мають жодної із цих двох властивостей. Зрозуміло, що будь-яке асиметричне
відношення повинно бути й антисиметричним. Обернене твердження неправильне.
Відношення та < на множині дійсних чисел транзитивні: якщо a b і b c , то
a c.
а б
Рис. 6.8. Граф і матриця транзитивного відношення
Відношення «рівність», задане на множині цілих чисел, та «жити в одному місті»,
задане на множині людей, – транзитивні. Відношення «бути сином» – антитранзитивне.
Приклад 6.3.1. Розглянемо шість відношень на множині A={1, 2, 3, 4}:
R1 = {(1,1), (1,2), (2,1), (2,2), (3,4), (4,1), (4,4)};
R2 = {(1,1), (1,2), (2,1)};
R3 = {(1,1), (1,2), (1,4), (2,1), (2,2), (3,3), (4,1), (4,4)};
R4 = {(2,1), (3,1), (3,2), (4,1), (4,2), (4,3)};
R5 = {(1,1), (1,2), (1,3), (1,4), (2,2), (2,3), (2,4), (3,3), (3,4), (4,4)};
R6 = {(3,4)}.
Знайти властивості цих відношень.
Відношення R3 та R5 – рефлексивні, оскільки вони містять усі пари вигляду (а,а), тобто
(1,1), (2,2), (3,3), (4,4). Решта відношень не є рефлексивними, зокрема, R1 , R2 , R4 , R6 не
містять пари (3,3).
Відношення R4 та R6 – антирефлексивні, оскільки вони не містять жодної пари вигляду
(а,а), тобто (1,1), (2,2), (3,3), (4,4).
Зауважимо, що R1 , R2 не є ні рефлексивними, ані іррефлексивними.
Лише відношення R2 та R3 симетричні, тому що містять тільки симетричні елементи.
Лише відношення R4 , R5 , R6 є антисиметричними. У кожному із цих відношень немає
таких пар елементів а та b (а b), що одночасно (а, b) R та (b, а) R .
Є також відношення, які не є ні симетричними, а ні антисиметричними. Прикладом
такого відношення є R1 .
Відношення R 5 є антисиметричним відношенням, яке не є асиметричним через те,
що воно містить пари (1,1), (2,2), (3,3) та (4,4).
Відношення R4 , R5 , R 6 є транзитивними. Для кожного з них можна пересвідчитись, що
якщо пари (а, b) та (b ,с) належать цим відношенням, то й пара (а, с) теж їм належить.
Відношення R1 , R2 , R3 є антитранзитивними: (3,4) R1 , (4,1) R1 , але (3,1) R1 ;
(2,1) R2 , (1,2) R2 , але (2,2) R2 ; (2,1) R3 , (1,4) R3 , але (2,4) R3 . ▲
симетричності: якщо a b , то b a ;
транзитивності: якщо a b і b c , то a c .
Отже, воно є відношенням еквівалентності. ▲
E ▲
2 ={ z : z 2 – ціле число}={…, 1 2 , 2 ,1 2,2 2 ,... }.
a1 a2 a3 a4 a8 a5 a6 a7 a9
a1 1 1 1 0 0 0 0 0 0
a2 1 1 1 0 0 0 0 0 0
a3 1 1 1 0 0 0 0 0 0
a4 0 0 0 1 1 0 0 0 0
a5 0 0 0 1 1 0 0 0 0
a6 0 0 0 0 0 1 1 1 1
a7 0 0 0 0 0 1 1 1 1
a8 0 0 0 0 0 1 1 1 1
a9 0 0 0 0 0 1 1 1 1
6.5. Відношення порядку: нестрогого та строгого, часткового та лінійного.
Відношення толерантності
Приклад 6.5.1. Нехай A={1, 2, 3, 4, 6, 8, 12}. Відношення R1 задамо так: (а, b) R1 тоді
й тільки тоді, коли а є дільником b. Отже: R1 ={(1,1), (2,2), (3,3), (4,4), (6,6), (8,8), (12,12),
(1,2), (1,3), (1,4), (1,5), (1,6), (1,8), (1,12), (2,4), (2,6), (2,8), (2,12), (3,6), (3,12), (4,8),
(4,12), (6,12)}. Легко переконатись, що це відношення рефлексивне, антисиметричне й
транзитивне й, отже, є відношенням нестрогого порядку на множині А. ▲
Означення 6.5.2. Множину А з частковим порядком R прийнято називати частково
впорядкованою множиною і позначати (А, R). Множину А з лінійним порядком R
прийнято називати лінійно (тотально, повністю) впорядкованою множиною
(ланцюгом). Два елементи а та b частково впорядкованої множини (А, R) називають
порівняльними, якщо а R b або b R а. Якщо а та b такі елементи, що ані а R b, ані b R а,
то їх називають непорівняльними.
Наприклад, елементи 3 та 4 множини (А, R1 ) з прикладу 6.5.1 – непорівняльні,
сама ця множина є частково впорядкованою, але не лінійно впорядкованою. Множина
дійсних чисел є лінійно впорядкованою, а булеан – частково впорядкований.
Якщо у частково впорядкованій множині будь-які два елементи порівняльні, то вона
є лінійно впорядкованою.
Приклад 6.5.2. Нехай А= E2n – множина всіх булевих векторів довжиною п (див. 7.2).
Визначимо частковий порядок на цій множині так: (а1,а2,..., аn)<(b1,b2,..., bn) тоді й тільки
тоді, коли aі bі (i=1,2,.. .,п). Цей частковий порядок не є лінійним порядком. Наприклад,
не можна порівняти вектори (010000) та (101000). ▲
Якщо х передує у і не існує таких елементів z, для яких хRz і zRу, х називають
безпосереднім попередником у і пишуть x y (інколи також кажуть, що у покриває
х). Лінійним порядком на множині А називають відношення порядку, за якого з будь-
якої пари елементів можна виділити попередній і наступний.
У довільно взятого елемента у може бути багато попередніх елементів. Приклад
лінійного порядку: лексикографічне упорядкування слів у словнику.
Запишемо R1 R2 , R1 R2 , R1 \ R2 , R2 \ R1 .
Розв’язання.
R1 R2 ={(1,1), (1,2), (1,3), (1,4), (2,2), (3,3)}, R1 R2 ={(1,1)},
R1 \ R2 ={(2,2), (3,3)}, R2 \ R1 ={(1,2), (1,3), (1,4)}. ▲
доповнення відношення: R {( a , b ) : ( a , b ) R } A B ;
універсальне (повне) відношення: U {( a , b ) : a A b B } A B ;
порожнє відношення: R .
Для п’ятиелементної множини А={a1, a2, a3, a4, a5} графи тотожнього, повного і
порожнього відношень зображено на рис. 6.11.
а б в
Рис. 6.11. Графи часткових випадків відношень:
тотожнього (а), повного (б), порожнього (в)
Якщо повне відношення задане за допомогою матриці, то всі її елементи дорівнюють 1.
Матриця порожнього відношення складається з нульових елементів.
Очевидно, що (R-1)-1=R. Наприклад, оберненим щодо «… батько …» на множині
всіх людей буде відношення «… дитина …», для відношення “… більше або дорівнює
…” оберненим є відношення “… менше або дорівнює …”, для відношення “… ділиться на
…” – відношення “… є дільником …”. Якщо в орграфі, який зображає вихідне
відношення, обернути всі стрілки, отримаємо обернене відношення.
Для бінарних відношень існує особлива операція, якої не визначено для множин –
композиція.
Елементи композиції R R мають вигляд (x, z), де xRz та yRz для будь-якого
y A . Тому у випадку транзитивності R композиція R R має бути підмножиною R.
Однак із розміщення значення Т в матрицях, виписаних вище, видно, що R R містить
пари, які не належать R. Тому відношення R антитранзитивне. ▲
Теорема 6.1. Якщо якась пара (а, b) належить якомусь степеню відношення R на
множині А потужності п, то ця пара належить і деякому степеню R не вище п-1.
Можна переконатись, R 5 R 4 . ▲
R. Очевидно, що R R* .
Приклад 6.7.1. Нехай визначено множину людей {Ігор, Павло, Марія, Олена,
Оксана}, і відомі такі факти:
Ігор є нащадком Павла,
Марія є нащадком Павла,
Олена є нащадком Марії,
Оксана є нащадком Олени.
Знайдемо транзитивне замикання відношення R *.
Розв’язання.
Задану інформацію можна подати у вигляді відношення R : “… є нащадком …”.
Тоді факти можна представити таким чином: Ігор R Павло, Марія R Павло, Олена
R Марія, Оксана R Олена.
Знайдемо транзитивне замикання відношення R *.
R* ={(Ігор, Павло), (Марія, Павло), (Олена, Марія), (Оксана, Олена), (Олена,
Павло), (Оксана, Павло), (Оксана, Марія)}.▲
R r* ={(1, 1), (1, 2), (1, 3), (3, 1), (2, 3); (2, 2), (3, 3)}.
R t* {(1, 1), (1, 2), (1, 3), (3, 1), (2, 3); (3, 2), (2, 1), (3,3)}.
Тепер у нас виникло поєднання (2, 1) і (1, 2), тому замикання має містити пару (2, 2).
Як бачимо, всі необхідні пари ми додали (хоч би тому, що ми перебрали всі пари з А2).
Отже,
Rt* {(1, 1), (1, 2), (1, 3), (3, 1), (2, 3); (3, 2), (2, 1), (3,3), (2,2)}. ▲
впорядковані пари (2, 2 ) і (2, - 2 ). Крім того, в ньому відсутні пари (х, у) з
від’ємними х. ▲
Розв’язання
а) ця функція не ін’єктивна, бо значення 1 відповідає і а, і b. Вона не є і сюр’єкцією, бо
в елемент 2 нічого не переходить;
б) ця функція ін’єктивна, бо не має повторюваних значень. Вона і сюр’єктивна, бо
множина її значень збігається зі всією областю значень;
в) значення 1 ця функція набуває і на а, і на b, тому вона не ін’єктивна. Однак вона
сюр’єктивна, бо в її множину значень входять всі елементи області значень;
г) остання функція ін’єктивна, але не сюр’єктивна.
функція f 1 складається з пар (b, а), де a f 1 (b). Отже, оборотна функція має
Теорема 6.6. Функція f оборотна тоді і лише тоді, коли вона бієктивна.
Доведення.
Доведення складається з двох частин.
Спочатку ми доведемо, що бієктивна функція є оборотною. Нехай f : A B –
бієкція. Як відношення її можна визначити з допомогою предикатів:
f {(a, b) : a A f (a) b}.
f 1 {(b, a) : a A f ( a) b}.
( g f )( x) g ( f ( x)) g ( x 2 ) 4 x 2 3,
Приклад 6.10.2. Яке найменше число прізвищ має бути записано у телефонному
довіднику, щоб гарантовано твердити, що хоч би два прізвища починаються з однієї і
тієї ж літери і закінчуються однаковими літерами?
Розв’язання.
Нехай А – множина прізвищ у довіднику, В – множина пар букв, виписаних з ал-
фавіту української мови, що нараховує 33 літери. Позначимо через f : A B функ-
цію, яка кожному прізвищу довідника ставить у відповідність пару літер: першу і оста-
нню літери прізвища. Наприклад, f(Мельник)=(м,к). Множина В містить 31 33 1023
пар літер (очевидно, що прізвища не можуть починатися з літер «и» та «ь»). Принцип
Діріхле гарантує нам, що якщо |А|>|В|=1023, то знайдеться щонайменше два прізвища,
які починаються і закінчуться на однакові літери. Тому телефонний довідник має
містити не менше 1024 прізвища. ▲
Принцип можна узагальнити так. Розглянемо функцію f : A B , де А і В –
скінченні множини. Якщо |А|>k |В| для деякого натурального k, то знайдеться таке
значення функції f, якого вона набуватиме щонайменше k+1 раз. Це твердження вірне
тому, що якщо кожне значення функція f набуває не більше k разів, то вся множина А
складається не більше, ніж з k |В| елементів.
Приклад 6.10.6. Яке найменше число прізвищ має бути записано у телефонному
довіднику, щоб гарантовано твердити, що хоч би п’ять прізвищ починаються з однієї і
тієї ж літери і закінчуються однаковими літерами?
Розв’язання.
Нехай f : A B функція з прикладу 6.10.2. Як ми вже підрахували, В складається
з 1023 елементів. Щоб щонайменше 5 прізвищ починались і закінчувались однаковими
буквами, потрібно, щоб |А|>4 |В| = 4092. Отже, телефонний довідник має містити не
менше, ніж 4093 абоненти. ▲
Принцип Діріхле використовують у задачах, в яких порівняно легко підрахувати
кількість елементів у множинах А і В (що буває не завжди), при цьому пошук функції,
яка підходить до розв’язання задачі, завжди є найтяжчою його частиною. У розділі 8
«Комбінаторний аналіз» ми розглянемо різні методи перерахунку, які дадуть нам
можливість визначати потужності скінченних множин, елементи яких вибираються
визначеними способами.
6.11. Подання відношень та функцій у програмах
2
Нехай R відношення на А, R А і |A|=n. Перенумеруємо елементи множини А,
тоді це відношення можна подати булевою матрицею М.
У підрозділі 4.5 ми розглянули операції множення і диз’юнкції над булевими
матрицями:
n
множення: (M N) [i] [j]= k 1 (M[i] [k] && N[k][ j]);
диз’юнкція: (M N) [i] [j] = M[i] [j] || N[i] [j];
тут уведемо ще й інші. Зокрема, якщо М і N – булеві матриці, то операції над ними
визначають так:
транспонування: MТ[i] [j]=M[j] [i];
віднімання: (M-N) [i] [j]=M[i] [j] && (1-N[i] [j]);
T
Теорема 6.4. M R1 ( M R ) .
Доведення.
(b, a ) R 1 (a, b) R M R [a ][b] 1 ( M R )T [b][a ] 1 .
Теорема 6.5. M R MU M R .
Доведення.
( a, b) R ( a , b) R M R [a ][b] 0 MU [a ][b] M R [a ][b] 1
(MU M R )[a ][b] 1.
Наслідок. M R M R .
Теорема 6.5. M R2 R1 M R1 M R2 .
Доведення.
( a, b) R1 R2 b A ( aR1b bR1c ) b A ( M R1 [a ][b] 1 M R2 [b][c ] 1)
b A ((M R1 [a ][b] M R2 [b][c ]) 1) ( kn1 M R1 [ a ][ k ] M R2 [ k ][ c ]) 1
M R1 M R2 [a ][b]) 1.
Наслідок. M Rk (M R )k .
Доведення.
(a, b) R1 R2 aR1b aR2b M R1 [a ][b] 1 M R2 [a ][b] 1)
(M R1 M R2 )[a ][b] 1).
Доведення.
(a, b) R1 R2 aR1b aR2b M R1 [a ][b] 1 M R2 [a ][b] 1)
(M R1 M R2 )[a ][b] 1).
1 1 1 0 0 0 0 0 0
M P M R1R2 M R1 M R2 0 1 1 1 0 0 0 0 0 .
1 0 1 1 1 0 1 0 0
1 0 1 0 1 1
R11 1 1 0 , R21 0 0 1 ,
1 1 1 0 0 0
Мij =Т, якщо (аі, bj) R , Мij =F, якщо (аі, bj) R .
Nij =Т, якщо (bі, cj) S, Nij =F, якщо (bі, cj) S.
Оскільки Т в диз’юнкції поглинає всі інші доданки, то, знайшовши при логічному
множенні найперше Т, обчислення далі проводити не варто. ▲
Означення 7.2.1. Вектор (р1, р2,..., рп), координати якого набувають значень з
множини Е2={0, 1}, називають булевим (двійковим) вектором довжини п. Множину
всіх булевих векторів довжини п називають булевим (двійковим) п-мірним кубом
n
(позначають E 2 ).
n
Бачимо, що є рівно 2п різних булевих векторів, тобто множина E 2 складається з 2п
елементів. Як вже ми говорили раніше (розділ 1), будемо впорядковувати булеві
вектори в порядку зростання чисел, які вони зображають у двійковій системі числення.
а) б) в) г)
Рис. 7.2. Таблиці істинності мінтерма (а), макстерма (в),
булевих функцій (б, г)
Нехай т(р1, р2,..., рr) – мінтерм. Тоді в останньому стовпці таблиці істинності
функції буде лише одна 1. Візьмемо рядок таблиці істинності, останній символ в якій –
1. Якщо в цій стрічці змінна рі=1, то в елементарній кон’юнкції, яка зображає функцію
Приклад 7.3.2. Розглянемо булеву фукцію трьох змінних f(p,q,r), задану таблицею
істинності (рис. 7.2, б) і випишемо для неї ДДНФ.
Розв’язання.
Одиниці останнього стовпця в цій таблиці відповідають трьом мінтермам:
p q r, p q r, p q r.
Таблиця істинності функції f може бути одержана накладанням таблиць істинності
виписаних мінтермів.
Оскільки диз’юнкція «поглинає» всі нулі (іншими словами, f1 f2 ... fr рівна 1
тоді і лише тоді, коли серед значень fі знайдеться хоч би одна 1), то функція f дорівнює
диз’юнкції трьох мінтермів:
f(p,q,r)= ( p q r ) ( p q r ) ( p q r ).
Це і є ДДНФ функції f.
Очевидно, що в такій формі можна записати довільну булеву функцію з довільним
числом змінних.
Означення 7.3.3. Диз’юнкцію будь-якої кількості різних незалежних змінних
(літер), що входять із запереченням або без нього, називають елементарною
диз’юнкцією. Кількість змінних, що входять до складу елементарної диз’юнкції,
називають її рангом. Кон’юнктивна нормальна форма (КНФ) функції – її подання
формулою у вигляді кон’юнкції елементарних диз’юнкцій.
Наприклад, x y та x y z є елементарними диз’юнкціями, а x y z – ні. Ранг
першої з наведених елементарних диз’юнкцій дорівнює 2, другої – 3, КНФ функції:
f ( x, y, z ) ( x y z ) ( x y z ) ( x z ) .
Приклад 7.3.3. Розглянемо булеву фукнцію М(p,q,r) від булевих змінних p,q і r з
такою таблицею істинності (рис. 7.2, в) і випишемо для неї елементарну диз’юнкцію.
Розв’язання.
Функція М – приклад макстерма, тобто булевої функції, яка приймає значення 0
тільки на одному наборі значень аргументів. Оскільки М(p,q,r)=0 тільки, якщо p=1,
q=0, r=0, то М(p,q,r)= p q r. Вираз p q r. є елементарною диз’юнкцією.
Пояснимо, як будь-який макстерм можна записати у вигляді елементарної
диз’юнкції, тобто як диз’юнкцію змінних рі або їх заперечень.
Нехай М(р1, р2,..., рr) – макстерм. Тоді в останньому стовпці таблиці істинності
функції буде лише один 0. Візьмемо рядок таблиці істинності, останній символ в якій –
0. Якщо в цій стрічці змінна рі=0, то в елементарній диз’юнкції, яка зображає функцію
f ( x1 , x 2 ,..., x n ) ( ~
x1 ~
x 2 ... ~
xn )
0
f ( x1 , x 2 ,..., x n ) ( ~
x1 ~
x 2 ... ~
xn ) ,
1
а ~
xi – це xi або xi (і=1, 2, ..., п).
Доведення. Як доведення подамо кроки алгебраїчних перетворень, які дозволять
перетворити довільну функцію у ДДНФ та ДКНФ.
Крок 1. Застосувати правила (1.1)-(1.3) (розділ 1) для усунення логічних операцій
імплікації, еквівалентності та додавання за модулем 2.
Крок 2. Застосувати закон подвійного заперечення та закони де Моргана для
перенесення знака заперечення безпосередньо до змінних.
Крок 3. Застосувати відповідні закони дистрибутивності. Щоб побудувати КНФ,
потрібно використати дистрибутивний закон А для диз’юнкції щодо кон’юнкції (ліва
колонка з табл. 1.8, розділ 1). Для побудови ДНФ слід застосувати дистрибутивний
закон В для кон’юнкції щодо диз’юнкції (права колонка з табл. 1.8, розділ 1).
Крок 4. Застосувати закони ідемпотентності для видалення повторних входжень
змінних.
Крок 5. За правилом розвинення у кожну кон’юнкцію (для ДДНФ) чи диз’юнкцію
(для ДКНФ), які не містять всі змінні, додати ті, яких не вистачає.
Крок 6. Застосувати закони комутативності для сортування змінних.
( p ( q r )) s закон де Моргана В,
p (q r ) s закон асоціативності А,
p (q r ) s закон де Моргана А,
p (q r ) s закон подвійного заперечення В,
p s (q r ) закон комутативності А,
( p s ) (q r ) закон асоціативності А,
( p q s) ( p r s) закон дистрибутивності А.
Ми одержали шукану КНФ. Ця форма також не єдина. ▲
( x y z ) (x 0 z ) ( y z ) 4 (x y z ) ( y z ) 4
( x y z ) (( x x ) ( y z ))5 ( x y z ) ( x y z ) ( x y z ) 4
( x y z ) ( x y z ).
7.4. Мінімізація булевих функцій
pq pq pq pq
r 1 1
r 1
Рис. 7.5. Невдале позначення стовпців карти Карно виразу pqr pqr pq r
pq pq pq pq
r 1 1
r 1
а) б)
wx wx wx wx
yz 1 1
yz 1 1 1 1
yz 1 1 1 1
yz 1
wx wx wx wx
yz 13
yz 12
yz 14
yz 11 15
Рис. 7.11. Карта Карно функції f (w, x, y, z ) w xyz w xyz w xyz wxyz wx yz
wx wx wx wx
yz d d 1
yz d d 1
yz 1 d
yz 1 d 1
Блок з 8-ми елементів (2-й та 3-й стовпці) дає w, два блоки з 4-х елементів дають
xy та xz (1-й блок – це 3-й та 4-й стовпці і 1-й та 2-й рядки, другий блок – це ті ж
стовпці і 1-й та 4-й рядки). Отже, f ( w, x, y , z ) w xy xz .
Розглянутий спосіб можна узагальнити на булеві функції від п’яти і навіть шести
змінних, однак тривимірні діаграми, які виникають при цьому, і додаткові ускладнен-
ня роблять метод карт Карно малопродуктивним. Тому є інші способи спрощення бу-
левих функцій від будь-якої кількості змінних, зокрема, методи Квайна і Мак-Класкі.
Використовуючи карту, аналогічну карті Карно (її називають картою Вейча),
можна побудувати мінімальну кон’юктивну нормальну форму, при цьому групування
слід проводити за нулями, а не за одиницями.
7.6. Методи побудови скороченої диз’юнктивної
нормальної форми
f 0' x y z x yz x y z x y z xyz x y yz x y xz .
отримали СДНФ.
Метод Мак-Класкі. Удосконалення, зроблені Мак-Класкі до методу Квайна,
полягають у його формалізації щодо реалізації на комп’ютері.
Алгоритм методу Мак-Класкі
Крок 1. Записати булеву функцію, яку потрібно скоротити, в ДДНФ.
Крок 2. Упорядкувати змінні й записати їх у кожній ЕК у вибраному порядку.
Після цього подати кожну ЕК послідовністю з 1, 0 та – (рисок): на і-тій позиції
записати 1, якщо і-та змінна входить до ЕК без заперечення, 0 – якщо вона входить із
запереченням, і риску, якщо не входить. Наприклад, ЕК xyz , x z , x u записують,
відповідно, у вигляді 111-, 1-0-, 1- -0.
Крок 3. Розбити двійкові вирази, які відповідають ЕК, на класи за кількістю
одиниць і розмістити списки цих класів за зростанням кількості одиниць. Для ДДНФ з
прикладу 7.6.1 отримаємо список з п’яти елементів, розбитих на три класи (рис. 7.13,
а). Ми відділили їх рисками.
Крок 4. Виконати всі можливі склеювання ku ku k . Їх можна застосувати
лише до тих елементів списку, що містяться в сусідніх класах. Склеюють елементи, які
відрізняються лише однією позицією (і в цій позиції не має бути риска), їх позначають
зірочкою (*) і надалі вони не входять у список простих імплікант.
Повторювати крок 4 доти, доки можна застосувати склеювання. Якщо помістити
до одного класу всі імпліканти, отримані з двох сусідніх класів, то на черговому
повторенні кроку 4 нам знову доведеться порівнювати лише елементи із сусідніх
класів. Попередній список після опрацювання має вигляд, як на рис. 7.13, б. Склеємо
1-й і 3-й елементи та 2-й і 4-й з 1-го і 2-го класів і помістимо їх в новий 1-й клас. Потім
склеємо перші елементи 2-го та 3-го класів та 2-й елемент 2-го класу з 1-м елементом
3-го класу, помістимо їх в новий 2-й клас (рис. 7.13, в).
010 *010 01-
100 *100 10-
011 *011 -11
101 *101 1-1
111 *111
а) б) в)
Рис. 7.13. Знаходження СДНФ методом Мак-Класкі
Далі склеювати неможливо. Непозначеними зірочкою залишились 4 елементи.
Отже, множина всіх простих імплікант { x y , yz , x y , xz }, а її СДНФ –
x y yz x y xz .
Метод Блейка. У розглянутих вище методах відшукання СДНФ починалось з
ДДНФ. Якщо знаходять СДНФ функції, заданої довільною ДНФ, то доцільно
застосовувати метод Блейка. Він грунтується на використанні тотожності
узагальненого склеювання (УС):
xz y z xz y z xy , (7.1)
Розв’язання.
Очевидно, що перший і другий члени формули можна піддати УС як по х, так і по
у. Але члени, що виникають унаслідок цих склеювань ( yyz, xx z ) , дорівнюють нулю.
Нетривіальне УС тут можливе лише для першого та третього членів формули.
Застосувавши його, одержимо ДНФ f1 x y x yz yz xz .
У цій формі нетривіальне УС можна застосувати до 1-го і 3-го, а також до 2-го та
4-го членів. Проте обидва ці склеювання дають члени xz i yz, які вже є у формі f1, тому
бачимо, що у цій формі виконано всі можливі УС. Виконавши елементарне поглина-
ння (член x yz поглинається членом yz ), отримаємо СДНФ f 2 x y yz xz .
Розглянемо важливу властивість СДНФ.
Теорема 7.5. Якщо СДНФ булевої функції не містить жодної букви, яка б
входила до неї водночас із запереченням і без нього, то ця СДНФ є МДНФ.
Доведення. До ДНФ f, яка не має жодної букви водночас із запереченням і без
нього, не можна застосувати тотожність УС (7.1). Це саме стосується і диз’юнкції
довільної кількості членів цієї форми. Якщо f – СДНФ, то її можна відновити за
допомогою УС з МДНФ, що є якоюсь частиною f. Отже, тоді МДНФ збігається зі
СДНФ.
Теорема 7.6. Якщо в будь-якій КНФ булевої функції розкрити всі дужки згідно з
дистрибутивним законом і виконати всі поглинання, то одержимо СДНФ цієї
функції.
Для доведення достатньо переконатись, що розкривши дужки в довільній КНФ
булевої функції, можна отримати будь-яку наперед задану просту імпліканту цієї
функції.
Розв’язання.
Розкривши дужки, отримаємо
f ( xz x y y z )( x y z ) xz xyz x y z x y z .
f 0 x y z x yz x y z x y z xyz .
Розв’язання.
Будуємо імплікантну таблицю (табл. 7.2).
Таблиця 7.2
k p \k x yz x yz xyz xyz xyz
xy * *
xy * *
xz * *
yz * *
АБО НЕ
І НЕ-І
Рис. 7.14. Стандартні позначення основних функціональних елементів
Означення 7.9.2. Блоковим кодом називають код, у якому при кодуванні до вхідної
інформації додається надлишкова; його позначають (n,k), де n – кількість розрядів у закодо-
ваній комбінації (прийнято називати довжиною (значністю) коду), k – кількість інформа-
ційних розрядів вхідної інформації. Якщо вихідні k біт код залишає незмінними, і додає r=n-
k контрольних, такий код називають систематичним, інакше несистематичним. Вели-
чину, на яку збільшується вхідна інформація при блоковому кодуванні, називають
надмірністю коду.
Надмірність коду (n,k) обчислюють за формулою:
Rнад = r/n=(n−k)/п.
Означення 7.9.7. Кодом Геммінга називають (n, k) – систематичний код, який містить
p1 0 1 0 1 0 1 0 1 0
0 p2 1 0 0 1 1 0 0 0
0 0 0 d p 1 d 1 d 1 d 0 0 d ... 0 (7.3)
3 4 5 6 7 9
0 0 0 0 0 0 0 p8 1 0
... ... ... ... ... ... ... ... ... ...
або
p1 d3 d5 d7 ... 0, p2 d3 d6 d7 ... 0, p4 d 5 d 6 d 7 ... 0.
Синдром коду Геммінга має наступну особливість: якщо помилка сталась в одному
біті, то значення синдрому (..., s4, s3, s2, s1) вказує позицію помилки, якщо у двох бітах, то
синдром вказує лише на наявність помилок без можливості їх виправлення. Синдром
помилки обчислюють за співвідношеннями, аналогічними (7.3):
s1 p1 0 1 0 1 0 1 0 1
s 0
2 2 p 1 0
0 1
1
0 0
s 0 0 0 d p 1 d 1 d 1 d 0 0 d ...(7.4)
3 3 4 5 6 7 9
s4 0 0 0 0 0 0 0 p8 1
... ... ... ... ... ... ... ... ... ...
або
s1 p1 d3 d5 d7 ..., s2 p2 d3 d6 d7 ...,
s3 p4 d5 d6 d7 ..., s4 p8 d9 ....
або
p1 d3 d5 d7 0, p2 d3 d6 d7 0, p4 d 5 d 6 d 7 0.
Бачимо, що кожний з контрольних бітів покриває певні (не всі) інформаційні біти,
зокрема,
контрольний біт р1 покриває біти d3, d5, d7;
р2 покриває біти d3, d6, d7;
р4 покриває біти d5, d6, d7.
Зауважимо, що цю відповідність можна також отримати з діаграми Ейлера-Венна
перетину трьох множин (рис. 7.18), де множинами Аі (і=1, 2, 4) позначено контрольні
( p1 , p 2 , p 4 ) та відповідні їм інформаційні ( d3 , d5 , d6 , d7 ) біти, тобто
A1 p1 d 3 d 7 d 5 , A2 p 2 d 3 d 7 d 6 , A4 p4 d 5 d 7 d 6 .
Якщо помилки немає, то сума бітів у кожному крузі має бути парною. Якщо це не
так, то помилка сталась в розряді на перетині лише кругів з непарними сумами.
Наприклад, якщо сума бітів непарна лише в кругах, що відповідають р1 та р4, то
помилка сталась в розряді d5.
A2
A1
d3
p1
p2
d7
d5
d6
p4
A4
Синдром помилки (s3, s2, s1) у випадку однієї помилки вказує на біт, в якому вона
сталась.
При k=5 кількість контрольних бітів знаходимо з умови 2 r 1 < 5+r < 2 r , r=4 (8 < 9
< 16). Їх розміщуємо на позиціях 1, 2, 4 та 8, код записуємо у вигляді
p1 p 2 d 3 p 4 d 5 d 6 d 7 p8 d 9 , його синдром, враховуючи (7.4), має вигляд:
Додатковий контрольний біт р8 покриває лише біт d9, який також покриває і р1
(множина А8 перетинається лише з А1), тобто
контрольний біт р1 тепер покриває біти d3, d5, d7, d9.
Помилки при k=5 знаходять за допомогою таких перевірних співвідношень:
s1 p1 0 1 0 1 0 1 0 1
s2 0 p 2 1 0 0 1 1 0 0
s 0 0 0 3 p 1 5 1 6 1 7 0 0 d 9 . (7.8)
d d d d
3 4
s 0 0 0 0 0 0 0 p
4 8 1
або
s1 p1 d3 d5 d7 d9 , s2 p2 d3 d6 d7, s3 p4 d5 d6 d7,
s4 p8 d9.
Синдром помилки (s4, s3, s2, s1) у випадку однієї помилки вказує на біт, в якому
вона сталась.
s1 1 0 0 1 1 1
s2 0 1 0 0 1 0
s 0 0 1 1 1 1
3
Обчислений синдром вказує на помилку в п’ятій позиції (читаємо знизу догори), тобто
передане кодове слово було 1101001.
Для виявлення та виправлення помилки у другій комбінації знайдемо синдром
помилки, використовуючи (7.8):
s1 1 0 1 0 0 1 1
s2 0 1 1 1 0 0 1
s 0 0 0 1 0 0 1 .
3
s4 0 0 0 0 1 1 0
число Аnт росте доволі швидко і при великих п може не поміститися в розрядну сітку.
При обчисленні за другою формулою преповнення може настати «раніше часу», тобто
проміжні результати не поміщаються в розрядку сітку, хоч кінцевий результат міг би
поміститися, оскільки факторіал – функція, яка дуже швидко зростає.
Приклад 8.2.2. Скільки різних «слів» з 4-х літер можна написати, викорис-
товуючи літери: а, л, с, п, о, е, якщо під словом розуміти будь-яку послідовність літер,
що не повторюються, навіть, якщо вона не має жодного сенсу?
Розв’язання.
Ми маємо з 6-ти даних літер вибрати послідовності з 4-х, тобто треба підрахувати
кількість розміщень без повторень за формулою (8.3):
6! 6!
A64 6 5 4 3 360. ▲
(6 4)! 2!
Тепер займемося сполученнями без повторень. Оскільки розміщення без
повторень відрізняється від сполучень без повторень наявністю порядку, то число Ank ,
очевидно, є більшим за те, яке ми хочемо зараз знайти.
Проведемо експеримент. Зафіксуємо множину А={1, 2, 3, 4}, тобто п=4, а
вибирати будемо послідовності 3-х різних цифр з 4-х даних, не враховуючи порядку,
тобто k=3. Наприклад, підмножина {1, 2, 3} є (4, 3)-сполученням без повторень.
Переставивши цифри у вибраній підмножині {2, 1, 3} ми отримаємо те ж саме
сполучення (бо тут порядок неважливий), але цілком інше розміщення (бо там порядок
важливий). То ж скільки різних розміщень можна утворити з одного сполучення? У
цьому конкретному випадку, перебравши всі варіанти, отримаємо 6.
Сформулюємо запитання в загальному випадку:
Дано (п, k)-сполучення без повторень, тобто вибрано підмножину B A , де |В|=k і
|А|=п. Скільки з нього можна отримати різних (п, k)-розміщень без повторень?
Фактично нам треба підрахувати кількість (k, k)-розміщень без повторень, тобто
k! k!
Akk k!, бо 0!=1 (існує єдина можливість не зробити жодного вибору зі
(k k )! 0!
скінченної множини об’єктів).
Отже, на кожне (п, k)-сполучення без повторень маємо k! різних (п, k)-розміщень
без повторень. Тому, ввівши позначення, маємо кількість всіх (п, k)-сполучень без
повторень
Ank n!
Cnk . (8.4)
k! (n k )!k!
як кількість всіх (7, 2)-сполучень без повторів, тобто дорівнює C72 . Дійсно, першу
мітку можна поставити в будь-яку з 7 комірок, другу – в будь-яку з 6, оскільки одна
комірка вже зайнята. Це дає нам 7 6 можливостей. Зауважимо, що помінявши
розставлені мітки місцями, ми отримаємо те саме заповнення комірок, тому 42 треба
поділити на 2. Отже, кількість способів рівна:
7 6 (1 2 3 4 5) 6 7 7!
C75 (C72 ) H 35 .
2 (1 2 3 4 5) 1 2 5!2!
(n k 1)! (n k 1)!
H nk Cnn1k 1 Cnk k 1 . (8.5)
(n k n 1)!(n 1)! (n 1)!k!
У табл. 8.1 зібрані разом всі формули для підрахунку кількості вибірок k
елементів з п-елементної множини.
Таблиця 8.1
(а+b)3=(a+b)(a+b)(a+b)=aaa+aab+aba+abb+baa+bab+bba+bbb=
=а3+3a2b+3ab2+b3.
Кожен з 8 доданків, які є після другого знаку рівності, отримано при множенні 3-х
змінних, які ми вибираємо по одній з кожної дужки. Ми бачимо, зокрема, що рівно 3
доданки містять одну змінну а і дві b, тому що ми маємо C32 3 способи вибору двох
дужок з трьох, звідки візьмемо змінну b (і з тої, що залишилась, беремо а). Аналогічно
отримуємо й інші коефіцієнти цього виразу: C30 1 , C31 3 і C33 1 . Щоб узгодити
символів b, взятих з k дужок, і а, взятих з решти (п-k) дужок. Оскільки є Cnk способів
вибору k дужок з п, то ми матимемо точно Cnk членів вигляду ап-k bk при k=0, 1, ..., п.
Отже,
n
n
(a b ) Cn0 a n C1n a n 1b Cn2a n 2b 2 ... Cnnb n Cnk a n k b k . (8.6)
k 0
C00
C10 C11
Оскільки Cn0 = Cnn =1, на зовнішніх сторонах трикутника Паскаля завжди є одиниці.
n n k 1 k 1 k n
2. Винесення за дужки. Cnk Cnk11 , Cnk Cn , Cn Cnk1 .
k k nk
0 1 n n
4. Cn C n ... C n 2 .
Доведення. Поклавши в біномі Ньютона (8.6) а=b=1, ми одержимо
Cn0 C 1n ... C nn (1 1) n 2 n.
0 1 2 n n
5. Cn Cn Cn ... (1) C n 0.
Доведення. Підстановка в біном Ньютона (8.6) а=1, b=-1 дає
Cn0 Cn2 ... Cn2m ... C1n Cn3 ... Cn2m 1 ... ,
причому кожна з цих сум дорівнює 2п-1, тобто
n n
2 2
Cn2k Cn2k 1 2 n 1 .
k 0 k 0
Cn0 Cn2 ... Cn2m ... (C1n Cn3 ... Cn2m 1 ...) 0,
випишемо всі числа довжиною 0, потім всі числа довжиною 1 і т.д. Маємо Cnk
підмножин потужності k, де кожна підмножина має довжину k, тобто всього в цій
n
послідовності kCnk чисел. З іншого боку, кожне число х входить у цю послідовність
k 0
10. Унімодальність.
Означення 3.1. Послідовність ( p n ) дійсних чисел називають унімодальною, якщо
існує такий натуральний номер m, що p 0 p1 ... p m ; pm pm 1 pm 2 ... pn ,
тобто:
послідовність строго зростає на відрізку 0, m, m 0;
послідовність строго спадає на відрізку m 1, n , m 1 n;
максимального значення досягають не більш ніж у двох точках: m і можливо, m+1.
За фіксованого n послідовність біноміальних коефіцієнтів C kn , k=0,1,2…,n
n
унімодальна, т= ([а] – ціла частина числа а). У разі парного n максимум досягається
2
n n n n 1 n 1
в точці т = = , а в разі непарного — у двох точках: т = = й m+1= .
2
2 2
2 2
8.4. Перестановки. Поліноміальна формула
оскільки член вигляду x1n1 x2n2 ...xrnr ми отримуємо, коли перемножуємо змінні х1,
n n
вибрані з п1 дужок, х2, вибрані з п2 дужок, і т.д. Тому коефіцієнт при x1 1 x2 2 ...xrnr
рівний кількості перестановок п об’єктів, з яких пі належить до і-го типу (і=1,..., r).
Щоб легше було розв’язувати комбінаторні задачі, розглянемо дві різні моделі для
введених комбінаторних понять. Кожна модель є насправді розв’язаною задачею.
6. Така модель не дає доброї інтерпретації для H пk , якщо не брати до уваги те, що H пk
– це кількість послідовностей довжини п+k-1, в яких рівно k одиниць і п-1 нуль.
bk min {x ak }
xB
{{1, 2, 3}}, {{1,2}, {3}}, {{2,3}, {1}}, {{1,3}, {2}}, {{1}, {2}, {3}}. ▲
яких містить 1 елемент, дорівнює C61 6 . Якщо в одному з двох блоків 2 елементи, то
кількість відповідних розбиттів дорівнює C62 15 . Нарешті, якщо два блоки, на які
розбивають вихідну множину, складаються з 3-х елементів, то кількість таких
(1) k k
1) S n, k
k!
(1)i Cki i n .
i 1
n 1
2) S n, k Cni 1S (i, k 1) . (8.12)
i k 1
n 1
3) S n Cni 1S i .
i 0
4) S n, k S n 1, k 1 kS (n 1, k ) .
n\k 1 2 3 4 5 6 … S n
1 1 … 1
2 1 1 … 2
3 1 3 1 … 5
4 1 7 6 1 … 15
5 1 15 25 10 1 … 52
6 1 31 91 65 15 1 … 203
… … … … … … … … …
Аналізуючи таблицю, можна зауважити, що S(п, 2)=2п-1-1, S(п, п-1)= Cn2 . Щодо
останнього виразу, дійсно, якщо п елементів розбивають на п-1 блоків, то всі блоки,
крім одного, будуть одноелементними, і розбиття визначається тим, які два елементи
складуть цей блок.
сумування членів, які містять перетин т множин Аі. Отже, елемент а враховано точно
C1r Cr2 Cr3 ... (1) r 1Crr разів у виразі в правій частині рівності. За властивістю 5
C1r Cr2 Cr3 ... (1) r 1Crr , але C1r 1 , тому Cr2 Cr3 ... (1)r 1Crr 1 . Це й
означає, що кожний елемент об’єднання множин ураховано у правій частині рівності
точно 1 раз.
Зазначимо, що формула (8.13) містить 2n-1 доданків, по одному для кожної
непорожньої підмножини з {А1, А2,..., Ап}.
N (i1 , i2 ,..., in ) – кількість елементів множини А, які не мають жодної
12! 12 11
N H 310 C10
10 10
31 C12 66. ▲
10!2! 2
Кількість розв’язків рівняння x1+х2+...+хn = k у цілих невід’ємних числах можна
визначити й тоді, коли на змінні накладено певні обмеження.
(алгоритм 1)
Крок 1. Шукаємо кількість N цілочислових розв’язків задачі:
x1 a1, x2 a2 , x3 a3 .
N H 38 C10
8
45.
3
Оскільки bi 3 7 4 3 3 17 11, перевіряємо:
i 1
b1 b2 a3 2 7 4 2 1 14 11 , b1 b3 a2 2 7 3 1 2 13 11,
b2 b3 a1 2 4 3 1 2 10 11 ,
тому згідно алгоритму 1 шукаємо кількість N ( 2 , 3 ) цілочислових розв’язків
відповідної задачі з обмеженнями на дві змінні:
x1 1 , x2 5 , x3 4 .
Маємо N ( 2 , 3 ) H 31 C31 3.
Знаходимо кількість цілочислових розв’язків відповідних задач з обмеженнями на
одну змінну:
x1 8, x2 1 , x3 1,
x1 1 , x2 5 , x3 1,
x1 1 , x2 1 , x3 4.
Одержимо
H N H nk 1 Cnk k . (8.16)