Теорема Радо-Эдмондса (жадный алгоритм) — различия между версиями
Sergej (обсуждение | вклад) |
Firespace (обсуждение | вклад) (merge) |
||
Строка 23: | Строка 23: | ||
}} | }} | ||
+ | == Жадный алгоритм поиска базы минимального веса == | ||
+ | |||
+ | {{Теорема | ||
+ | |about= | ||
+ | жадный алгоритм поиска базы минимального веса | ||
+ | |statement= | ||
+ | Пусть на носителе матроида <tex>M = \langle X, I \rangle</tex> задана весовая функция <tex>\omega: X \to \mathbb R</tex>. Для любого <tex>A \subset X</tex> выполнено: <tex>\omega(A) = \sum\limits _{x \in A} \omega(x)</tex>. Тогда база минимального веса матроида <tex>M</tex> ищется жадно. | ||
+ | |proof= | ||
+ | Псевдокод алгоритма: | ||
+ | <tex>sort(X)</tex> // сортируем элементы по возрастанию веса | ||
+ | <tex>B \leftarrow \varnothing</tex> | ||
+ | '''for''' <tex>i \leftarrow 0</tex> '''to''' <tex>|X|-1</tex> '''do''' | ||
+ | '''if''' <tex>B \cup X[i] \in I</tex> | ||
+ | <tex>B \leftarrow B \cup X[i]</tex> | ||
+ | Рассмотрим шаг алгоритма, когда мы пытаемся добавить элемент <tex>X[i]</tex>. Заметим, что если его можно добавить с сохранением независимости множества <tex>B</tex>, то это элемент минимального веса не из <tex>B</tex>, который можно добавить (при условии сохранения независимости <tex>B</tex> при добавлении). В самом деле, пусть <tex>X[j]</tex> — элемент минимального веса не из <tex>B</tex>, который можно добавить к <tex>B</tex> с сохранением его независимости, тогда <tex>j<i</tex>. Но тогда он уже был бы добавлен на <tex>j</tex>-ом шаге алгоритма. | ||
+ | |||
+ | Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По [[Теорема Радо-Эдмондса (жадный алгоритм)|теореме Радо-Эдмондса]] множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов минимального веса из <tex>X</tex> так, чтобы после каждого добавления множество оставалось независимым. | ||
+ | |||
+ | Алгоритм работает за <tex>O(|X| \log(|X|))</tex>. На сортировку элементов из <tex>X</tex> по возрастанию весов уходит <tex>O(|X| \log(|X|))</tex> и <tex>O(|X|)</tex> шагов цикла, каждый из которых работает <tex>O(1)</tex> времени (если считать, что проверка множества на независимость происходит за <tex>O(1)</tex>). | ||
+ | }} | ||
+ | |||
+ | == Примеры задач == | ||
+ | |||
+ | == Источники информации == | ||
+ | * [[wikipedia:ru:Жадный алгоритм Радо — Эдмондса | Википедия — Жадный алгоритм Радо-Эдмондса]] | ||
+ | * [http://www.mathematik.hu-berlin.de/~wilhelm/greedy-vortrag.pdf| Greedy Algorithm And Edmonds Matroid Intersection Algorithm] | ||
[[Категория:Алгоритмы и структуры данных]] | [[Категория:Алгоритмы и структуры данных]] | ||
[[Категория:Матроиды]] | [[Категория:Матроиды]] |
Версия 18:39, 17 июня 2014
Теорема (Радо-Эдмондса): |
На носителе матроида задана весовая функция . Пусть — множество минимального веса среди независимых подмножеств мощности . Возьмем , , — минимальна.
Тогда — множество минимального веса среди независимых подмножеств мощности . |
Доказательство: |
Рассмотрим — множество минимального веса среди независимых подмножеств мощности .Из определения матроида: .Тогда верны два неравенства:
Заметим, что величина с двух сторон ограничивает величину . Значит, эти величины равны: .Следовательно, Таким образом получаем, что если объединить множество . с — минимальным из таких, что , — то получим множество минимального веса среди независимых подмножеств мощности . |
Жадный алгоритм поиска базы минимального веса
Теорема (жадный алгоритм поиска базы минимального веса): |
Пусть на носителе матроида задана весовая функция . Для любого выполнено: . Тогда база минимального веса матроида ищется жадно. |
Доказательство: |
Псевдокод алгоритма: // сортируем элементы по возрастанию веса for to do if Рассмотрим шаг алгоритма, когда мы пытаемся добавить элемент . Заметим, что если его можно добавить с сохранением независимости множества , то это элемент минимального веса не из , который можно добавить (при условии сохранения независимости при добавлении). В самом деле, пусть — элемент минимального веса не из , который можно добавить к с сохранением его независимости, тогда . Но тогда он уже был бы добавлен на -ом шаге алгоритма.Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По теореме Радо-Эдмондса множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов минимального веса из так, чтобы после каждого добавления множество оставалось независимым. Алгоритм работает за . На сортировку элементов из по возрастанию весов уходит и шагов цикла, каждый из которых работает времени (если считать, что проверка множества на независимость происходит за ). |