Теорема Радо-Эдмондса (жадный алгоритм) — различия между версиями
Firespace (обсуждение | вклад) (merge) |
Firespace (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | == Теорема Радо-Эдмондса == | ||
{{Теорема | {{Теорема | ||
|about= | |about= | ||
Строка 11: | Строка 12: | ||
Тогда верны два неравенства: | Тогда верны два неравенства: | ||
− | <br><tex>\omega (A \cup y) = \omega (A) + \omega (y) \ | + | <br><tex>\omega (A \cup y) = \omega (A) + \omega (y) \geqslant \omega (B) \Rightarrow \omega (A) \geqslant \omega (B) - \omega (y)</tex>, |
− | <br><tex>\omega (B \setminus y) = \omega (B) - \omega (y) \ | + | <br><tex>\omega (B \setminus y) = \omega (B) - \omega (y) \geqslant \omega (A)</tex>. |
Заметим, что величина <tex>\omega (A)</tex> с двух сторон ограничивает величину <tex>\omega (B) - \omega (y)</tex>. Значит, эти величины равны: | Заметим, что величина <tex>\omega (A)</tex> с двух сторон ограничивает величину <tex>\omega (B) - \omega (y)</tex>. Значит, эти величины равны: | ||
Строка 24: | Строка 25: | ||
== Жадный алгоритм поиска базы минимального веса == | == Жадный алгоритм поиска базы минимального веса == | ||
− | + | Обозначим: <br> | |
+ | <tex>n = |X|</tex> <br> | ||
+ | <tex>m =</tex> время, за которое мы проверяем на независимость. <br> | ||
{{Теорема | {{Теорема | ||
|about= | |about= | ||
Строка 32: | Строка 35: | ||
|proof= | |proof= | ||
Псевдокод алгоритма: | Псевдокод алгоритма: | ||
− | + | sort(X) <span style="color:green">// сортируем элементы по возрастанию веса</span> | |
<tex>B \leftarrow \varnothing</tex> | <tex>B \leftarrow \varnothing</tex> | ||
− | '''for''' <tex>i \leftarrow 0</tex> '''to''' <tex> | + | '''for''' <tex>i \leftarrow 0</tex> '''to''' <tex>n-1</tex> '''do''' |
'''if''' <tex>B \cup X[i] \in I</tex> | '''if''' <tex>B \cup X[i] \in I</tex> | ||
<tex>B \leftarrow B \cup X[i]</tex> | <tex>B \leftarrow B \cup X[i]</tex> | ||
Строка 41: | Строка 44: | ||
Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По [[Теорема Радо-Эдмондса (жадный алгоритм)|теореме Радо-Эдмондса]] множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов минимального веса из <tex>X</tex> так, чтобы после каждого добавления множество оставалось независимым. | Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По [[Теорема Радо-Эдмондса (жадный алгоритм)|теореме Радо-Эдмондса]] множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов минимального веса из <tex>X</tex> так, чтобы после каждого добавления множество оставалось независимым. | ||
− | Алгоритм работает за <tex>O( | + | Алгоритм работает за <tex>O(m \cdot n \log n)</tex>. На сортировку элементов из <tex>X</tex> по возрастанию весов уходит <tex>O(n \log n)</tex> и <tex>O(n)</tex> шагов цикла, каждый из которых работает <tex>O(m)</tex> времени. Однако, если считать, что проверка множества на независимость происходит за <tex>O(1)</tex>, асимптотика алгоритма будет <tex>O(n \log n)</tex> |
}} | }} | ||
== Примеры задач == | == Примеры задач == | ||
+ | * [http://informatics.mccme.ru/mod/statements/view.php?id=3580| informatics:mccme:ru:Остовное дерево] | ||
== Источники информации == | == Источники информации == | ||
* [[wikipedia:ru:Жадный алгоритм Радо — Эдмондса | Википедия — Жадный алгоритм Радо-Эдмондса]] | * [[wikipedia:ru:Жадный алгоритм Радо — Эдмондса | Википедия — Жадный алгоритм Радо-Эдмондса]] | ||
* [http://www.mathematik.hu-berlin.de/~wilhelm/greedy-vortrag.pdf| Greedy Algorithm And Edmonds Matroid Intersection Algorithm] | * [http://www.mathematik.hu-berlin.de/~wilhelm/greedy-vortrag.pdf| Greedy Algorithm And Edmonds Matroid Intersection Algorithm] | ||
+ | * [http://habrahabr.ru/post/120343/| Habrahabr:Жадные алгоритмы] | ||
+ | |||
+ | == Смотрите также == | ||
+ | * [[Теорема о базах]] | ||
+ | * [[Теорема Эдмондса-Лоулера]] | ||
[[Категория:Алгоритмы и структуры данных]] | [[Категория:Алгоритмы и структуры данных]] | ||
[[Категория:Матроиды]] | [[Категория:Матроиды]] |
Версия 20:36, 17 июня 2014
Содержание
Теорема Радо-Эдмондса
Теорема (Радо-Эдмондса): |
На носителе матроида задана весовая функция . Пусть — множество минимального веса среди независимых подмножеств мощности . Возьмем , , — минимальна.
Тогда — множество минимального веса среди независимых подмножеств мощности . |
Доказательство: |
Рассмотрим — множество минимального веса среди независимых подмножеств мощности .Из определения матроида: .Тогда верны два неравенства:
Заметим, что величина с двух сторон ограничивает величину . Значит, эти величины равны: .Следовательно, Таким образом получаем, что если объединить множество . с — минимальным из таких, что , — то получим множество минимального веса среди независимых подмножеств мощности . |
Жадный алгоритм поиска базы минимального веса
Обозначим:
время, за которое мы проверяем на независимость.
Теорема (жадный алгоритм поиска базы минимального веса): |
Пусть на носителе матроида задана весовая функция . Для любого выполнено: . Тогда база минимального веса матроида ищется жадно. |
Доказательство: |
Псевдокод алгоритма: sort(X) // сортируем элементы по возрастанию веса for to do if Рассмотрим шаг алгоритма, когда мы пытаемся добавить элемент . Заметим, что если его можно добавить с сохранением независимости множества , то это элемент минимального веса не из , который можно добавить (при условии сохранения независимости при добавлении). В самом деле, пусть — элемент минимального веса не из , который можно добавить к с сохранением его независимости, тогда . Но тогда он уже был бы добавлен на -ом шаге алгоритма.Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По теореме Радо-Эдмондса множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов минимального веса из так, чтобы после каждого добавления множество оставалось независимым. Алгоритм работает за . На сортировку элементов из по возрастанию весов уходит и шагов цикла, каждый из которых работает времени. Однако, если считать, что проверка множества на независимость происходит за , асимптотика алгоритма будет |
Примеры задач
Источники информации
- Википедия — Жадный алгоритм Радо-Эдмондса
- Greedy Algorithm And Edmonds Matroid Intersection Algorithm
- Habrahabr:Жадные алгоритмы