Алгоритм Воршелла— це ефективний метод побудови транзитивного замкнення на відношенні R. Дія цього алгоритму полягає в перетворенні вхідної матриці MR , яка відображає відношення R, в вихідну транспоновану матрицю MR* на відношенні R*. В свою чергу R* є транзитивним замкненням від відношення R.
Принцип дії алгоритму
Задано відношення R на n-елементарній множині А={a1,a2,a3,…,an}. Алгоритм Воршелла будує послідовність булевих матриць W0,W1, W2, … , Wn, де W0=MR — матриця відношення R. Елементи матриці W(k) позначимо як w(k)ij. Якщо існує шлях із вершини ai до вершини aj такий, що всі його внутрішні вершини містяться в множині {a1,a2,a3,…,an}, утвореній першими k вершинами, то w(k)ij=1, а ні, то w(k)ij =0. Перша й остання вершини такого шляху можуть і не належати множині вершин {a1,a2,a3,…,ak}. Зазначимо, що Wn=MR*. Алгоритм Воршелла ефективно обчислює матрицю W(k) за матрицею W(k-1). Шлях із вершини ai у вершину aj із внутрішніми вершинами в множині {a1,a2,a3,…,ak} існує лише в двох випадках:
1. Якщо існує шлях із вершини ai у вершину aj із внутрішніми вершинами лише в множині {a1,a2,a3,…,ak-1}.
2. Якщо існує шлях із вершини ai у вершину ak та шлях із вершини ak у вершину aj, і кожний із цих шляхів має внутрішні вершини лише в множині {a1,a2,a3,…,ak}
У випадку 1 шлях існує тоді і лише тоді, коли w(k-1)ij=1, у випадку 2 — коли обидва елементи w(k-1)ik та w(k-1)kj дорівнюють 1. Отже, w(k)ij = w(k-1)ij˅(w(k-1)ik ˄w(k-1)kj), k=1,2,…,n.
Формула для практичної реалізації
Окрім того очевидно, що в разі i=k дії в першому рядку формули можна не виконувати. Отже,
Остання формула дає таке правило переходу від матриці W(k-1) до матриці W(k): для значень i≠k в разі w(k-1)ik=1 замінити i-й рядок матриці W(k-1) на диз'юнкцію i-го й j-го рядків цієї матриці.
Формальний алгоритм Воршелла
(i та j змінюються від 1 до n)
- Виконати W=MR, k=0. Ітерація.
- Виконати k=k+1;
- Для всіх i≠k таких, що wik=1 і для всіх j виконати операцію wij=wij˅wkj. Перевірка закінчення.
- Якщо k=n, то зупинитись. Отримано розв'язок W = MR*. В іншому випадку перейти до кроку 2.
Приклад
Відношення задано матрицею :
За алгоритмом Уоршалла побудуємо транзитивне замкнення цього відношення. Для k=1 перший рядок залишаємо без змін (i=k), другий і третій рядки замінюємо на диз'юнкцію кожного з них із першим :
Для k=2 отримаємо, що W(2)=W(1), бо всі елементи другого стовпця матриці W(1) нульові. Далі, для k=3 одержимо :
І, нарешті, коли k=4 матимемо остаточний результат — матрицю транзитивного замкнення :
Див. також
Джерела
Rosen, Kenneth H., Discrete Mathematics and its Applications, Third Edition, McGraw-Hill, Inc,1994.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm Vorshella ce efektivnij metod pobudovi tranzitivnogo zamknennya na vidnoshenni R Diya cogo algoritmu polyagaye v peretvorenni vhidnoyi matrici MR yaka vidobrazhaye vidnoshennya R v vihidnu transponovanu matricyu MR na vidnoshenni R V svoyu chergu R ye tranzitivnim zamknennyam vid vidnoshennya R Princip diyi algoritmuZadano vidnoshennya R na n elementarnij mnozhini A a1 a2 a3 an Algoritm Vorshella buduye poslidovnist bulevih matric W0 W1 W2 Wn de W0 MR matricya vidnoshennya R Elementi matrici W k poznachimo yak w k ij Yaksho isnuye shlyah iz vershini ai do vershini aj takij sho vsi jogo vnutrishni vershini mistyatsya v mnozhini a1 a2 a3 an utvorenij pershimi k vershinami to w k ij 1 a ni to w k ij 0 Persha j ostannya vershini takogo shlyahu mozhut i ne nalezhati mnozhini vershin a1 a2 a3 ak Zaznachimo sho Wn MR Algoritm Vorshella efektivno obchislyuye matricyu W k za matriceyu W k 1 Shlyah iz vershini ai u vershinu aj iz vnutrishnimi vershinami v mnozhini a1 a2 a3 ak isnuye lishe v dvoh vipadkah 1 Yaksho isnuye shlyah iz vershini ai u vershinu aj iz vnutrishnimi vershinami lishe v mnozhini a1 a2 a3 ak 1 2 Yaksho isnuye shlyah iz vershini ai u vershinu ak ta shlyah iz vershini ak u vershinu aj i kozhnij iz cih shlyahiv maye vnutrishni vershini lishe v mnozhini a1 a2 a3 ak U vipadku 1 shlyah isnuye todi i lishe todi koli w k 1 ij 1 u vipadku 2 koli obidva elementi w k 1 ik ta w k 1 kj dorivnyuyut 1 Otzhe w k ij w k 1 ij w k 1 ik w k 1 kj k 1 2 n Formula dlya praktichnoyi realizaciyiOkrim togo ochevidno sho v razi i k diyi v pershomu ryadku formuli mozhna ne vikonuvati Otzhe Ostannya formula daye take pravilo perehodu vid matrici W k 1 do matrici W k dlya znachen i k v razi w k 1 ik 1 zaminiti i j ryadok matrici W k 1 na diz yunkciyu i go j j go ryadkiv ciyeyi matrici Formalnij algoritm Vorshella i ta j zminyuyutsya vid 1 do n Vikonati W MR k 0 Iteraciya Vikonati k k 1 Dlya vsih i k takih sho wik 1 i dlya vsih j vikonati operaciyu wij wij wkj Perevirka zakinchennya Yaksho k n to zupinitis Otrimano rozv yazok W MR V inshomu vipadku perejti do kroku 2 PrikladVidnoshennya zadano matriceyu Za algoritmom Uorshalla pobuduyemo tranzitivne zamknennya cogo vidnoshennya Dlya k 1 pershij ryadok zalishayemo bez zmin i k drugij i tretij ryadki zaminyuyemo na diz yunkciyu kozhnogo z nih iz pershim Dlya k 2 otrimayemo sho W 2 W 1 bo vsi elementi drugogo stovpcya matrici W 1 nulovi Dali dlya k 3 oderzhimo I nareshti koli k 4 matimemo ostatochnij rezultat matricyu tranzitivnogo zamknennya Div takozhAlgoritm Flojda UorshellaDzherelaRosen Kenneth H Discrete Mathematics and its Applications Third Edition McGraw Hill Inc 1994