Изменения

Перейти к: навигация, поиск
Нет описания правки
{{Определение
|definition =
Пусть <tex>M_1 = \langle X, \mathcal{I}_1 \rangle </tex> и <tex> M_2 = \langle X, \mathcal{I}_2 \rangle </tex> {{---}} два матроида на множестве элементов <tex>X</tex> с наборами независимых множеств <tex>\mathcal{I}_1</tex> и <tex>\mathcal{I}_2</tex>. Положим <tex> \mathcal{I} = \mathcal {f} A \mid A = A_1 \cup A_2, A_1 \in \mathcal{I}_1, A_2 \in \mathcal{I}_2 \mathcal {g} </tex>. Множество <tex>\mathcal{I}</tex> удовлетворяет [[Объединение матроидов, доказательство того, что объединение является матроидом|аксиомам независимости]], следовательно, <tex>\langle X, \mathcal{I} \rangle </tex> {{---}} матроид, для которого <tex>\mathcal{I}</tex> служит набором независимых множеств. Этот матроид называется '''объединением матроидов''' (англ. ''matroid union'') <tex>M_1</tex> и <tex>M_2</tex>, и обозначается <tex> M = M_1 \cup M_2 </tex>
}}
Обычно термин "объединение" применяется, когда носители <tex>X</tex> в обоих матроидах одинаковы, однако это не является необходимым, мы можем дополнить их до объединения, заметим, что от этого <tex>M_1</tex> и <tex>M_2</tex> не перестанут быть матроидами. Если в <tex>M_1</tex> и <tex>M_2</tex> носители непересекающиеся, тогда это будет являться [[Прямая сумма матроидов|прямой суммой матроидов]].
Давайте зададим функцию <tex>P_1</tex> : <tex> X \times Y \rightarrow X</tex>: <tex>P_1((x, y)) = x</tex>, а для =Проверка множества <tex>B \in X \times Y</tex> выполняется <tex>P_1(B) на независимость= \{A \subset X| \forall x \in A</tex> <tex>\exists y \in B : P_1(y) = x\}</tex>.
Определим ещё несколько матроидовЗададим функцию <tex>P_1</tex> : <tex> X \times Y \rightarrow X</tex> : <tex>P_1((x, y)) = x</tex>, которые нам понадобятсяа для множества <tex>B \in X \times Y</tex> выполняется <tex>P_1(B) = \{A \subset X \mid \forall x \in A </tex> <tex> \exists b \in B : P_1(b) = x\}</tex>.
Преобразуем каждый элемент множества <tex>X</tex> в матроиде <tex>M_{\oplus} = M_1 \oplus </tex> в <tex>(x, 1)</tex>, а каждый элемент множества <tex>X</tex> в матроиде <tex>M_2 </tex> в <tex>(x, 2)</tex>. Мы получили два матроида <tex>M'_1 = \langle (X \times \{1\}) , \mathcal{I}_1 \rangle </tex> и <tex> M'_2 = \cup langle (X \times \{2\}),\mathcal{I}_2 \rangle </tex> . Наша функция <tex> I = P_1</tex> будет являться естественным отображением <tex>(x, i) \{A \mid A = A_1 \cup A_2rightarrow x</tex>, A_1 где <tex>i \in I_1\{1, A_2 \in I_22\} \rangle</tex>.
<tex>M_{P_1} = \langle (X \times \{1\}) \cup (X \times \{2\})Затем определим два матроида,</tex> <tex> I_{P_1} = \{A \mid |P_1(A)| = |A|\} \rangle</tex>.которые нам далее понадобятся:
# <tex>M_{\oplus} = M'_1 \oplus M'_2 = \langle (X \times \{1\}) \cup (X \times \{2\}),</tex> <tex> \mathcal{I}_{\oplus} = \{A \mid A = A_1 \cup A_2, A_1 \in \mathcal{I}_1, A_2 \in \mathcal{I}_2\} \rangle</tex> {{---}} прямая сумма двух матроидов (носители матроидов <tex>M'_1</tex> и <tex>M'_2</tex> при пересечении будут давать пустое множество).# <tex>M_{P_1} = \langle (X \times \{1\}) \cup (X \times \{2\}),</tex> <tex> \mathcal{I}_{P_1} = \{A \mid |P_1(A)| = |A|\} \rangle</tex> {{---}} <tex>\mathcal{I}_{P_1}</tex> в данном случае будет содержать такие независимые множества, что мощность любого множества <tex>A</tex> из <tex>\mathcal{I}_{P_1}</tex> будет равна мощности множества, получаемого функцией <tex>P_1</tex> над <tex>A</tex>, то есть <tex>A</tex> не будет содержать одновременно <tex>(x, 1)</tex> и <tex>(x, 2)</tex>.  Теперь перейдём к нашей задаче. У нас есть некоторое множество в <tex>X</tex>, и нужно проверить его независимость в объединении матроидов(то есть, лежит ли оно в <tex>\mathcal{I}</tex>). Множество <tex>U</tex> - независимоявляется независимым, если <tex>r(U) = |U|</tex>.А можно Можно заметить, что в матроиде <tex>M</tex> выполняется <tex>r(U) = \max\limits_{A \mid A \in \mathcal{I}_{\oplus}, A \in I_\mathcal{I}_{P_1}, P_1(A) \subset U} |A|</tex>.Т.е. Таким образом, мы свели задачу о проверке множества на независимость в объединении к нахождению мощности максимального независимого множества в пересечении матроидов <tex>M_{\oplus}</tex> и <tex>M_{P_1}</tex>. Мы это уже умеем делать - С помощью [[Алгоритм построения базы в пересечении матроидов|алгоритма построения базы в пересечении матроидов]]мы будем искать размер максимального подсета множества <tex>U' \mid P_1(U') = U</tex> в пересечении набора независимых множеств матроидов.
== См. также==
* Емеличев В. А., Мельников О. И., Сарванов В. И., Тышкевич Р. И. {{---}} Лекции по теории графов
* Chandra Chekuri {{---}} [https://courses.engr.illinois.edu/cs598csc/sp2010/Lectures/Lecture19.pdf '''Combinatorial Optimization''']
* Michel X. Goemans {{---}} [http://math.mit.edu/~goemans/18438F09/lec13.pdf '''Advanced Combinatorial Optimization''']
* https://en.wikipedia.org/wiki/Matroid
[[Категория:Алгоритмы и структуры данных]]
[[Категория:Матроиды]]
22
правки

Навигация