Объединение матроидов, проверка множества на независимость — различия между версиями
Alice (обсуждение | вклад) м |
Alice (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
Пусть <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>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> носители непересекающиеся, то это будет являться [[Прямая сумма матроидов|прямой суммой матроидов]]. |
+ | Верны следующие утверждения про объединение матроидов: | ||
* Операция объединения матроидов ассоциативна, следовательно, можно говорить об объединении нескольких матроидов. | * Операция объединения матроидов ассоциативна, следовательно, можно говорить об объединении нескольких матроидов. | ||
− | * В отличие от пересечения матроидов, объединение двух конечных (англ. ''finite matroid'') | + | * В отличие от [[Пересечение матроидов, определение, примеры|пересечения матроидов]], объединение двух '''конечных матроидов''' (англ. ''finite matroid'') всегда является матроидом, однако объединение двух '''бесконечных матроидов''' (англ. ''infinite matroid'') не обязательно будет им. |
− | * Объединение применяется к независимым множествам, а не к матроидам в целом, то есть это операция на другом уровне, по сравнению с | + | * Объединение применяется к независимым множествам, а не к матроидам в целом, то есть это операция на другом уровне, по сравнению с пересечением матроидов. |
==Проверка множества на независимость== | ==Проверка множества на независимость== | ||
+ | |||
+ | {{Задача | ||
+ | |definition= | ||
+ | Дан матроид <tex>M = M_1 \cup M_2, M = \langle X, \mathcal{I}\rangle</tex>. Необходимо проверить, является ли некоторое множество <tex>U \in X</tex> независимым, то есть, лежит ли оно в <tex>\mathcal{I}</tex>. | ||
+ | }} | ||
+ | |||
+ | Для решения этой задачи преобразуем каждый элемент множества <tex>X</tex> в матроиде <tex>M_1</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 = \langle (X \times \{2\}), \mathcal{I}_2 \rangle </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>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>P_1</tex> на носителях матроидов <tex>M'_1</tex> и <tex>M'_2</tex> будет являться естественным отображением <tex>(x, i) \rightarrow x</tex>, где <tex>i \in \{1, 2\}</tex>. | |
− | |||
Затем определим два матроида, которые нам далее понадобятся: | Затем определим два матроида, которые нам далее понадобятся: | ||
Строка 22: | Строка 29: | ||
− | Теперь перейдём к нашей задаче | + | Теперь перейдём к нашей задаче. |
− | Множество <tex>U</tex> является независимым, если <tex>r(U) = |U|</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 \mathcal{I}_{P_1}, P_1(A) \subset U} |A|</tex>. | Можно заметить, что в матроиде <tex>M</tex> выполняется <tex>r(U) = \max\limits_{A \mid A \in \mathcal{I}_{\oplus}, A \in \mathcal{I}_{P_1}, P_1(A) \subset U} |A|</tex>. | ||
− | Таким образом, мы свели задачу о проверке множества на независимость в объединении к нахождению мощности максимального независимого множества в пересечении матроидов <tex>M_{\oplus}</tex> и <tex>M_{P_1}</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'''] | * 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'''] | * Michel X. Goemans {{---}} [http://math.mit.edu/~goemans/18438F09/lec13.pdf '''Advanced Combinatorial Optimization'''] | ||
− | * https://en.wikipedia.org/wiki/Matroid | + | * Wikipedia {{---}} [https://en.wikipedia.org/wiki/Matroid '''Matroid'''] |
[[Категория:Алгоритмы и структуры данных]] | [[Категория:Алгоритмы и структуры данных]] | ||
[[Категория:Матроиды]] | [[Категория:Матроиды]] | ||
+ | [[Категория:Объединение матроидов]] |
Версия 18:06, 28 мая 2016
Определение: |
Пусть аксиомам независимости, следовательно, — матроид, для которого служит набором независимых множеств. Этот матроид называется объединением матроидов (англ. matroid union) и , и обозначается | и — два матроида на множестве элементов с наборами независимых множеств и . Положим . Множество удовлетворяет
Обычно термин «объединение» применяется, когда носители прямой суммой матроидов.
в обоих матроидах одинаковы, однако это не является необходимым, мы можем дополнить их до объединения, заметим, что от этого и не перестанут быть матроидами. Если в и носители непересекающиеся, то это будет являтьсяВерны следующие утверждения про объединение матроидов:
- Операция объединения матроидов ассоциативна, следовательно, можно говорить об объединении нескольких матроидов.
- В отличие от пересечения матроидов, объединение двух конечных матроидов (англ. finite matroid) всегда является матроидом, однако объединение двух бесконечных матроидов (англ. infinite matroid) не обязательно будет им.
- Объединение применяется к независимым множествам, а не к матроидам в целом, то есть это операция на другом уровне, по сравнению с пересечением матроидов.
Проверка множества на независимость
Задача: |
Дан матроид | . Необходимо проверить, является ли некоторое множество независимым, то есть, лежит ли оно в .
Для решения этой задачи преобразуем каждый элемент множества в матроиде в , а каждый элемент множества в матроиде в . Мы получили два матроида и .
Определим функцию
: : , а для множества выполняется . Тогда функция на носителях матроидов и будет являться естественным отображением , где .Затем определим два матроида, которые нам далее понадобятся:
- — прямая сумма двух матроидов (носители матроидов и при пересечении будут давать пустое множество).
- — в данном случае будет содержать такие независимые множества, что мощность любого множества из будет равна мощности множества, получаемого функцией над , то есть не будет содержать одновременно и .
Теперь перейдём к нашей задаче.
Множество ранговая функция . Можно заметить, что в матроиде выполняется . Таким образом, мы свели задачу о проверке множества на независимость в объединении к нахождению мощности максимального независимого множества в пересечении матроидов и . С помощью алгоритма построения базы в пересечении матроидов найдем размер максимального подсета множества в пересечении наборов независимых множеств матроидов.
является независимым, еслиСм. также
Источники информации
- Емеличев В. А., Мельников О. И., Сарванов В. И., Тышкевич Р. И. — Лекции по теории графов
- Chandra Chekuri — Combinatorial Optimization
- Michel X. Goemans — Advanced Combinatorial Optimization
- Wikipedia — Matroid