
Lectures / Лекція 09. Матроїди та жадібні алгоритми
.doc
Основи Дискретної Математики :: Матроїди та жадібні алгоритми |
|
Лекція 9. Матроїди та жадібні алгоритми
В цьому розділі розглядається наступна проста задача, але яка зустрічається доволі часто. Задана кінцева множина Е, елементам якої приписані додатні ваги, та сімейство P(E). Треба знайти у сімействі елемент (підмножину Е) максимально сумарної ваги.
Виявляється, якщо сімейство має певну структуру (є матроїдом), то для вирішення задачі достатньо застосувати простий та ефективний алгоритм (жадібний алгоритм). Ясне розуміння природи та галузі застосування жадібних алгоритмів є дуже важливим.
Матроїди в загальному сенсі не є алгебраїчними структурами, але вони мають з ними багато спільного і вивчаються схожими методами.
9.1. Матроїди
Означення 9.1. Матроїдом M=E, називається скінчена множина E, |E| = n та сімейство її підмножин P(E), таке що виконуються наступні три аксіоми:
-
.
-
якщо A та BA, то B.
-
якщо A, B та |B| = |A| + 1, то x xB\A : A{x}.
Елементи множини називаються незалежними, а інші підмножини E (P(E) \ ) – залежними множинами.
Аксіома (1) виключає з розгляду вироджений випадок =.
Наприклад, сімейство лінійно незалежних множин векторів будь-якого векторного простору є матроїдом. Дійсно, за означенням можна вважати, що порожня множина лінійно незалежна (виконується аксіома 1). Будь-яка підмножина лінійно незалежної множини векторів лінійно незалежна (виконується аксіома 2). Нехай A={a1,…,am} та B={b1,…,bm+1} – лінійно незалежні множини. Якщо б всі вектори з множини В можна було виразити у вигляді лінійної комбінації векторів з множини А, то множина В була б лінійно залежною. Значить, серед векторів множини В є принаймні один вектор b, який не входить до множини А і який не можна виразити у вигляді лінійної комбінації векторів з множини А. Додавання вектора b до множини А утворює лінійно незалежну множину (виконується аксіома 3).
Означення 9.2. Нехай XE – довільна підмножина E. Максимальною незалежною підмножиною множини Х називається підмножина YX така, що Y і не існує такої підмножини ZX, що YZ (YZ) і Z.
Множину максимальних незалежних підмножин множини X позначимо Xm. Розглянемо наступне твердження:
-
для довільної множини X, якщо виконується YXm та ZXm, то |Y| = |Z|.
Тобто всі максимальні незалежні підмножини даної множини рівнопотужні.
Наприклад, нехай множина E = {a,b,c,d}. Тоді сімейство ={, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c}} P(E) утворює матроїд M=E, . Розглянемо множину X={b,c,d}E. Тоді максимальною незалежною підмножиною множини X буде множина Y={b,c} (YX та Y).
Теорема 9.1. Нехай M=E, і виконуються аксіоми (1) і (2). Тоді аксіома (3) та твердження (4) еквівалентні, тобто для A, B та |B| = |A| + 1 виконується x xB\A : A{x} тоді і тільки тоді, коли для довільної множини X, якщо виконується YXm та ZXm, то |Y| = |Z|.
Доведення. Необхідність. Нехай виконується твердження (1), (2) та (3), тобто М – матроїд. Доведемо від протилежного, що виконується (4). Нехай Y, ZXm і |Y| |Z| (для визначеності припустимо |Y|>|Z|). Візьмемо Y’Y, так що |Y’| = |Z| + 1. Тоді за властивістю (3) маємо x xY’\Z : Z{x}. Позначимо W= Z{x}. Таким чином, маємо W, ZW, WX, що суперечить припущенню ZXm.
Достатність. Нехай виконуються твердження (1), (2) та (4). Доведемо від протилежного, що виконується (3). Візьмемо A, B , так що |B| = |A| + 1. Припустимо, що не існує xB\A : A{x}, тобто xB\A : A{x}. Розглянемо множину C=AB, СP(E). Маємо ACm, тому що якщо додати будь-який елемент x до А з С\А (С\А=В\А), то нова множина А’= A{x} не буде входити у сімейство Ф (A{x}).
Але B, тому існує множина В’, така що BB’, B’ та B’Cm (якщо B не є максимально незалежною підмножиною C, то B буде строгою підмножиною B’, тобто |B|<|B’|; якщо B – максимальна незалежна підмножина C, тобто BCm, то B=B’). За умовою (4), маємо |B’| = |A|. Але |A| = |B’| |B| = |A| + 1, що є протиріччям. ►
Таким чином, (1), (2), (4) – еквівалентна система аксіом матроїда.
Означення 9.3. Максимальна незалежна підмножина множини E називається базисом матроїда M=E, .
Всякий матроїд має принаймні один базис, що можна бачити з наступного алгоритму побудови базису матроїда.
-
Беремо довільну множину B: B=.
-
Для всіх елементів xE, якщо B{x}, то включаємо елемент x до B: B = B{x}.
-
Кінець.
По завершенню роботи алгоритму, множина BE буде містити елементи, що утворюють базис матроїда M. Дійсно, нехай B0=, B1,…, Bk=B – послідовність значень змінної множини B в процесі роботи алгоритму. За побудовою всі Bj. Нехай BEm, тобто B не є максимальною. Тоді існує B’: BB’ та B’B таке, що B’ і B’Em. Візьмемо B’’B’ так, що |B’’| = |B| + 1, BB’’ та B’’. Розглянемо елемент xB’’\B. Елемент x не потрапив у множину B, але алгоритм переглядає всі елементи, значить елемент x був відхилений на деякому кроці j, тобто Bj-1{x}. Але xB’’ та Bj-1B’’ (тому що Bj-1B), тоді за аксіомою (2) Bj-1{x} - суперечність.
Теорема 9.2. Всі базиси матроїда рівнопотужні.
Доведення. Автоматично випливає з існування алгоритму побудови базису матроїда та твердження (4). ►
Повернемось до прикладу де множина E = {a,b,c,d}. Розглянемо сімейство 1={, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c}} P(E). Воно утворює матроїд M1=E, 1. Базисом матроїду M1 буде множина {a,b,c}. Розглянемо інше сімейство 2={, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}} P(E). Воно утворює матроїд M2=E, 2. Цей матроїд буде мати три базиси: {a,b}, {a,c}, {b,c}.
9.2. Жадібний алгоритм
Сформулюємо більш точно екстремальну задачу, що розглядається. Нехай є скінчена множина E, |E| = n, вагова функція w: ER+ та сімейство P(E). Треба знайти X таке, що:
,
де
.
Інакше кажучи, необхідно вибрати у вказаному сімействі підмножину найбільшої ваги.
Не обмежуючи загальності, можна вважати, що w(e1)… w(en)>0. Розглянемо наступний алгоритм.
Жадібний алгоритм.
На вхід подається множина E={e1,…,en}, сімейство його підмножин та вагова функція w. Множина E лінійно впорядкована у порядку зменшення ваг елементів.
-
Беремо довільну порожню множину X: X=.
-
Індекс i=1.
-
Якщо X{ei}, то додаємо до X елемент ei: X = X{ei}.
-
Збільшити індекс i на 1.
-
Якщо і більше кількості елементів у E (i>n), то кінець. Інакше перейти на п. 3.
По закінченню роботи алгоритму
множина Х буде задовольняти умовам
розв’язку задачі: X
та
.
Алгоритм такого типу називається жадібним. Очевидно, що за побудовою кінцева множина X. Також очевидно, що жадібний алгоритм є дуже ефективним: кількість кроків дорівнює O(n), тобто жадібний алгоритм є лінійним (не враховуючи затрати на сортування множини E та перевірку належності X{ei}).
Розглянемо приклад роботи жадібного алгоритму. Нехай E={a,b,c,d}, w(a)=4, w(b)=3, w(c)=2, w(d)=1 та 1={, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}} – сімейство. Розпишемо по кроках роботи алгоритму, чому дорівнює множина Х.
-
X = .
-
X = {a}.
-
X = {a, b}.
w(X) = w(a) + w(b) = 7. Легко бачити, що це є розв’язок задачі.
Тепер розглянемо інший приклад, коли множина Е та вагова функція лишаються тими самими, а сімейство 2 = P(E) \ {a,b,c,d}. Тоді:
-
X = .
-
X = {a}.
-
X = {a,b}.
-
X = {a,b,c}.
w(X) = w(a) + w(b) + w(c) = 9 розв’язок задачі.
Виникає питання: в яких випадках жадібний алгоритм дійсно розв’язує наведену задачу?
Наприклад, нехай дана матриця
Розглянемо наступні задачі.
-
Вибрати по одному елементу з кожного стовпця так, щоби їх сума була максимальною. Тут множину E можна представити двома способами. Перший – E1={xi | xi=(xi1, xi2, xi3)}, тобто множина стовпців. Тоді w1(xi) = max(xi1, xi2, xi3), Ф1=P(E1). Другий спосіб – представити множину E, як множину елементів матриці, впорядковану за значенням комірок, тобто E2={7, 5, 4, 3, 3, 3, 2, 1, 1} (хоча елементи множини повторюються, це наведено для спрощення сприйняття). В цьому випадку w2(x)=x, а Ф2 = Ф’ (YZФ’), де Ф’={{7,5,1}, {7,5,3}, {7,4,1}, {7,4,3}, {7,3,1}, {7,3,3}, {3,5,1}, {3,5,3}, {3,4,1}, {3,4,3}, {3,3,1}, {3,3,3}, {2,5,1}, {2,5,3}, {2,4,1}, {2,4,3}, {2,3,1}, {2,3,3}}. Неважко бачити, що жадібний алгоритм в обох представленнях вибере наступні елементи:
які дійсно є розв’язком задачі.
-
Вибрати по одному елементу з кожного стовпця та кожного рядка так, щоб їх сума була максимальною. Тут множина E=E2 (попередній приклад), w(x)=w2(x), а Ф2= =Ф’ (YZФ’), де Ф’={{7,4,1}, {7,3,3}, {3,5,1}, {3,3,1}, {2,5,3}, {2,4,1}}. Неважко бачити, що жадібний алгоритм в даному випадку вибере наступні елементи
які не є розв’язком задачі, оскільки існує кращий розв’язок:
Теорема 9.3. Якщо M=E, - матроїд, то для довільної функції w жадібний алгоритм знаходить незалежну множину X з найбільшою вагою. І навпаки, якщо M=E, не є матроїдом, то існує така функція w, що множина X, знайдена жадібним алгоритмом, не буде максимальною.
Доведення. Туди. Нехай M=E, - матроїд і нехай X={x1,…,xk} – множина, побудована жадібним алгоритмом. За побудовою w(x1) … w(xk) >0. Згідно з алгоритмом побудови базису, X – базис M. Нехай тепер Y={y1,…,ym} - деяка незалежна множина. Маємо mk, тому що X – базис. Покажемо, що w(yi)w(xi).
Від протилежного. Нехай w(yi)>w(xi). Розглянемо незалежні множини A={x1,…,xi-1} та B={y1,…, yi-1, yi}. Маємо ji {x1,…,xi-1, yj} – незалежна множина (за аксіомою 3 матроїда). Тоді w(yj) w(yi) > w(xi). Тобто це означає, що існує такий елемент yj, оцінка якого w(yj) більша за оцінку w(xi) (а може й ще деяких елементів xii, які йдуть перед xi при роботі алгоритму). Звідси маємо: pi w(x1) … w(xp-1) w(yj) w(xp), що суперечить тому, що xp – елемент з найбільшою вагою, додавання якого до {x1,…,xp-1} не руйнує незалежність. Отже на кроці p замість xp було потрібно обирати yj. Відповідно, i w(yi)w(xi) w(Y) w(X).
Назад. Нехай M=E, не є матроїдом. Якщо не виконується умова (2), тобто A, B AB, але AФ, то визначимо функцію w наступним чином:
Тоді з AФ, AX, тобто |X|<|A| (Примітка: з введеними вище вагами ми шукаємо тепер множину, яка просто містить найбільшу кількість з А. Зрозуміло, що це буде сама множина А, але вона не включена у сімейство Ф, а отже жадібний алгоритм не зможе знайти її в якості розв’язку).
Якщо ж умова (2) виконується, але не виконується умова (3), то A, B |A| = k та |B| = k+1 та xB\A A{x} – залежна множина (A{x} Ф). Нехай p=|AB|. Тоді p<k. Виберемо число q так, що 0 < q < 1/(kp). Визначимо функцію w наступним чином:
Відмітимо, що при таких вагах жадібний алгоритм спочатку вибере всі елементи з А і відкине елементи B\A. В результаті буде обрано множину X, вага якої менша за вагу множини B. Дійсно, w(X) = w(A) = k(1+q) = (kp)(1+q) + p(1+q) (kp)(1 + 1/(kp)) + p(1+q) = (kp+1) + + p(1+q) = w(B). ►
Той факт, що сімейство є матроїдом, означає, що для розв’язку поставленої екстремальної задачі можна застосовувати жадібний алгоритм, але з цього не слідує, що не може існувати ще більш ефективного алгоритму. З іншого боку, якщо сімейство не є матроїдом, то це ще не означає, що жадібний алгоритм не знайде правильного розв’язку – все залежить від властивостей конкретної функції w.
Жадібні алгоритми та їх властивості були вивчені досить недавно, але їх значимість на практиці дуже велика. Якщо вдається звести конкретну екстремальну задачу до такої постановки, де множина допустимих варіантів (з яких треба вибрати найкращий) є матроїдом, то в більшості випадків треба застосовувати відразу жадібний алгоритм, оскільки він є достатньо ефективним в практичному сенсі. Якщо ж, навпаки, виявляється, що множина допустимих варіантів не утворює матроїд, то це “погана ознака”. Скоріше за все, дана задача виявиться такою, що важко розв’язується. В цьому випадку краще достеменно вивчити задачу для отримання теоретичних оцінок складності, щоб запобігти безплідним намаганням винайти ефективний алгоритм там, де це насправді неможливо.
Розглянемо приклади матроїдів, які зустрічаються в деяких галузях дискретної математики.
-
Вільні матроїди. Якщо E – довільна скінчена множина, то M=E, P(E) - матроїд. Такий матроїд називається вільним. У вільному матроїді кожна множина незалежна.
-
Матроїди розбиття. Нехай {E1,…,Ek} – деяке розбиття множини E на непорожні множини. Іншими словами,
, Ei Ej = , Ej . Нехай ={AE : |AEi|1}, тобто у незалежну множину входить не більше ніж один елемент кожного блоку розбиття. Тоді M=E, - матроїд. Дійсно, умова (2) виконана. Якщо A, B та |B| = |A| + 1, то i |EiA| = 0 та |EiB| = 1. Позначимо через x той єдиний елемент з перерізу EiB. Тоді A{x}. Значить, виконується й умова (3).
-
Матроїд трансверсалей. Нехай E – деяка множина і - сімейство підмножин цієї множини (не обов’язково різних), P(E). Підмножина AE називається частковою трансверсаллю сімейства , якщо A містить не більше ніж по одному елементу для кожної підмножини Ei сімейства .
Наприклад, нехай E={a,b,c,d}, а Ф={(a,b}, {a,c}, {c,d}}P(E). Тоді множини {a}, {b}, {c}, {d}, {a,d}, {b,c}, {b,d} – часткові трансверсалі.
Часткові трансверсалі утворюють матроїд.