Примеры матроидов — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (rollbackEdits.php mass rollback)
 
(не показано 46 промежуточных версий 14 участников)
Строка 1: Строка 1:
==Матричный матроид==
+
==Разноцветный матроид==
 
{{Определение
 
{{Определение
|definition=
+
|id = def1
Пусть <tex>V</tex> — векторное пространство над телом <tex>F</tex>, пусть набор векторов <tex>V_i = \mathcal{f} v_1,\dots,v_n\mathcal {g}</tex> из пространства <tex>V</tex> является носителем <tex>X</tex>. Элементами независимого множества <tex>I</tex> данного матроида являются множества линейно-независимых векторов из набора <tex>v_ 1,\dots,v_n</tex>.
+
|definition =  
Тогда <tex>M = \langle V_i, I \rangle </tex>, называется '''матричным матроидом (vector matroid)'''
+
Пусть <tex>X</tex> {{---}} множество элементов, каждый из которых раскрашен в некоторый цвет. Множество <tex>A \in I</tex>, если все элементы множества <tex>A</tex> разного цвета. Тогда <tex> M = \langle X, I\rangle</tex> называется '''разноцветным матроидом''' (англ. ''multicolored matroid'').
}}  
+
}}
{{Лемма
 
|statement = Матричный матроид является матроидом.
 
|proof =
 
Проверим выполнение аксиом независимости:
 
  
1) <tex>\varnothing \in I</tex>
+
{{Утверждение
 +
|statement = Разноцветный матроид является матроидом.
 +
|proof =
 +
Докажем аксиомы независимости для <tex> I </tex>.
  
Множество в котором нет векторов является линейно-независимым.
+
# <tex>\varnothing \in I</tex>
 +
#:В пустом множестве нет элементов <tex>\Rightarrow</tex> можем считать, что все элементы различных цветов.
 +
# <tex>A \subset B, \ B \in I \Rightarrow A \in I</tex>
 +
#:Если в <tex>B</tex> все элементы разного цвета, то и в <tex>A \subset B</tex> это будет выполняться.
 +
# <tex>A \in I, \ B \in I, \ \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal \exists x \in B \setminus A, \ A \cup \{ x \} \in I</tex>
 +
#:В каждом из множеств <tex>A</tex> и <tex>B</tex> все элементы разных цветов. Так как <tex>\left\vert A \right\vert < \left\vert B \right\vert</tex>, значит в <tex>B</tex> есть хотя бы один элемент <tex>x</tex> такого цвета, которого нет среди элементов множества <tex>A</tex>, таким образом <tex>A \cup \{ x \} \in I</tex>
 +
}}
  
2) <tex>A \subset B, B \in I \Rightarrow A \in I</tex>
+
==Универсальный матроид==
 +
{{Определение
 +
|id = def2
 +
|definition=
 +
'''Универсальным матроидом''' (англ. ''uniform matroid'') называют объект <tex>U_{nk} = \langle X, I \rangle </tex>, где <tex>X = \{1, 2, 3, \dots, n\}, I = \{A \subset X \mid \left\vert A \right\vert \leqslant k\}</tex>
 +
}}
  
Если из набора линейно-независимых векторов убрать некоторые, то этот набор не станет зависимым.
+
{{Утверждение
 
+
|statement = Универсальный матроид является матроидом.
3) <tex>A \in I, B \in I, \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal {9} x \in B \setminus A, A \cup \mathcal{f} x \mathcal {g} \in I</tex>
+
|proof =
 
+
Проверим выполнение аксиом независимости:
Так как <tex>A \in I,</tex> то <tex>dim \mathcal{L}(A) = \left\vert A \right\vert</tex>. По условию <tex>\left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists x \in B: x \notin \mathcal{L}(A)</tex>, то есть <tex>x \notin A</tex>. Тогда <tex> A \cup \mathcal{f} x \mathcal {g}</tex> линейно-независимо по определению линейной оболочки.
 
  
 +
# <tex>\varnothing \in I</tex>
 +
#:<tex> \left\vert \varnothing \right\vert = 0 \leqslant k \Rightarrow \varnothing \in I</tex>
 +
# <tex>A \subset B, \ B \in I \Rightarrow A \in I</tex>
 +
#:<tex> \left\vert A \right\vert \leqslant \left\vert B \right\vert \leqslant k \Rightarrow \left\vert A \right\vert \leqslant  k \Rightarrow A \in I </tex>
 +
# <tex>A \in I, \ B \in I, \ \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I</tex>
 +
#:Так как <tex>\left\vert A \right\vert < \left\vert B \right\vert </tex> и числа в каждом множестве различны, найдётся такое число <tex> x \in B </tex>, которое не будет принадлежать меньшему по мощности множеству <tex> A </tex>.
 +
#:Рассмотрим <tex> A \cup \{ x \mathcal \} </tex>. <tex>\left\vert A \right\vert < \left\vert B \right\vert  \Rightarrow  \left\vert A \cup \{ x \} \right\vert = \left\vert A \right\vert + 1 \leqslant \left\vert B \right\vert \leqslant k  \Rightarrow  A \cup \{ x \} \in I</tex>
 
}}
 
}}
  
Строка 27: Строка 43:
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
Пусть <tex>G = \langle V, E \rangle</tex> неориентированный граф. Тогда <tex>M = \langle E, I \rangle </tex>, где <tex>I</tex> состоит из всех ацикличных множеств ребер (то есть являющихся лесами), называют '''графовым (графическим) матроидом (graphic matroid)'''.
+
Пусть <tex>G = \langle V, E \rangle</tex> {{---}} неориентированный граф. Тогда <tex>M = \langle E, I \rangle </tex>, где <tex>I</tex> состоит из всех ацикличных множеств ребер (то есть являющихся лесами), называют '''графовым (графическим) матроидом''' (англ. ''graphic matroid'').
 
}}
 
}}
{{Лемма
+
 
 +
{{Утверждение
 
|statement = Графовый матроид является матроидом.
 
|statement = Графовый матроид является матроидом.
 
|proof =
 
|proof =
 
Проверим выполнение аксиом независимости:
 
Проверим выполнение аксиом независимости:
  
1) <tex>\varnothing \in I</tex>
+
# <tex>\varnothing \in I</tex>
 +
#:Пустое множество является ациклическим, а значит входит в <tex>I</tex>.
 +
# <tex>A \subset B, \ B \in I \Rightarrow A \in I</tex>
 +
#:Очевидно, что любой подграф леса, так же является лесом, а значит входит в <tex>I</tex> вследствие своей ацикличности.
 +
# <tex>A \in I, \ B \in I, \ \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I</tex>
 +
#:В графе <tex>G_A = \langle V, A \rangle </tex> как минимум две компоненты связанности, иначе <tex>G_A</tex> являлся бы остовным деревом и не существовало бы ациклического множества с большей мощностью.
 +
#:Допустим в <tex>B</tex> не существует ребра, соединяющего две различные компоненты связанности из <tex>G_A</tex>, значит любая компонента связанности из <tex>G_B</tex> целиком вершинно-входит в какую-либо компоненту из <tex>G_A</tex>. Рассмотрим любую компоненту связанности <tex>Q</tex> из <tex>G_A</tex>, у неё <tex>k</tex> вершин и <tex>k - 1</tex> рёбер. Теперь рассмотрим все компоненты связанности <tex>P_i</tex> из <tex>G_B</tex>, вершинно-входящие в <tex>Q</tex>, пусть их <tex>m</tex> штук, тогда суммарное количество рёбер из <tex>P_i</tex> равно <tex>k - m</tex>, что не превосходит <tex>k - 1</tex> (количество рёбер в <tex>Q</tex>). Просуммируем неравенство по всем компонентам связанности из <tex>G_A</tex> и получим  <tex>\left\vert A \right\vert \geqslant \left\vert B \right\vert</tex>, что противоречит условию. Значит предположение не верно, и в <tex>B</tex> существует искомое ребро <tex>x</tex> из разных компонент связанности <tex>G_B</tex>.
 +
}}
  
Пустое множество является ациклическим, а значит входит в <tex>I</tex>.
+
==Матричный матроид==
 
+
{{Определение
2) <tex>A \subset B, B \in I \Rightarrow A \in I</tex>
+
|definition=
 
+
Пусть <tex>V</tex> {{---}} векторное пространство над телом <tex>F</tex>, пусть набор векторов <tex>V_i = \{ v_1, \ \dots, \ v_n\}</tex> из пространства <tex>V</tex> является носителем <tex>X</tex>. Элементами независимого множества <tex>I</tex> данного матроида являются множества линейно независимых векторов из набора <tex>v_ 1, \ \dots, \ v_n</tex>.
Очевидно, что любой подграф леса, так же является лесом, а значит входит в <tex>I</tex> вследствие своей ацикличности.
+
Тогда <tex>M = \langle V_i, I \rangle </tex>, называется '''матричным матроидом''' (англ. ''vector matroid'')
 
+
}}
3) <tex>A \in I, B \in I, \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal {9} x \in B \setminus A, A \cup \mathcal{f} x \mathcal {g} \in I</tex>
+
   
 
+
{{Утверждение
В графе <tex>G_A = \langle V, A \rangle </tex> как минимум две компоненты связанности, иначе <tex>G_A</tex> являлся бы остовным деревом и не существовало бы ациклического множества с большей мощностью.
+
|statement = Матричный матроид является матроидом.
 
+
|proof =
Допустим в <tex>B</tex> не существует ребра, соединяющего две различные компоненты связанности из <tex>G_A</tex>, значит любая компонента связанности из <tex>G_B</tex> целиком вершинно-входит в какую-либо компоненту из <tex>G_A</tex>. Рассмотрим любую компоненту связанности Q из <tex>G_A</tex>, у неё <tex>k</tex> вершин и <tex>k - 1</tex> рёбер. Теперь рассмотрим все компоненты связанности <tex>P_i</tex> из <tex>G_B</tex>, вершинно-входящие в <tex>Q</tex>, пусть их <tex>m</tex> штук, тогда суммарное количество рёбер из <tex>P_i</tex> равно <tex>k - m</tex>, что не превосходит <tex>k - 1</tex> (количество рёбер в <tex>Q</tex>). Просуммируем неравенство по всем компонентам связанности из <tex>G_A</tex> и получим <tex>\left\vert A \right\vert \geqslant \left\vert B \right\vert</tex>, что противоречит условию. Значит предположение не верно, и в <tex>B</tex> существует искомое ребро <tex>x</tex> из разных компонент связанности <tex>G_B</tex>.
+
Проверим выполнение аксиом независимости:
  
 +
# <tex>\varnothing \in I</tex>
 +
#:Множество в котором нет векторов является линейно-независимым.
 +
# <tex>A \subset B, \ B \in I \Rightarrow A \in I</tex>
 +
#:Если из набора линейно-независимых векторов убрать некоторые, то этот набор не станет зависимым.
 +
# <tex>A \in I, \ B \in I, \ \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I</tex>
 +
#:Так как <tex>A \in I</tex>, то <tex>\dim \mathcal{L}(A) = \left\vert A \right\vert</tex>. По условию <tex>\left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists x \in B: x \notin \mathcal{L}(A)</tex>, то есть <tex>x \notin A</tex>. Тогда множество <tex> A \cup \{ x \} </tex> линейно-независимо по определению линейной оболочки.
 
}}
 
}}
  
Строка 53: Строка 83:
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
Пусть <tex>G = \langle X, Y, E \rangle</tex> двудольный граф. <tex>I = \mathcal{f} A \subset X \mid \exists </tex> паросочетание <tex> P</tex>, покрывающее <tex>A \mathcal {g} </tex>. Тогда <tex>M = \langle X, I \rangle </tex> называют '''трансверсальным матроидом (transversal matroid).'''
+
Пусть <tex>G = \langle X, Y, E \rangle</tex> {{---}} двудольный граф. <tex>I = \{ A \subset X \mid \exists </tex> паросочетание <tex> P</tex>, покрывающее <tex>A \} </tex>. Тогда <tex>M = \langle X, I \rangle </tex> называют '''трансверсальным матроидом''' (англ. ''transversal matroid'').
 
}}
 
}}
  
{{Лемма
+
{{Утверждение
 
|statement = Трансверсальный матроид является матроидом.
 
|statement = Трансверсальный матроид является матроидом.
 
|proof =
 
|proof =
 
Проверим выполнение аксиом независимости:
 
Проверим выполнение аксиом независимости:
  
1) <tex>\varnothing \in I</tex>
+
# <tex>\varnothing \in I</tex>
 
+
#:Пустое паросочетание удовлетворяет условию.
Пустое паросочетание удовлетворяет условию.
+
# <tex>A \subset B, \ B \in I \Rightarrow A \in I</tex>
 
+
#:Подмножество паросочетания также является паросочетанием. Удалим из исходного паросочетания <tex>P</tex> ребра, концами которых являются вершины из множества <tex>B \setminus A</tex>. Оставшееся множество ребер будет являться паросочетанием, покрывающим <tex>A</tex>. Значит <tex> A \in I </tex>.
2) <tex>A \subset B, B \in I \Rightarrow A \in I</tex>
+
# <tex>A \in I, \ B \in I, \ \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I</tex>
 
+
#:Раскрасим ребра из паросочетания, соответствующего <tex> B </tex> в синий цвет, а соответствующего <tex> A </tex> {{---}} в красный. Причем ребра, соответствующие двум паросочетаниям, будут окрашены в пурпурный цвет. Таким образом, получится <tex> \left\vert B \setminus A \right\vert </tex> ребер синего цвета, <tex> \left\vert A \setminus B \right\vert </tex> ребер красного цвета, и будет выполняться соотношение <tex> \left\vert B \setminus A \right\vert > \left\vert A \setminus B \right\vert</tex>.
Подмножество паросочетания также является паросочетанием. Удалим из исходного паросочетания <tex>P</tex> ребра, концами которых являются вершины из множества <tex>B \setminus A</tex>. Оставшееся множество ребер будет являться паросочетанием, покрывающим <tex>A</tex>. Значит <tex> A \in I </tex>.
+
#:Рассмотрим подграф <tex> H </tex>, индуцированный красными и синими ребрами из исходного графа. Каждая вершина соответствует либо двум ребрам {{---}} синему и красному, либо одному {{---}} синему или красному. Любая компонента связности представляет собой либо путь, либо цикл, состоящий из чередующихся красных и синих ребер. Так как граф двудольный, любой цикл состоит из четного числа ребер. Так как синих ребер больше, чем красных, то должен существовать путь, начинающийся и оканчивающийся синим ребром. Обозначим этот путь <tex> H' </tex>. Поменяем в <tex> H' </tex> синий и красный цвета. Получаем, что ребра, окрашенные в красный и пурпурный цвета образуют паросочетание в графе. Очевидно, что подмножество соответствующее этому новому паросочетанию имеет вид <tex>A \cup \{ x \} </tex>, где <tex> x \in B \setminus A </tex>. Что значит, что <tex> A \cup \{ x \} \in I</tex>.
 
 
3) <tex>A \in I, B \in I, \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal {9} x \in B \setminus A, A \cup \mathcal{f} x \mathcal {g} \in I</tex>
 
 
 
Раскрасим ребра из паросочетания, соответствующего <tex> B </tex> в синий цвет, а соответствующего <tex> A </tex> в красный. Причем ребра, соответствующие двум паросочетаниям, будут окрашены в пурпурный цвет. Таким образом, получится <tex> \left\vert B \setminus A \right\vert </tex> ребер синего цвета, <tex> \left\vert A \setminus B \right\vert </tex> ребер красного цвета, и будет выполняться соотношение <tex> \left\vert B \setminus A \right\vert > \left\vert A \setminus B \right\vert</tex>. Рассмотрим подграф <tex> H </tex>, индуцированный красными и синими ребрами из исходного графа. Каждая вершина соответствует либо двум ребрам синему и красному, либо одному синему или красному. Любая компонента связности представляет собой либо путь, либо цикл, состоящий из чередующихся красных и синих ребер. Так как граф двудольный, любой цикл состоит из четного числа ребер. Так как синих ребер больше, чем красных, то должен существовать путь, начинающийся и оканчивающийся синим ребром. Обозначим этот путь <tex> H' </tex>. Поменяем в <tex> H' </tex> синий и красный цвета. Получаем, что ребра, окрашенные в красный и пурпурный цвета образуют паросочетание в графе. Очевидно, что подмножество соответствующее этому новому паросочетанию имеет вид <tex>A \cup \mathcal{f} x \mathcal {g} </tex>, где <tex> x \in B \setminus A </tex>. Что значит, что <tex> A \cup \mathcal{f} x \mathcal {g} \in I</tex>.
 
 
}}
 
}}
  
==Универсальный матроид==
+
==Матроид паросочетаний==
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
'''Универсальным матроидом (uniform matroid)''' называют объект <tex>U_n,_k = \langle X, I \rangle </tex>, где <tex>X = \{1, 2, 3, \dots, n\}, I = \mathcal{f} A \subset X \mid \left\vert A \right\vert \leqslant k\}</tex>
+
Пусть <tex>G = \langle V, E \rangle</tex> {{---}} неориентированный граф. <tex>I = \{ A \subset V \mid \exists</tex> паросочетание <tex>P</tex>, покрывающее <tex>A \}</tex>. Тогда <tex>M = \langle V, I \rangle </tex> называют '''матроидом паросочетаний''' (англ. ''matching matroid'').
 
}}
 
}}
  
{{Лемма
+
{{Утверждение
|statement = Универсальный матроид является матроидом.
+
|statement = Матроид паросочетаний является матроидом.
 
|proof =
 
|proof =
 
Проверим выполнение аксиом независимости:
 
Проверим выполнение аксиом независимости:
  
1) <tex>\varnothing \in I</tex>
+
# <tex>\varnothing \in I</tex>
 
+
#:Пустое паросочетание удовлетворяет условию.
<tex> \left\vert \varnothing \right\vert = 0 \leqslant k \Rightarrow \varnothing \in I</tex>
+
# <tex>A \subset B, \ B \in I \Rightarrow A \in I</tex>
 
+
#:Удалим из исходного паросочетания <tex>P</tex> ребра, концами которых являются вершины из множества <tex>B \setminus A</tex>. Оставшееся множество ребер будет являться паросочетанием, покрывающим <tex>A</tex>. Значит <tex>A \in I</tex>.
2) <tex>A \subset B, B \in I \Rightarrow A \in I</tex>
+
# <tex>A \in I, \ B \in I, \ \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I</tex>
 
+
#:Пусть паросочетание <tex>P_A</tex> покрывает множество <tex>A</tex>, <tex>P_B</tex> {{---}} множество <tex>B</tex>.
<tex> \left\vert A \right\vert \leqslant \left\vert B \right\vert \leqslant k \Rightarrow \left\vert A \right\vert \leqslant  k \Rightarrow A \in I </tex>
+
#:Все вершины, принадлежащие <tex>A \cap B</tex> покроем ребрами из паросочетания <tex>P_B</tex>.
 
+
#:Так как <tex>\left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists x \in B \setminus A</tex>
3) <tex>A \in I, B \in I, \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal {9} x \in B \setminus A, A \cup \mathcal{f} x \mathcal {g} \in I</tex>
+
#:Рассмотрим три возможных случая:
 
+
## <tex>\exists xy \in P_A, \ y \in A \Rightarrow P_A</tex> покрывает <tex>A \cup \{ x \} \Rightarrow A \cup \{ x \} \in I</tex>
Так как <tex>\left\vert A \right\vert < \left\vert B \right\vert </tex> и числа в каждом множестве различны, найдётся такое число <tex> x \in B </tex>, которое не будет принадлежать меньшему по мощности множеству <tex> A </tex>.
+
## <tex>\exists xy: y \in B \setminus A \Rightarrow xy \notin P_A</tex>. Мы можем добавить в <tex>A</tex> вершину <tex>x</tex> (или <tex>y</tex>), а в <tex>P_A</tex> ребро <tex>xy</tex>. Тогда паросочетание <tex>P_A \cup xy</tex> покрывает <tex>A \cup \{ x \} \Rightarrow A \cup \{ x \} \in I</tex>
Рассмотрим <tex> A \cup \mathcal{f} x \mathcal {g} </tex>. <tex>\left\vert A \right\vert < \left\vert B \right\vert  \Rightarrow  \left\vert A \cup \mathcal{f} x \mathcal {g} \right\vert = \left\vert A \right\vert + 1 \leqslant \left\vert B \right\vert \leqslant k  \Rightarrow A \cup \mathcal{f} x \mathcal {g} \in I</tex>
+
## Если первые два случая не выполнились, значит <tex>\forall x \in B \setminus A</tex>  <tex>\exists y \notin A, \ \notin B: \exists xy \in P_B</tex>. Обозначим множество таких <tex>y</tex> за <tex>C, \ \left\vert C \right\vert = \left\vert B \setminus A \right\vert > \left\vert A \setminus B \right\vert</tex>. Таким образом в <tex>C</tex> найдется хотя бы одна вершина <tex>y</tex>, не покрытая паросочетанием <tex>P_A</tex>. Тогда паросочетание <tex>P_A \cup xy</tex> покрывает <tex>A \cup \{ x \} \Rightarrow A \cup \{ x \} \in I</tex>
 
 
 
}}
 
}}
  
==Разделенный матроид==
+
==Матроид разбиений==
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
Пусть <tex>X = \bigcup\limits_{i=_1}^n X_i</tex>, при этом <tex> X_i \cap X_j = 0</tex>, <tex>\forall i \neq j,</tex> и <tex>k_1 \dots k_n</tex> положительные целые числа. <tex>I = \mathcal{f} A \subset X \mid \left\vert A \cap X_i \right\vert \leqslant k_i, \forall i: 1 \leqslant i \leqslant n \mathcal {g}</tex>. Тогда <tex>M = \langle X, I \rangle </tex> называют '''разделенным матроидом (partition matroid)'''
+
Пусть <tex>X = \bigcup\limits_{i=_1}^n X_i</tex>, при этом <tex> X_i \cap X_j = 0</tex>, <tex>\forall i \neq j</tex>, и <tex>k_1 \dots k_n</tex> {{---}} положительные целые числа. <tex>I = \{ A \subset X \mid \left\vert A \cap X_i \right\vert \leqslant k_i, \ \forall i: 1 \leqslant i \leqslant n \} </tex>. Тогда <tex>M = \langle X, I \rangle </tex> называют '''матроидом разбиений''' (англ. ''partition matroid'')
 +
}}
  
}}
+
{{Утверждение
{{Лемма
+
|statement = Матроид разбиений является матроидом.
|statement = Разделенный матроид является матроидом.
 
 
|proof =  
 
|proof =  
 
Проверим выполнение аксиом независимости:
 
Проверим выполнение аксиом независимости:
  
1) <tex>\varnothing \in I</tex>
+
# <tex>\varnothing \in I</tex>
 
+
#:<tex>\left\vert \varnothing \cap X_i \right\vert = 0 \leqslant k_i \Rightarrow \varnothing \in I</tex>
<tex>\left\vert \varnothing \cap X_i \right\vert = 0 \leqslant k_i \Rightarrow \varnothing \in I</tex>
+
# <tex>A \subset B, \ B \in I \Rightarrow A \in I</tex>
 
+
#:<tex>A \subset B, \ \left\vert A \right\vert \leqslant \left\vert B \right\vert \Rightarrow \left\vert A \cap X_i \right\vert \leqslant \left\vert B \cap X_i \right\vert \leqslant k_i \Rightarrow A \in I</tex>
2) <tex>A \subset B, B \in I \Rightarrow A \in I</tex>
+
# <tex>A \in I, \ B \in I, \ \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I</tex>
 
+
#:Пусть <tex>\forall x \in B \setminus A, \ A \cup \{ x \} \notin I \Rightarrow \exists X_j, \ k_j: \left\vert A \cup \{ x \} \cap X_j \right\vert > k_j</tex>, но так как  <tex>A \in I</tex>, то есть <tex> \left\vert A \cap X_j \right\vert \leqslant k_j \Rightarrow \left\vert A \cap X_j \right\vert = k_j</tex> и <tex>x \in X_j</tex>. Из последнего следует, что <tex>\left\vert B \setminus A \right\vert \subset X_j</tex>.
<tex>A \subset B, \left\vert A \right\vert \leqslant \left\vert B \right\vert \Rightarrow \left\vert A \cap X_i \right\vert \leqslant \left\vert B \cap X_i \right\vert \leqslant k_i \Rightarrow A \in I</tex>
+
#:<tex>\left\vert A \cap X_j \right\vert = \left\vert ((A \cap B) \cup (B \setminus A)) \cap X_j \right\vert = k_j</tex>, а <tex>\left\vert B \cap X_j \right\vert = \left\vert B \cap X_j \right\vert = \left\vert ((A \cap B) \cup (A \setminus B)) \cap X_j \right\vert</tex>. Так как <tex>\left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \left\vert A \setminus B \right\vert < \left\vert B \setminus A \right\vert</tex>, тогда <tex>\left\vert B \cap X_j \right\vert > k_j</tex>, но <tex>B \in I</tex>, противоречие.  
+
}}
3) <tex>A \in I, B \in I, \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal {9} x \in B \setminus A, A \cup \mathcal{f} x \mathcal {g} \in I</tex>
 
 
 
Пусть <tex>\forall x \in B \setminus A, A \cup \mathcal{f} x \mathcal {g} \notin I \Rightarrow \exists X_j, k_j: \left\vert A \cup \mathcal{f} x \mathcal {g} \cap X_j \right\vert > k_j</tex>, но так как  <tex>A \in I</tex>, то есть <tex> \left\vert A \cap X_j \right\vert \leqslant k_j \Rightarrow \left\vert A \cap X_j \right\vert = k_j</tex> и <tex>x \in X_j</tex>. Из последнего следует, что <tex>\left\vert B \setminus A \right\vert \subset X_j</tex>.
 
 
 
<tex>\left\vert A \cap X_j \right\vert = \left\vert ((A \cap B) \cup (B \setminus A)) \cap X_j \right\vert = k_j</tex>, а <tex>\left\vert B \cap X_j \right\vert = \left\vert B \cap X_j \right\vert = \left\vert ((A \cap B) \cup (A \setminus B)) \cap X_j \right\vert</tex>. Так как <tex>\left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \left\vert A \setminus B \right\vert < \left\vert B \setminus A \right\vert</tex>, тогда <tex>\left\vert B \cap X_j \right\vert > k_j</tex>, но <tex>B \in I</tex>, противоречие.  
 
 
 
  
 +
==Бинарный матроид==
 +
{{Определение
 +
|definition=
 +
Матроид <tex>M</tex> '''представим над полем <tex>F</tex>''', если он [[Определение матроида#def5| изоморфен]] некоторому векторному матроиду над этим полем.
 
}}
 
}}
  
==Matching Matroid==
 
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
Пусть <tex>G = \langle V, E \rangle</tex> — неориентированный граф. <tex>I = \mathcal{f} A \subset V \mid \exists</tex> паросочетание <tex>P</tex>, покрывающее <tex>A \mathcal {g}</tex>. Тогда <tex>M = \langle V, I \rangle </tex> называют '''(matching matroid)'''.
+
'''Бинарный матроид''' (англ. ''binary matroid'') {{---}} матроид, представимый над полем целых чисел по модулю <tex>2</tex>.
 
}}
 
}}
{{Лемма
 
|statement = Matching матроид является матроидом.
 
|proof =
 
Проверим выполнение аксиом независимости:
 
  
1) <tex>\varnothing \in I</tex>
+
{{Утверждение
 
+
|statement = Графовый матроид является бинарным.
Пустое паросочетание удовлетворяет условию.
+
|proof =
 
 
2) <tex>A \subset B, B \in I \Rightarrow A \in I</tex>
 
  
Удалим из исходного паросочетания <tex>P</tex> ребра, концами которых являются вершины из множества <tex>B \setminus A</tex>. Оставшееся множество ребер будет являться паросочетанием, покрывающим <tex>A</tex>. Значит <tex>A \in I</tex>.
+
Составим матрицу инцидентности <tex>A = (a_{ij})</tex> для графа <tex>G = \langle V, E \rangle</tex>. Строки этой матрицы соответствуют вершинам графа, а столбцы {{---}} ребрам.
 +
* Если <tex>j</tex>-ое ребро есть петля, инцидентная <tex>i</tex>-ой вершине, то <tex>a_{ij} = 0</tex>.
 +
* Если <tex>i</tex>-ая вершина инцидентна <tex>j</tex>-ому ребру, то  <tex>a_{ij} = 1</tex>
 +
* Иначе  <tex>a_{ij} = 0</tex>
 +
Необходимо доказать, что если мы возьмем множество ребер <tex>A \in I</tex>, то множество столбцов матрицы инцидентности, соответствующее выбранным ребрам, линейно-независимо, и наоборот, если мы возьмем линейно-независимое множество столбцов, то соответствующее ему множество ребер, не будет образовывать цикла. Докажем эквивалентное утверждение: столбцы линейно-зависимы тогда и только тогда, когда соответствующие им ребра графа <tex>G</tex> содержат цикл.
  
3) <tex>A \in I, B \in I, \left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \mathcal {9} x \in B \setminus A, A \cup \mathcal{f} x \mathcal {g} \in I</tex>
+
<tex>\Rightarrow</tex> Пусть столбцы линейно-зависимы, докажем, что соответствующие ребра графа содержат цикл.
  
Пусть паросочетание <tex>P_A</tex> покрывает множество <tex>A</tex>, <tex>P_B</tex> — множество <tex>B</tex>.
+
Если некоторые столбцы матрицы <tex>A</tex> линейно-зависимы, то среди них можно выделить столбцы с нулевой суммой. Есть два варианта:
Все вершины, принадлежащие <tex>A \cap B</tex> покроем ребрами из паросочетания <tex>P_B</tex>.  
 
  
Так как <tex>\left\vert A \right\vert < \left\vert B \right\vert \Rightarrow \exists x \in B \setminus A</tex>
+
# Cреди выбранных столбцов есть нулевой, тогда в соответствующем множестве ребер есть петля, то есть цикл.
 +
# У нас есть столбец <tex>S</tex>, который является суммой остальных столбцов.  Этому столбцу соответствует ребро <tex>uv</tex>. Начнем с вершины <tex>u</tex> переходить по другим ребрам из <tex>R \setminus uv</tex> (по каждому ребру проходим только один раз), в итоге мы придем в вершину <tex>v</tex>, так для остальных вершин у нас обязательно будет четное число выходящих из них ребер, потому что иначе на позиции этой вершины в столбце <tex>S</tex> была бы единица (а единицы у нас только на позициях <tex>u</tex> и <tex>v</tex>). Таким образом мы показали, что существует два пути между вершинами <tex>u</tex> и <tex>v</tex> (тот который мы построили и путь по ребру <tex>uv</tex>), значит в выбранном множестве ребер есть цикл.
  
Рассмотрим три возможных случая:
+
<tex>\Leftarrow</tex> Пусть на множестве ребер есть цикл, докажем линейную-зависимость соответствующих столбцов.
* <tex>\exists xy \in P_A, y \in A \Rightarrow P_A</tex> покрывает <tex>A \cup \mathcal{f} x \mathcal {g} \Rightarrow A \cup \mathcal{f} x \mathcal {g} \in I</tex>
 
* <tex>\exists xy: y \in B \setminus A \Rightarrow xy \notin P_A</tex>. Мы можем добавить в <tex>A</tex> вершину <tex>x</tex> (или <tex>y</tex>), а в <tex>P_A</tex> ребро <tex>xy</tex>. Тогда паросочетание <tex>P_A \cup xy</tex> покрывает <tex>A \cup \mathcal{f} x \mathcal {g} \Rightarrow A \cup \mathcal{f} x \mathcal{g} \in I</tex>
 
*Если первые два случая не выполнились, значит <tex>\forall x \in B \setminus A</tex>  <tex>\exists y \notin A, \notin B: \exists xy \in P_B</tex>. Обозначим множество таких <tex>y</tex> за <tex>C, \left\vert C \right\vert = \left\vert B \setminus A \right\vert > \left\vert A \setminus B \right\vert</tex>. Таким образом в <tex>C</tex> найдется хотя бы одна вершина <tex>y</tex>, не покрытая паросочетанием <tex>P_A</tex>. Тогда паросочетание <tex>P_A \cup xy</tex> покрывает <tex>A \cup \mathcal{f} x \mathcal {g} \Rightarrow A \cup \mathcal{f} x \mathcal{g} \in I</tex> 
 
  
 +
Если среди данного множества ребер есть петля, то соответствующий ей столбец будет нулевым (по построению матрицы инцидентности), он и обеспечивает линейную-зависимость всего набора векторов.
 +
Если петли нет, то рассмотрим столбцы, отвечающие ребрам простого цикла. Любая строка матрицы <tex>A</tex> содержит в этих столбцах ровно 2 единицы. Поэтому сумма по модулю <tex>2</tex> указанных столбцов равна нулевому столбцу, что означает линейную зависимость исходного множества столбцов.
 
}}
 
}}
  
==Бинарный матроид==
+
==Другие матроиды==
 +
Несложно доказать, что следующие конструкции тоже являются матроидами.
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
Матроид <tex>M</tex> на множестве <tex>X</tex> будем называть '''представимым над полем <tex>F</tex>''', если существуют векторное пространство <tex>V</tex> над <tex>F</tex> и отображение <tex>\phi:X \rightarrow V</tex>, обладающее тем свойством, что подмножество <tex>A</tex> независимо тогда и только тогда, когда <tex>\phi</tex> взаимнооднозначно на <tex>A</tex> и <tex>\phi(A)</tex> линейно-независимо в <tex>V</tex>.
+
'''Матроид с выкинутым элементом'''. Пусть <tex>M = \langle X, I\rangle</tex> {{---}} матроид. Определим <tex>M\setminus x = \langle X \setminus x, \ \{A \mid A \in I, \ x \not\in A\}\rangle</tex>. Для любых <tex>M</tex> и <tex>x</tex> получившаяся конструкция <tex>M\setminus x</tex> является матроидом.  
 
}}
 
}}
  
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
'''Регулярный матроид(regular matroid)''' - матроид, представимый над любым полем.
+
'''Матроид, стянутый по элементу'''. Пусть <tex>M = \langle X, I\rangle</tex> {{---}} матроид. Определим <tex>M/x = \langle X \setminus x, \ \{A \setminus x \mid A \in I, \ x \in A\}\rangle</tex>. Для любых <tex>M</tex> и <tex>x</tex>, таких что <tex>\{x\}\in I,</tex> получившаяся конструкция <tex>M/x</tex> является матроидом.
 
}}
 
}}
  
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
'''Бинарный матроид(binary matroid)''' - матроид, представимый над полем целых чисел по модулю 2.
+
Пусть <tex>M = \langle X, I \rangle</tex> {{---}} матроид. Обозначим как <tex>M|_k</tex> следующую констркуцию: <tex>M|_k = \langle X, \ \{A \mid A \in I, |A| \leqslant k \}\rangle</tex>, тогда <tex>M|_k</tex> называют '''урезанным матроидом'''.
 
}}
 
}}
  
==Матроид с выкинутым элементом==
 
 
{{Определение
 
{{Определение
|definition=
+
|definition='''Полный матроид''' {{---}} матроид <tex> M = \langle X, \mathcal{I} \rangle</tex> такой, что <tex>\mathcal{I} = 2^X</tex>.
Пусть <tex>M = \langle X, I\rangle</tex> — матроид. Определим <tex>M\setminus x = \langle X \setminus x, \{A | A \in I, x \not\in A\}\rangle</tex>. Для любых <tex>M</tex> и <tex>x</tex> получившаяся конструкция <tex>M\setminus x</tex> является матроидом.
 
 
 
 
}}
 
}}
  
==Матроид, стянутый по элементу==
 
 
{{Определение
 
{{Определение
|definition=
+
|definition= '''Тривиальный матроид''' {{---}} матроид <tex> M = \langle X, \mathcal{I} \rangle</tex> такой, что <tex>\mathcal{I} = \varnothing </tex>.
Пусть <tex>M = \langle X, I\rangle</tex> — матроид. Определим <tex>M/x = \langle X \setminus x, \{A \setminus x | A \in I, x \in A\}\rangle</tex>. Для любых <tex>M</tex> и <tex>x</tex>, таких что <tex>\{x\}\in I,</tex> получившаяся конструкция <tex>M/x</tex> является матроидом.
 
}}
 
 
 
==Урезанный матроид==
 
{{Определение
 
|definition=
 
Пусть <tex>M = \langle X, I \rangle</tex> — матроид. Обозначим как <tex>M|_k</tex> следующую констркуцию: <tex>M|_k = \langle X, \{A | A \in I, |A| \le k \}\rangle</tex>, тогда <tex>M|_k</tex> является матроидом.
 
 
}}
 
}}
  
Строка 201: Строка 210:
  
 
==Источники==
 
==Источники==
* Асанов М. О., Баранский В. А., Расин В. В. Дискретная математика: Графы, матроиды, алгоритмы (глава 4. Матроиды)
+
* Асанов М. О., Баранский В. А., Расин В. В. {{---}} Дискретная математика: Графы, матроиды, алгоритмы (глава 4. Матроиды)
* Уилсон Р. Введение в теорию графов (глава 9. Теория матроидов)  
+
* Уилсон Р. {{---}} Введение в теорию графов (глава 9. Теория матроидов)  
 
* [http://courses.engr.illinois.edu/cs598csc/sp2010/Lectures/Lecture14.pdf Примеры матроидов]
 
* [http://courses.engr.illinois.edu/cs598csc/sp2010/Lectures/Lecture14.pdf Примеры матроидов]
 
*[[wikipedia:Matroid | Wikipedia {{---}} Matroid]]
 
*[[wikipedia:Matroid | Wikipedia {{---}} Matroid]]
 
*[[wikipedia:ru:Матроид | Википедия {{---}} Матроид]]
 
*[[wikipedia:ru:Матроид | Википедия {{---}} Матроид]]
  
[[Категория:Алгоритмы и структуры данных]]
+
[[Категория: Алгоритмы и структуры данных]]
[[Категория:Матроиды]]
+
[[Категория: Матроиды]]
 +
[[Категория: Основные факты теории матроидов]]

Текущая версия на 19:39, 4 сентября 2022

Разноцветный матроид

Определение:
Пусть [math]X[/math] — множество элементов, каждый из которых раскрашен в некоторый цвет. Множество [math]A \in I[/math], если все элементы множества [math]A[/math] разного цвета. Тогда [math] M = \langle X, I\rangle[/math] называется разноцветным матроидом (англ. multicolored matroid).


Утверждение:
Разноцветный матроид является матроидом.
[math]\triangleright[/math]

Докажем аксиомы независимости для [math] I [/math].

  1. [math]\varnothing \in I[/math]
    В пустом множестве нет элементов [math]\Rightarrow[/math] можем считать, что все элементы различных цветов.
  2. [math]A \subset B, \ B \in I \Rightarrow A \in I[/math]
    Если в [math]B[/math] все элементы разного цвета, то и в [math]A \subset B[/math] это будет выполняться.
  3. [math]A \in I, \ B \in I, \ \left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \mathcal \exists x \in B \setminus A, \ A \cup \{ x \} \in I[/math]
    В каждом из множеств [math]A[/math] и [math]B[/math] все элементы разных цветов. Так как [math]\left\vert A \right\vert \lt \left\vert B \right\vert[/math], значит в [math]B[/math] есть хотя бы один элемент [math]x[/math] такого цвета, которого нет среди элементов множества [math]A[/math], таким образом [math]A \cup \{ x \} \in I[/math]
[math]\triangleleft[/math]

Универсальный матроид

Определение:
Универсальным матроидом (англ. uniform matroid) называют объект [math]U_{nk} = \langle X, I \rangle [/math], где [math]X = \{1, 2, 3, \dots, n\}, I = \{A \subset X \mid \left\vert A \right\vert \leqslant k\}[/math]


Утверждение:
Универсальный матроид является матроидом.
[math]\triangleright[/math]

Проверим выполнение аксиом независимости:

  1. [math]\varnothing \in I[/math]
    [math] \left\vert \varnothing \right\vert = 0 \leqslant k \Rightarrow \varnothing \in I[/math]
  2. [math]A \subset B, \ B \in I \Rightarrow A \in I[/math]
    [math] \left\vert A \right\vert \leqslant \left\vert B \right\vert \leqslant k \Rightarrow \left\vert A \right\vert \leqslant k \Rightarrow A \in I [/math]
  3. [math]A \in I, \ B \in I, \ \left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \mathcal \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I[/math]
    Так как [math]\left\vert A \right\vert \lt \left\vert B \right\vert [/math] и числа в каждом множестве различны, найдётся такое число [math] x \in B [/math], которое не будет принадлежать меньшему по мощности множеству [math] A [/math].
    Рассмотрим [math] A \cup \{ x \mathcal \} [/math]. [math]\left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \left\vert A \cup \{ x \} \right\vert = \left\vert A \right\vert + 1 \leqslant \left\vert B \right\vert \leqslant k \Rightarrow A \cup \{ x \} \in I[/math]
[math]\triangleleft[/math]

Графовый матроид

Определение:
Пусть [math]G = \langle V, E \rangle[/math] — неориентированный граф. Тогда [math]M = \langle E, I \rangle [/math], где [math]I[/math] состоит из всех ацикличных множеств ребер (то есть являющихся лесами), называют графовым (графическим) матроидом (англ. graphic matroid).


Утверждение:
Графовый матроид является матроидом.
[math]\triangleright[/math]

Проверим выполнение аксиом независимости:

  1. [math]\varnothing \in I[/math]
    Пустое множество является ациклическим, а значит входит в [math]I[/math].
  2. [math]A \subset B, \ B \in I \Rightarrow A \in I[/math]
    Очевидно, что любой подграф леса, так же является лесом, а значит входит в [math]I[/math] вследствие своей ацикличности.
  3. [math]A \in I, \ B \in I, \ \left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \mathcal \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I[/math]
    В графе [math]G_A = \langle V, A \rangle [/math] как минимум две компоненты связанности, иначе [math]G_A[/math] являлся бы остовным деревом и не существовало бы ациклического множества с большей мощностью.
    Допустим в [math]B[/math] не существует ребра, соединяющего две различные компоненты связанности из [math]G_A[/math], значит любая компонента связанности из [math]G_B[/math] целиком вершинно-входит в какую-либо компоненту из [math]G_A[/math]. Рассмотрим любую компоненту связанности [math]Q[/math] из [math]G_A[/math], у неё [math]k[/math] вершин и [math]k - 1[/math] рёбер. Теперь рассмотрим все компоненты связанности [math]P_i[/math] из [math]G_B[/math], вершинно-входящие в [math]Q[/math], пусть их [math]m[/math] штук, тогда суммарное количество рёбер из [math]P_i[/math] равно [math]k - m[/math], что не превосходит [math]k - 1[/math] (количество рёбер в [math]Q[/math]). Просуммируем неравенство по всем компонентам связанности из [math]G_A[/math] и получим [math]\left\vert A \right\vert \geqslant \left\vert B \right\vert[/math], что противоречит условию. Значит предположение не верно, и в [math]B[/math] существует искомое ребро [math]x[/math] из разных компонент связанности [math]G_B[/math].
[math]\triangleleft[/math]

Матричный матроид

Определение:
Пусть [math]V[/math] — векторное пространство над телом [math]F[/math], пусть набор векторов [math]V_i = \{ v_1, \ \dots, \ v_n\}[/math] из пространства [math]V[/math] является носителем [math]X[/math]. Элементами независимого множества [math]I[/math] данного матроида являются множества линейно независимых векторов из набора [math]v_ 1, \ \dots, \ v_n[/math]. Тогда [math]M = \langle V_i, I \rangle [/math], называется матричным матроидом (англ. vector matroid)


Утверждение:
Матричный матроид является матроидом.
[math]\triangleright[/math]

Проверим выполнение аксиом независимости:

  1. [math]\varnothing \in I[/math]
    Множество в котором нет векторов является линейно-независимым.
  2. [math]A \subset B, \ B \in I \Rightarrow A \in I[/math]
    Если из набора линейно-независимых векторов убрать некоторые, то этот набор не станет зависимым.
  3. [math]A \in I, \ B \in I, \ \left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I[/math]
    Так как [math]A \in I[/math], то [math]\dim \mathcal{L}(A) = \left\vert A \right\vert[/math]. По условию [math]\left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \exists x \in B: x \notin \mathcal{L}(A)[/math], то есть [math]x \notin A[/math]. Тогда множество [math] A \cup \{ x \} [/math] линейно-независимо по определению линейной оболочки.
[math]\triangleleft[/math]

Трансверсальный матроид

Определение:
Пусть [math]G = \langle X, Y, E \rangle[/math] — двудольный граф. [math]I = \{ A \subset X \mid \exists [/math] паросочетание [math] P[/math], покрывающее [math]A \} [/math]. Тогда [math]M = \langle X, I \rangle [/math] называют трансверсальным матроидом (англ. transversal matroid).


Утверждение:
Трансверсальный матроид является матроидом.
[math]\triangleright[/math]

Проверим выполнение аксиом независимости:

  1. [math]\varnothing \in I[/math]
    Пустое паросочетание удовлетворяет условию.
  2. [math]A \subset B, \ B \in I \Rightarrow A \in I[/math]
    Подмножество паросочетания также является паросочетанием. Удалим из исходного паросочетания [math]P[/math] ребра, концами которых являются вершины из множества [math]B \setminus A[/math]. Оставшееся множество ребер будет являться паросочетанием, покрывающим [math]A[/math]. Значит [math] A \in I [/math].
  3. [math]A \in I, \ B \in I, \ \left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I[/math]
    Раскрасим ребра из паросочетания, соответствующего [math] B [/math] в синий цвет, а соответствующего [math] A [/math] — в красный. Причем ребра, соответствующие двум паросочетаниям, будут окрашены в пурпурный цвет. Таким образом, получится [math] \left\vert B \setminus A \right\vert [/math] ребер синего цвета, [math] \left\vert A \setminus B \right\vert [/math] ребер красного цвета, и будет выполняться соотношение [math] \left\vert B \setminus A \right\vert \gt \left\vert A \setminus B \right\vert[/math].
    Рассмотрим подграф [math] H [/math], индуцированный красными и синими ребрами из исходного графа. Каждая вершина соответствует либо двум ребрам — синему и красному, либо одному — синему или красному. Любая компонента связности представляет собой либо путь, либо цикл, состоящий из чередующихся красных и синих ребер. Так как граф двудольный, любой цикл состоит из четного числа ребер. Так как синих ребер больше, чем красных, то должен существовать путь, начинающийся и оканчивающийся синим ребром. Обозначим этот путь [math] H' [/math]. Поменяем в [math] H' [/math] синий и красный цвета. Получаем, что ребра, окрашенные в красный и пурпурный цвета образуют паросочетание в графе. Очевидно, что подмножество соответствующее этому новому паросочетанию имеет вид [math]A \cup \{ x \} [/math], где [math] x \in B \setminus A [/math]. Что значит, что [math] A \cup \{ x \} \in I[/math].
[math]\triangleleft[/math]

Матроид паросочетаний

Определение:
Пусть [math]G = \langle V, E \rangle[/math] — неориентированный граф. [math]I = \{ A \subset V \mid \exists[/math] паросочетание [math]P[/math], покрывающее [math]A \}[/math]. Тогда [math]M = \langle V, I \rangle [/math] называют матроидом паросочетаний (англ. matching matroid).


Утверждение:
Матроид паросочетаний является матроидом.
[math]\triangleright[/math]

Проверим выполнение аксиом независимости:

  1. [math]\varnothing \in I[/math]
    Пустое паросочетание удовлетворяет условию.
  2. [math]A \subset B, \ B \in I \Rightarrow A \in I[/math]
    Удалим из исходного паросочетания [math]P[/math] ребра, концами которых являются вершины из множества [math]B \setminus A[/math]. Оставшееся множество ребер будет являться паросочетанием, покрывающим [math]A[/math]. Значит [math]A \in I[/math].
  3. [math]A \in I, \ B \in I, \ \left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I[/math]
    Пусть паросочетание [math]P_A[/math] покрывает множество [math]A[/math], [math]P_B[/math] — множество [math]B[/math].
    Все вершины, принадлежащие [math]A \cap B[/math] покроем ребрами из паросочетания [math]P_B[/math].
    Так как [math]\left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \exists x \in B \setminus A[/math]
    Рассмотрим три возможных случая:
    1. [math]\exists xy \in P_A, \ y \in A \Rightarrow P_A[/math] покрывает [math]A \cup \{ x \} \Rightarrow A \cup \{ x \} \in I[/math]
    2. [math]\exists xy: y \in B \setminus A \Rightarrow xy \notin P_A[/math]. Мы можем добавить в [math]A[/math] вершину [math]x[/math] (или [math]y[/math]), а в [math]P_A[/math] ребро [math]xy[/math]. Тогда паросочетание [math]P_A \cup xy[/math] покрывает [math]A \cup \{ x \} \Rightarrow A \cup \{ x \} \in I[/math]
    3. Если первые два случая не выполнились, значит [math]\forall x \in B \setminus A[/math] [math]\exists y \notin A, \ \notin B: \exists xy \in P_B[/math]. Обозначим множество таких [math]y[/math] за [math]C, \ \left\vert C \right\vert = \left\vert B \setminus A \right\vert \gt \left\vert A \setminus B \right\vert[/math]. Таким образом в [math]C[/math] найдется хотя бы одна вершина [math]y[/math], не покрытая паросочетанием [math]P_A[/math]. Тогда паросочетание [math]P_A \cup xy[/math] покрывает [math]A \cup \{ x \} \Rightarrow A \cup \{ x \} \in I[/math]
[math]\triangleleft[/math]

Матроид разбиений

Определение:
Пусть [math]X = \bigcup\limits_{i=_1}^n X_i[/math], при этом [math] X_i \cap X_j = 0[/math], [math]\forall i \neq j[/math], и [math]k_1 \dots k_n[/math] — положительные целые числа. [math]I = \{ A \subset X \mid \left\vert A \cap X_i \right\vert \leqslant k_i, \ \forall i: 1 \leqslant i \leqslant n \} [/math]. Тогда [math]M = \langle X, I \rangle [/math] называют матроидом разбиений (англ. partition matroid)


Утверждение:
Матроид разбиений является матроидом.
[math]\triangleright[/math]

Проверим выполнение аксиом независимости:

  1. [math]\varnothing \in I[/math]
    [math]\left\vert \varnothing \cap X_i \right\vert = 0 \leqslant k_i \Rightarrow \varnothing \in I[/math]
  2. [math]A \subset B, \ B \in I \Rightarrow A \in I[/math]
    [math]A \subset B, \ \left\vert A \right\vert \leqslant \left\vert B \right\vert \Rightarrow \left\vert A \cap X_i \right\vert \leqslant \left\vert B \cap X_i \right\vert \leqslant k_i \Rightarrow A \in I[/math]
  3. [math]A \in I, \ B \in I, \ \left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \exists ~ x \in B \setminus A, \ A \cup \{ x \} \in I[/math]
    Пусть [math]\forall x \in B \setminus A, \ A \cup \{ x \} \notin I \Rightarrow \exists X_j, \ k_j: \left\vert A \cup \{ x \} \cap X_j \right\vert \gt k_j[/math], но так как [math]A \in I[/math], то есть [math] \left\vert A \cap X_j \right\vert \leqslant k_j \Rightarrow \left\vert A \cap X_j \right\vert = k_j[/math] и [math]x \in X_j[/math]. Из последнего следует, что [math]\left\vert B \setminus A \right\vert \subset X_j[/math].
    [math]\left\vert A \cap X_j \right\vert = \left\vert ((A \cap B) \cup (B \setminus A)) \cap X_j \right\vert = k_j[/math], а [math]\left\vert B \cap X_j \right\vert = \left\vert B \cap X_j \right\vert = \left\vert ((A \cap B) \cup (A \setminus B)) \cap X_j \right\vert[/math]. Так как [math]\left\vert A \right\vert \lt \left\vert B \right\vert \Rightarrow \left\vert A \setminus B \right\vert \lt \left\vert B \setminus A \right\vert[/math], тогда [math]\left\vert B \cap X_j \right\vert \gt k_j[/math], но [math]B \in I[/math], противоречие.
[math]\triangleleft[/math]

Бинарный матроид

Определение:
Матроид [math]M[/math] представим над полем [math]F[/math], если он изоморфен некоторому векторному матроиду над этим полем.


Определение:
Бинарный матроид (англ. binary matroid) — матроид, представимый над полем целых чисел по модулю [math]2[/math].


Утверждение:
Графовый матроид является бинарным.
[math]\triangleright[/math]

Составим матрицу инцидентности [math]A = (a_{ij})[/math] для графа [math]G = \langle V, E \rangle[/math]. Строки этой матрицы соответствуют вершинам графа, а столбцы — ребрам.

  • Если [math]j[/math]-ое ребро есть петля, инцидентная [math]i[/math]-ой вершине, то [math]a_{ij} = 0[/math].
  • Если [math]i[/math]-ая вершина инцидентна [math]j[/math]-ому ребру, то [math]a_{ij} = 1[/math]
  • Иначе [math]a_{ij} = 0[/math]

Необходимо доказать, что если мы возьмем множество ребер [math]A \in I[/math], то множество столбцов матрицы инцидентности, соответствующее выбранным ребрам, линейно-независимо, и наоборот, если мы возьмем линейно-независимое множество столбцов, то соответствующее ему множество ребер, не будет образовывать цикла. Докажем эквивалентное утверждение: столбцы линейно-зависимы тогда и только тогда, когда соответствующие им ребра графа [math]G[/math] содержат цикл.

[math]\Rightarrow[/math] Пусть столбцы линейно-зависимы, докажем, что соответствующие ребра графа содержат цикл.

Если некоторые столбцы матрицы [math]A[/math] линейно-зависимы, то среди них можно выделить столбцы с нулевой суммой. Есть два варианта:

  1. Cреди выбранных столбцов есть нулевой, тогда в соответствующем множестве ребер есть петля, то есть цикл.
  2. У нас есть столбец [math]S[/math], который является суммой остальных столбцов. Этому столбцу соответствует ребро [math]uv[/math]. Начнем с вершины [math]u[/math] переходить по другим ребрам из [math]R \setminus uv[/math] (по каждому ребру проходим только один раз), в итоге мы придем в вершину [math]v[/math], так для остальных вершин у нас обязательно будет четное число выходящих из них ребер, потому что иначе на позиции этой вершины в столбце [math]S[/math] была бы единица (а единицы у нас только на позициях [math]u[/math] и [math]v[/math]). Таким образом мы показали, что существует два пути между вершинами [math]u[/math] и [math]v[/math] (тот который мы построили и путь по ребру [math]uv[/math]), значит в выбранном множестве ребер есть цикл.

[math]\Leftarrow[/math] Пусть на множестве ребер есть цикл, докажем линейную-зависимость соответствующих столбцов.

Если среди данного множества ребер есть петля, то соответствующий ей столбец будет нулевым (по построению матрицы инцидентности), он и обеспечивает линейную-зависимость всего набора векторов.

Если петли нет, то рассмотрим столбцы, отвечающие ребрам простого цикла. Любая строка матрицы [math]A[/math] содержит в этих столбцах ровно 2 единицы. Поэтому сумма по модулю [math]2[/math] указанных столбцов равна нулевому столбцу, что означает линейную зависимость исходного множества столбцов.
[math]\triangleleft[/math]

Другие матроиды

Несложно доказать, что следующие конструкции тоже являются матроидами.

Определение:
Матроид с выкинутым элементом. Пусть [math]M = \langle X, I\rangle[/math] — матроид. Определим [math]M\setminus x = \langle X \setminus x, \ \{A \mid A \in I, \ x \not\in A\}\rangle[/math]. Для любых [math]M[/math] и [math]x[/math] получившаяся конструкция [math]M\setminus x[/math] является матроидом.


Определение:
Матроид, стянутый по элементу. Пусть [math]M = \langle X, I\rangle[/math] — матроид. Определим [math]M/x = \langle X \setminus x, \ \{A \setminus x \mid A \in I, \ x \in A\}\rangle[/math]. Для любых [math]M[/math] и [math]x[/math], таких что [math]\{x\}\in I,[/math] получившаяся конструкция [math]M/x[/math] является матроидом.


Определение:
Пусть [math]M = \langle X, I \rangle[/math] — матроид. Обозначим как [math]M|_k[/math] следующую констркуцию: [math]M|_k = \langle X, \ \{A \mid A \in I, |A| \leqslant k \}\rangle[/math], тогда [math]M|_k[/math] называют урезанным матроидом.


Определение:
Полный матроид — матроид [math] M = \langle X, \mathcal{I} \rangle[/math] такой, что [math]\mathcal{I} = 2^X[/math].


Определение:
Тривиальный матроид — матроид [math] M = \langle X, \mathcal{I} \rangle[/math] такой, что [math]\mathcal{I} = \varnothing [/math].


См. также

Источники