Объединение матроидов, проверка множества на независимость — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м
Строка 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> носители непересекающиеся, тогда это будет являться [[Прямая сумма матроидов|прямой суммой матроидов]].
+
Обычно термин «объединение» применяется, когда  носители <tex>X</tex> в обоих матроидах одинаковы, однако это не является необходимым, мы можем дополнить их до объединения, заметим, что от этого <tex>M_1</tex> и <tex>M_2</tex> не перестанут быть матроидами. Если в <tex>M_1</tex> и <tex>M_2</tex> носители непересекающиеся, то это будет являться [[Прямая сумма матроидов|прямой суммой матроидов]].
  
 +
Верны следующие утверждения про объединение матроидов:
 
* Операция объединения матроидов ассоциативна, следовательно, можно говорить об объединении нескольких матроидов.
 
* Операция объединения матроидов ассоциативна, следовательно, можно говорить об объединении нескольких матроидов.
* В отличие от пересечения матроидов, объединение двух конечных (англ. ''finite matroid'') матроидов всегда является матроидом, однако объединение двух бесконечных матроидов (англ. ''infinite 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>.
Преобразуем каждый элемент множества <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, i) \rightarrow x</tex>, где <tex>i \in \{1, 2\}</tex>.
 
  
 
Затем определим два матроида, которые нам далее понадобятся:  
 
Затем определим два матроида, которые нам далее понадобятся:  
Строка 22: Строка 29:
  
  
Теперь перейдём к нашей задаче. У нас есть некоторое множество в <tex>X</tex>, и нужно проверить его независимость в объединении матроидов (то есть, лежит ли оно в <tex>\mathcal{I}</tex>).  
+
Теперь перейдём к нашей задаче.
  
Множество <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>U' \mid P_1(U') = U</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

Определение:
Пусть [math]M_1 = \langle X, \mathcal{I}_1 \rangle [/math] и [math] M_2 = \langle X, \mathcal{I}_2 \rangle [/math] — два матроида на множестве элементов [math]X[/math] с наборами независимых множеств [math]\mathcal{I}_1[/math] и [math]\mathcal{I}_2[/math]. Положим [math] \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} [/math]. Множество [math]\mathcal{I}[/math] удовлетворяет аксиомам независимости, следовательно, [math]\langle X, \mathcal{I} \rangle [/math] — матроид, для которого [math]\mathcal{I}[/math] служит набором независимых множеств. Этот матроид называется объединением матроидов (англ. matroid union) [math]M_1[/math] и [math]M_2[/math], и обозначается [math]M = M_1 \cup M_2 [/math]

Обычно термин «объединение» применяется, когда носители [math]X[/math] в обоих матроидах одинаковы, однако это не является необходимым, мы можем дополнить их до объединения, заметим, что от этого [math]M_1[/math] и [math]M_2[/math] не перестанут быть матроидами. Если в [math]M_1[/math] и [math]M_2[/math] носители непересекающиеся, то это будет являться прямой суммой матроидов.

Верны следующие утверждения про объединение матроидов:

  • Операция объединения матроидов ассоциативна, следовательно, можно говорить об объединении нескольких матроидов.
  • В отличие от пересечения матроидов, объединение двух конечных матроидов (англ. finite matroid) всегда является матроидом, однако объединение двух бесконечных матроидов (англ. infinite matroid) не обязательно будет им.
  • Объединение применяется к независимым множествам, а не к матроидам в целом, то есть это операция на другом уровне, по сравнению с пересечением матроидов.


Проверка множества на независимость

Задача:
Дан матроид [math]M = M_1 \cup M_2, M = \langle X, \mathcal{I}\rangle[/math]. Необходимо проверить, является ли некоторое множество [math]U \in X[/math] независимым, то есть, лежит ли оно в [math]\mathcal{I}[/math].


Для решения этой задачи преобразуем каждый элемент множества [math]X[/math] в матроиде [math]M_1[/math] в [math](x, 1)[/math], а каждый элемент множества [math]X[/math] в матроиде [math]M_2[/math] в [math](x, 2)[/math]. Мы получили два матроида [math]M'_1 = \langle (X \times \{1\}), \mathcal{I}_1 \rangle [/math] и [math] M'_2 = \langle (X \times \{2\}), \mathcal{I}_2 \rangle [/math].

Определим функцию [math]P_1[/math] : [math] X \times Y \rightarrow X[/math] : [math]P_1((x, y)) = x[/math], а для множества [math]B \in X \times Y[/math] выполняется [math]P_1(B) = \{A \subset X \mid \forall x \in A [/math] [math] \exists b \in B : P_1(b) = x\}[/math]. Тогда функция [math]P_1[/math] на носителях матроидов [math]M'_1[/math] и [math]M'_2[/math] будет являться естественным отображением [math](x, i) \rightarrow x[/math], где [math]i \in \{1, 2\}[/math].

Затем определим два матроида, которые нам далее понадобятся:

  1. [math]M_{\oplus} = M'_1 \oplus M'_2 = \langle (X \times \{1\}) \cup (X \times \{2\}),[/math] [math] \mathcal{I}_{\oplus} = \{A \mid A = A_1 \cup A_2, A_1 \in \mathcal{I}_1, A_2 \in \mathcal{I}_2\} \rangle[/math] — прямая сумма двух матроидов (носители матроидов [math]M'_1[/math] и [math]M'_2[/math] при пересечении будут давать пустое множество).
  2. [math]M_{P_1} = \langle (X \times \{1\}) \cup (X \times \{2\}),[/math] [math] \mathcal{I}_{P_1} = \{A \mid |P_1(A)| = |A|\} \rangle[/math][math]\mathcal{I}_{P_1}[/math] в данном случае будет содержать такие независимые множества, что мощность любого множества [math]A[/math] из [math]\mathcal{I}_{P_1}[/math] будет равна мощности множества, получаемого функцией [math]P_1[/math] над [math]A[/math], то есть [math]A[/math] не будет содержать одновременно [math](x, 1)[/math] и [math](x, 2)[/math].


Теперь перейдём к нашей задаче.

Множество [math]U[/math] является независимым, если ранговая функция [math] r(U) = |U|[/math]. Можно заметить, что в матроиде [math]M[/math] выполняется [math]r(U) = \max\limits_{A \mid A \in \mathcal{I}_{\oplus}, A \in \mathcal{I}_{P_1}, P_1(A) \subset U} |A|[/math]. Таким образом, мы свели задачу о проверке множества на независимость в объединении к нахождению мощности максимального независимого множества в пересечении матроидов [math]M_{\oplus}[/math] и [math]M_{P_1}[/math]. С помощью алгоритма построения базы в пересечении матроидов найдем размер максимального подсета множества [math]U' \mid P_1(U') = U[/math] в пересечении наборов независимых множеств матроидов.

См. также

Источники информации