Участник:Zerogerc — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Проверка двудольного графа на существование в нем полного паросочетания)
м (Алгоритм)
Строка 5: Строка 5:
 
<tex>let  G = (V_1, V_2, E)</tex> {{---}} двудольный граф, где <tex>|V_1|=|V_2|</tex> и<tex>E \subseteq V_1 \times V_2</tex>, тогда полным паросочетанием называется <tex>E' \subseteq E</tex> такое что каждая вершина является концом ровно одного ребра из <tex>E'</tex>.
 
<tex>let  G = (V_1, V_2, E)</tex> {{---}} двудольный граф, где <tex>|V_1|=|V_2|</tex> и<tex>E \subseteq V_1 \times V_2</tex>, тогда полным паросочетанием называется <tex>E' \subseteq E</tex> такое что каждая вершина является концом ровно одного ребра из <tex>E'</tex>.
 
====Алгоритм====
 
====Алгоритм====
Пусть у нас есть матрица <tex>X</tex> размером <tex>n \times n</tex>, где <tex>n = |V_1| = |V_2|</tex>. Пусть <tex>X_ij = x_ij</tex> если <tex>(i,j) \in E</tex>, <tex>0</tex> иначе.
+
Пусть у нас есть матрица <tex>X</tex> размером <tex>n \times n</tex>, где <tex>n = |V_1| = |V_2|</tex>. Пусть <tex>X_{ij} = x_{ij}</tex> если <tex>(i,j) \in E</tex>, <tex>0</tex> иначе. Пусть детерминант матрицы <tex>det(X) = \sum\nolimits_{\sigma \in S_n} (-1)^{sign(\sigma)} \prod\limits_{i=1}^n X_{i,\sigma(i)}</tex>. Где <tex>S_n</tex> это множество всех перестановок <tex>{1, 2, ..., n}</tex>. Каждая такая перестановка это возможное полное паросочетание. Тогда ясно что если <tex>det(X) \ne 0 \iff</tex> когда в <tex>G \: \exists</tex> полное паросочетание. Таким образом: в графе <tex>\exists</tex> полное паросочетание <tex>\iff det(X) \ne 0</tex>

Версия 18:58, 9 апреля 2017

Примеры рандомизированных алгоритмов

Проверка двудольного графа на существование в нем полного паросочетания

Задача

[math]let G = (V_1, V_2, E)[/math] — двудольный граф, где [math]|V_1|=|V_2|[/math] и[math]E \subseteq V_1 \times V_2[/math], тогда полным паросочетанием называется [math]E' \subseteq E[/math] такое что каждая вершина является концом ровно одного ребра из [math]E'[/math].

Алгоритм

Пусть у нас есть матрица [math]X[/math] размером [math]n \times n[/math], где [math]n = |V_1| = |V_2|[/math]. Пусть [math]X_{ij} = x_{ij}[/math] если [math](i,j) \in E[/math], [math]0[/math] иначе. Пусть детерминант матрицы [math]det(X) = \sum\nolimits_{\sigma \in S_n} (-1)^{sign(\sigma)} \prod\limits_{i=1}^n X_{i,\sigma(i)}[/math]. Где [math]S_n[/math] это множество всех перестановок [math]{1, 2, ..., n}[/math]. Каждая такая перестановка это возможное полное паросочетание. Тогда ясно что если [math]det(X) \ne 0 \iff[/math] когда в [math]G \: \exists[/math] полное паросочетание. Таким образом: в графе [math]\exists[/math] полное паросочетание [math]\iff det(X) \ne 0[/math]