Алгоритм построения базы в пересечении матроидов — различия между версиями
(Новая страница: «==Постановка задачи== Даны матроиды <tex>M_1 = (S, I_1)</tex> и <tex>M_2 = (S, I_2)</tex>. Необходимо найти максим…») |
|||
Строка 12: | Строка 12: | ||
Если в графе <tex>D_{M_1, M_2}(J)</tex> нет пути из <tex>X_1</tex> в <tex>X_2</tex>, то <tex>J</tex> - искомое максимальное по мощности независимое множество в пересечении <tex>M_1</tex> и <tex>M_2</tex> | Если в графе <tex>D_{M_1, M_2}(J)</tex> нет пути из <tex>X_1</tex> в <tex>X_2</tex>, то <tex>J</tex> - искомое максимальное по мощности независимое множество в пересечении <tex>M_1</tex> и <tex>M_2</tex> | ||
|proof = | |proof = | ||
− | Отметим, что если <tex>X_1</tex> или <tex>X_2</tex> пустые, то <tex>J</tex> - база в одном из исходных матроидов <tex>M_1</tex> или <tex>M_2</tex> и, следовательно, искомое максимальное по мощности независимое множество в пересечении <tex>M_1</tex> и <tex>M_2</tex>. Таким образом, предположим, что <tex>X_1</tex> и <tex>X_2</tex> непусты. Пусть <tex>U</tex> - множество вершин, из которых достижимы вершины из <tex>X_2</tex>. Отсутствие пути из <tex>X_1</tex> в <tex>X_2</tex> означает, что <tex>X_1 \cap U = \emptyset</tex>, <tex>X_2 \subseteq U</tex> и <tex>\delta^- (U) = \emptyset</tex>(т.е. в <tex>U</tex> не входит ни одной дуги). Тогда: | + | Отметим, что если <tex>X_1</tex> или <tex>X_2</tex> пустые, то <tex>J</tex> - база в одном из исходных матроидов <tex>M_1</tex> или <tex>M_2</tex> и, следовательно, искомое максимальное по мощности независимое множество в пересечении <tex>M_1</tex> и <tex>M_2</tex>. Таким образом, предположим, что <tex>X_1</tex> и <tex>X_2</tex> непусты. Пусть <tex>U</tex> - множество вершин, из которых достижимы вершины из <tex>X_2</tex>. Отсутствие пути из <tex>X_1</tex> в <tex>X_2</tex> означает, что <tex>X_1 \cap U = \emptyset</tex>, <tex>X_2 \subseteq U</tex> и <tex>\delta^- (U) = \emptyset</tex> (т.е. в <tex>U</tex> не входит ни одной дуги). Тогда: |
{{Утверждение | {{Утверждение | ||
|statement = | |statement = |
Версия 09:02, 21 июня 2011
Постановка задачи
Даны матроиды
и . Необходимо найти максимальное по мощности независимое множество в пересечении иАлгоритм решения
До тех пор, пока множество теоремы Эдмондса-Лоулера), будем итерировать следующий алгоритм:
Определим граф замен , где
Пусть , , - кратчайший путь из в в графе . может и не существовать
Лемма: | ||||||||||
Если в графе нет пути из в , то - искомое максимальное по мощности независимое множество в пересечении и | ||||||||||
Доказательство: | ||||||||||
Отметим, что если или пустые, то - база в одном из исходных матроидов или и, следовательно, искомое максимальное по мощности независимое множество в пересечении и . Таким образом, предположим, что и непусты. Пусть - множество вершин, из которых достижимы вершины из . Отсутствие пути из в означает, что , и (т.е. в не входит ни одной дуги). Тогда:
| ||||||||||
Лемма: |
Доказательство: |
Пусть , . Тогда , и дуги из в составляют единственное полное паросочетание в . То есть, согласно лемме о единственном паросочетании в подграфе замен, индуцированным кратчайшим путем, . К тому же, , иначе - не кратчайший путь из в . Это означает, что , то есть . Так как , (т.е. . Симметрично, и, следовательно, . |
Таким образом, получаем следующий алгоритм:
- Псевдокод
граф замен > <- <- <- кратчайший путь из в if { <- } else { isMaximal <- true } }<- isMaximal <- false while (not isMaximal) { <построить