Жадный алгоритм поиска базы минимального веса — различия между версиями
Leugenea (обсуждение | вклад) |
|||
Строка 3: | Строка 3: | ||
жадный алгоритм поиска базы минимального веса | жадный алгоритм поиска базы минимального веса | ||
|statement= | |statement= | ||
− | Пусть на носителе матроида <tex>M = | + | Пусть на носителе матроида <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= | |proof= | ||
Псевдокод алгоритма: | Псевдокод алгоритма: | ||
+ | <tex>sort(X)</tex> // сортируем элементы по возрастанию веса | ||
<tex>B \leftarrow \emptyset</tex> | <tex>B \leftarrow \emptyset</tex> | ||
− | ''' | + | '''for''' <tex>i \leftarrow 0</tex> '''to''' <tex>\mid X \mid</tex> '''do''' |
− | + | '''if''' <tex>B \cup ArgOf(X[i]) \in I</tex> | |
− | + | <tex>B \leftarrow B \cup ArgOf(X[i])</tex> | |
− | Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По [[Теорема Радо-Эдмондса (жадный алгоритм)|теореме Радо-Эдмондса]] множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов из <tex>X</tex> так, чтобы после каждого добавления множество оставалось независимым. | + | Рассмотрим шаг алгоритма, когда мы пытаемся добавить элемент <tex>ArgOf(X[i])</tex>. Заметим, что если его можно добавить с сохранением независимости множества <tex>B</tex>, то это элемент минимального веса не из <tex>B</tex>, который можно добавить (при условии сохранения независимости <tex>B</tex> при добавлении). В самом деле, пусть <tex>ArgOf(X[j])</tex> — элемент минимального веса, который можно добавить к <tex>B</tex> с сохранением его независимости, тогда <tex>j<i</tex>. Но тогда он уже был бы добавлен на <tex>j</tex>-ом шаге алгоритма. |
+ | Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По [[Теорема Радо-Эдмондса (жадный алгоритм)|теореме Радо-Эдмондса]] множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов минимального веса из <tex>X</tex> так, чтобы после каждого добавления множество оставалось независимым. | ||
}} | }} |
Версия 21:48, 17 мая 2011
Теорема (жадный алгоритм поиска базы минимального веса): |
Пусть на носителе матроида задана весовая функция . Для любого выполнено: . Тогда база минимального веса матроида ищется жадно. |
Доказательство: |
Псевдокод алгоритма: // сортируем элементы по возрастанию веса for to do if Рассмотрим шаг алгоритма, когда мы пытаемся добавить элемент Понятно, что все базы имеют одинаковую мощность (иначе в меньшую можно было бы добавить элемент из большей по аксиоме матроидов, что противоречит определению базы). По . Заметим, что если его можно добавить с сохранением независимости множества , то это элемент минимального веса не из , который можно добавить (при условии сохранения независимости при добавлении). В самом деле, пусть — элемент минимального веса, который можно добавить к с сохранением его независимости, тогда . Но тогда он уже был бы добавлен на -ом шаге алгоритма. теореме Радо-Эдмондса множество минимального веса, имеющее мощность базы, (то есть база минимального веса) ищется последовательным добавлением в изначально пустое множество элементов минимального веса из так, чтобы после каждого добавления множество оставалось независимым. |