Алгоритм построения базы в пересечении матроидов — различия между версиями
Строка 1: | Строка 1: | ||
==Постановка задачи== | ==Постановка задачи== | ||
− | Даны матроиды <tex>M_1 = \langle S, I_1 \rangle</tex> и <tex>M_2 = \langle S, I_2 \rangle</tex>. Необходимо найти максимальное по мощности независимое множество в пересечении <tex>M_1</tex> и <tex>M_2</tex> | + | Даны матроиды <tex>M_1 = \langle S, I_1 \rangle</tex> и <tex>M_2 = \langle S, I_2 \rangle</tex>. Необходимо найти максимальное по мощности независимое множество в пересечении <tex>M_1</tex> и <tex>M_2</tex>. |
==Алгоритм решения== | ==Алгоритм решения== | ||
− | Пусть множество <tex>J \in (I_1 \cap I_2)</tex> | + | Пусть множество <tex>J \in (I_1 \cap I_2)</tex>. |
− | <br>Определим [[Граф замен для двух матроидов|граф замен]] <tex>D_{M_1, M_2}(J) = | + | <br>Определим [[Граф замен для двух матроидов|граф замен]] <tex>D_{M_1, M_2}(J) = \langle S, A(J) \rangle</tex>, где |
<tex>A(J) = \{(y, z) | y \in J, z \in S\setminus J, J - y + z \in I_1 \} </tex> | <tex>A(J) = \{(y, z) | y \in J, z \in S\setminus J, J - y + z \in I_1 \} </tex> | ||
− | <tex>\cup \{ (z', y') | z' \in S \setminus J, y' \in J, J - y' + z' \in I_2 \}</tex> | + | <tex>\cup \{ (z', y') | z' \in S \setminus J, y' \in J, J - y' + z' \in I_2 \}</tex>. |
− | Пусть <tex>X_1 = \{ z \in S \setminus J | J + z \in I_1 \}</tex>, <tex>X_2 = \{ z \in S \setminus J | J + z \in I_2 \}</tex>, <tex>P</tex> {{---}} кратчайший путь из <tex>X_1</tex> в <tex>X_2</tex> в графе <tex>D_{M_1, M_2}(J)</tex>. <tex>P</tex> может и не существовать | + | |
+ | Пусть <tex>X_1 = \{ z \in S \setminus J | J + z \in I_1 \}</tex>, <tex>X_2 = \{ z \in S \setminus J | J + z \in I_2 \}</tex>, <tex>P</tex> {{---}} кратчайший путь из <tex>X_1</tex> в <tex>X_2</tex> в графе <tex>D_{M_1, M_2}(J)</tex>. <tex>P</tex> может и не существовать. | ||
{{Лемма | {{Лемма | ||
|statement = | |statement = | ||
− | Если в графе <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> не входит ни одной дуги). Тогда: | ||
Строка 17: | Строка 18: | ||
<tex>r_1 (U) \le |J \cap U|</tex> | <tex>r_1 (U) \le |J \cap U|</tex> | ||
|proof = | |proof = | ||
− | От противного. Пусть <tex>r_1 (U) > |J \cap U|</tex>, тогда <tex>\exists z \in U \setminus (J \cap U) | + | От противного. Пусть <tex>r_1 (U) > |J \cap U|</tex>, тогда <tex>\exists z \in U \setminus (J \cap U) : (J \cap U) + z \in I_1</tex> при том, что <tex>J + z \notin I_1</tex>. В противном случае <tex>J + z \in I_1, z \in X_1</tex>, то есть <tex>X_1 \cap U \ne \emptyset</tex>, что противоречит отсутствию пути из <tex>X_1</tex> в <tex>X_2</tex>. Так как <tex>(J \cap U) + z \in I_1</tex>, а <tex>J + z \notin I_1</tex>, |
− | <tex>\exists y \in J \setminus U | + | <tex>\exists y \in J \setminus U : J - y + z \in I_1</tex>. Однако, тогда <tex>(y, z) \in A(J)</tex>, что противоречит факту <tex>\delta^- (U) = \emptyset</tex>. |
}} | }} | ||
{{Утверждение | {{Утверждение | ||
Строка 24: | Строка 25: | ||
<tex>r_2 (S \setminus U) \le |J \cap (S \setminus U)|</tex> | <tex>r_2 (S \setminus U) \le |J \cap (S \setminus U)|</tex> | ||
|proof = | |proof = | ||
− | От противного. Пусть <tex>\exists z \in (S \setminus U) \setminus J | + | От противного. Пусть <tex>\exists z \in (S \setminus U) \setminus J : J \cap (S \setminus U) + z \in I_2</tex>. Аналогично доказательству предыдущего утверждения <tex>\exists y \in J \setminus (S \setminus U) : J - y + z \in I_2</tex>. Однако <tex>J \setminus (S \setminus U) = J \cap U</tex>, то есть <tex>(z, y)</tex> {{---}} дуга в <tex>D_{M_1, M_2}(J)</tex>, поэтому <tex>z \in U</tex> (т.к. <tex>y \in U</tex>). Противоречие. |
}} | }} | ||
− | Так как <tex>|J| = |J \cap U| + |J \setminus U| \ge r_1 (U) + r_2 (S \setminus U) | + | Так как <tex>|J| = |J \cap U| + |J \setminus U| \ge r_1 (U) + r_2 (S \setminus U), |J| = r_1 (U) + r_2 (S \setminus U)</tex>. Следовательно, <tex>J</tex> {{---}} максимальное по мощности независимое множество в пересечении <tex>M_1</tex> и <tex>M_2</tex>. |
}} | }} | ||
{{Лемма | {{Лемма | ||
Строка 33: | Строка 34: | ||
|proof = | |proof = | ||
[[Файл:Intersection2.jpg|right]] | [[Файл:Intersection2.jpg|right]] | ||
− | Пусть <tex>P = z_0, y_1, z_1, ..., y_t, z_t | + | Пусть <tex>P = z_0, y_1, z_1, ..., y_t, z_t; G = \{ z_1, ..., z_t \} \cup (J \setminus \{ y_1, ..., y_t \})</tex>. Тогда <tex>G \subseteq S, |G| = |J|</tex> и дуги из <tex>\{ y_1, ..., y_t \}</tex> в |
<tex>\{ z_1, ..., z_t \}</tex> составляют единственное полное паросочетание в <tex>J \bigtriangleup G</tex>. То есть, согласно [[Лемма о единственном паросочетании в графе замен | лемме о единственном паросочетании в подграфе замен]], <tex>G \in I_1</tex>. | <tex>\{ z_1, ..., z_t \}</tex> составляют единственное полное паросочетание в <tex>J \bigtriangleup G</tex>. То есть, согласно [[Лемма о единственном паросочетании в графе замен | лемме о единственном паросочетании в подграфе замен]], <tex>G \in I_1</tex>. | ||
− | К тому же, <tex>\forall i \ge 1 z_i \notin X_1</tex>, иначе <tex>P</tex> {{---}} не кратчайший путь из <tex>X_1</tex> в <tex>X_2</tex>. Это означает, что <tex>z_i + J \notin I_1</tex>, то есть | + | К тому же, <tex>\forall i \ge 1\ z_i \notin X_1</tex>, иначе <tex>P</tex> {{---}} не кратчайший путь из <tex>X_1</tex> в <tex>X_2</tex>. Это означает, что <tex>z_i + J \notin I_1</tex>, то есть |
− | <tex>r_1 (J \cup G) = r_1 (J) = r_1 (G) = |G| = |J|</tex>. Так как <tex>J + z_0 \in I_1 | + | <tex>r_1 (J \cup G) = r_1 (J) = r_1 (G) = |G| = |J|</tex>. Так как <tex>J + z_0 \in I_1, G + z_0 \in I_1</tex> (т.е. <tex>J' = \{ z_0, z_1, ..., z_t \} \cup (J \setminus \{ y_1, ..., y_t \}) \in I_1</tex>. |
− | Симметрично<tex> | + | Симметрично <tex>G = \{ z_0, ..., z_{t - 1} \} \cup (J \setminus \{ y_1, ..., y_t \}), J' \in I_2</tex> и, следовательно, <tex>J' \in (I_1 \cap I_2)</tex>. |
}} | }} | ||
Версия 18:46, 6 июня 2015
Постановка задачи
Даны матроиды
и . Необходимо найти максимальное по мощности независимое множество в пересечении и .Алгоритм решения
Пусть множество
Определим граф замен , где
.
Пусть
, , — кратчайший путь из в в графе . может и не существовать.Лемма: | ||||||||||
Если в графе нет пути из в , то — искомое максимальное по мощности независимое множество в пересечении и . | ||||||||||
Доказательство: | ||||||||||
Отметим, что если или пустые, то — база в одном из исходных матроидов или и, следовательно, искомое максимальное по мощности независимое множество в пересечении и . Таким образом, предположим, что и непусты. Пусть — множество вершин, из которых достижимы вершины из . Отсутствие пути из в означает, что , и (т.е. в не входит ни одной дуги). Тогда:
| ||||||||||
Лемма: |
Доказательство: |
Пусть лемме о единственном паросочетании в подграфе замен, . К тому же, , иначе — не кратчайший путь из в . Это означает, что , то есть . Так как (т.е. . Симметрично . Тогда и дуги из в составляют единственное полное паросочетание в . То есть, согласно и, следовательно, . |
Псевдокод
граф замен кратчайший путь из в if = else isMaximal = true= isMaximal = false while not isMaximal построить
Источник
Chandra Chekuri — Combinatorial Optimization