171
правка
Изменения
м
Нет описания правки
{{Теорема
|id = minsum
|statement = Пусть <tex>M_1 = \langle S, I_1 \rangle</tex> и <tex>M_2 = \langle S, I_2 \rangle</tex> - — [[Определение матроида|матроиды]] с [[Ранговая функция, полумодулярность|ранговыми функциями]] <tex>r_1</tex> и <tex>r_2</tex>, соответственно. Тогда максимальная мощность множества из <tex>I_1 \cap I_2</tex> равна <tex>\min\limits_{U \subset S} (r_1(U) + r_2(S \setminus U))</tex>.
|proof =
Утверждение <tex>|I| \leq r_1(U) + r_2(S \setminus U)</tex> [[Теорема Эдмондса-Лоулера|доказывается]] легко.
В другую сторону докажем теорему алгоритмически. На каждом этапе алгоритм получает <tex>I \in I_1 \cap I_2</tex> и либо заключает, что множества большей мощности из <tex>I_1 \cap I_2</tex> получить невозможно, либо возвращает <tex>J \in I_1 \cap I_2: |J| = |I| + 1</tex>.
Введем двудольный ориентированный '''граф замен''' для <tex>M_1</tex> и <tex>M_2</tex> - — граф <tex>D</tex>. Левой долей <tex>D</tex> являются элементы текущего множества <tex>I \in I_1 \cap I_2</tex>, правой - — все остальные элементы <tex>S \setminus I</tex>. Проведем ребра <tex>(y, z): y \in I, z \in S \setminus I, I \setminus y \cup z \in I_1</tex>, а также <tex>(z', y'): y' \in I, z' \in S \setminus I, I \setminus y' \cup z' \in I_2</tex>.
[[Файл:ExchangeGraph.JPG]]
Пусть <tex>X_1 = \{z \in S \setminus I | I \cup z \in I_1 \}, X_2 = \{z \in S \setminus I | I \cup z \in I_2 \}, P</tex> - — кратчайший путь в <tex>D</tex> из <tex>X_1</tex> в <tex>X_2</tex>. Тогда [[Алгоритм построения базы в пересечении матроидов|алгоритм]] с помощью этого пути либо определяет максимальность набора <tex>I</tex>, либо позволяет найти набор большей мощности.
}}
== Источник ==
''Chandra Chekuri'' — [http://www.cs.illinois.edu/class/sp10/cs598csc/Lectures/Lecture17.pdf '''Combinatorial Optimization'''], с. 2-3.