<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9</id>
		<title>Алгоритм вырезания соцветий - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;action=history"/>
		<updated>2026-08-03T23:32:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=84952&amp;oldid=prev</id>
		<title>Maintenance script: rollbackEdits.php mass rollback</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=84952&amp;oldid=prev"/>
				<updated>2022-09-04T16:21:08Z</updated>
		
		<summary type="html">&lt;p&gt;rollbackEdits.php mass rollback&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:21, 4 сентября 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|+&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-align=&amp;quot;center&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|'''НЕТ ВОЙНЕ'''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;''Антивоенный комитет России''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=83643&amp;oldid=prev</id>
		<title>194.26.192.187 в 05:19, 1 сентября 2022</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=83643&amp;oldid=prev"/>
				<updated>2022-09-01T05:19:54Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:19, 1 сентября 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|+&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-align=&amp;quot;center&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|'''НЕТ ВОЙНЕ'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;''Антивоенный комитет России''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>194.26.192.187</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=80678&amp;oldid=prev</id>
		<title>178.121.47.217: /* Алгоритм вырезания соцветий */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=80678&amp;oldid=prev"/>
				<updated>2021-03-03T15:12:15Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Алгоритм вырезания соцветий&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:12, 3 марта 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot; &gt;Строка 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи алгоритма [[Алгоритм Куна для поиска максимального паросочетания|Куна]], а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи алгоритма [[Алгоритм Куна для поиска максимального паросочетания|Куна]], а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей чётно. Также для каждой вершины, расстояние до которой нечётно, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить её предка {{---}} чётную вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, что она является корнем&amp;#160; или принадлежит паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. Найдём наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех чётных вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;в случае, когда при &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;восстановление &lt;/del&gt;увеличивающего пути&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;мы зайдем в нечётную вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей чётно. Также для каждой вершины, расстояние до которой нечётно, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить её предка {{---}} чётную вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, что она является корнем&amp;#160; или принадлежит паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. Найдём наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех чётных вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок в случае, когда при &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;восстановлении &lt;/ins&gt;увеличивающего пути мы зайдем в нечётную вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Оценка сложности ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Оценка сложности ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>178.121.47.217</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=80677&amp;oldid=prev</id>
		<title>178.121.47.217: /* Алгоритм вырезания соцветий */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=80677&amp;oldid=prev"/>
				<updated>2021-03-03T15:07:42Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Алгоритм вырезания соцветий&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:07, 3 марта 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot; &gt;Строка 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи алгоритма [[Алгоритм Куна для поиска максимального паросочетания|Куна]], а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи алгоритма [[Алгоритм Куна для поиска максимального паросочетания|Куна]], а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей чётно. Также для каждой вершины, расстояние до которой нечётно, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить её предка {{---}} чётную вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;являющуюся &lt;/del&gt;корнем&amp;#160; или &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;принадлежащую &lt;/del&gt;паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. Найдём наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех чётных вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок, в случае, когда при восстановление увеличивающего пути, мы зайдем в нечётную вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей чётно. Также для каждой вершины, расстояние до которой нечётно, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить её предка {{---}} чётную вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;что она является &lt;/ins&gt;корнем&amp;#160; или &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;принадлежит &lt;/ins&gt;паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. Найдём наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех чётных вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок, в случае, когда при восстановление увеличивающего пути, мы зайдем в нечётную вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Оценка сложности ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Оценка сложности ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>178.121.47.217</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=80676&amp;oldid=prev</id>
		<title>178.121.47.217: /* Теорема Эдмондса */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=80676&amp;oldid=prev"/>
				<updated>2021-03-03T14:55:51Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Теорема Эдмондса&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:55, 3 марта 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;Строка 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть даны граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, паросочетание &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; и цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;2k+1&amp;lt;/tex&amp;gt;, содержащий &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; рёбер паросочетания &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; и вершинно непересекающийся с остальными рёбрами из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Построим новый граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; из графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, сжимая цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; до единичной вершины, при этом все ребра, инцидентные вершинам этого цикла, становятся инцидентными вершине в новом графе. Тогда паросочетание &amp;lt;tex&amp;gt;M -E(Z)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;E(z)&amp;lt;/tex&amp;gt; {{---}} ребра, инцидентные циклу, является наибольшим в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; тогда и только тогда, когда М {{---}} наибольшее паросочетание в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть даны граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, паросочетание &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; и цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;2k+1&amp;lt;/tex&amp;gt;, содержащий &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; рёбер паросочетания &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; и вершинно непересекающийся с остальными рёбрами из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Построим новый граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; из графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, сжимая цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; до единичной вершины, при этом все ребра, инцидентные вершинам этого цикла, становятся инцидентными вершине в новом графе. Тогда паросочетание &amp;lt;tex&amp;gt;M -E(Z)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;E(z)&amp;lt;/tex&amp;gt; {{---}} ребра, инцидентные циклу, является наибольшим в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; тогда и только тогда, когда М {{---}} наибольшее паросочетание в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|proof=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|proof=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим её через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда пройдём по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим её через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;сжатие &lt;/del&gt;цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим её через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда пройдём по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим её через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;сжатии &lt;/ins&gt;цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; рёбер цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; рёбер цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>178.121.47.217</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=72094&amp;oldid=prev</id>
		<title>Дмитрий Мурзин в 23:14, 8 января 2020</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=72094&amp;oldid=prev"/>
				<updated>2020-01-08T23:14:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 23:14, 8 января 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Рассмотрим неориентированный невзвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ребер&lt;/del&gt;]]. Требуется найти в &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;нем &lt;/del&gt;максимальное паросочетание.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Рассмотрим неориентированный невзвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;рёбер&lt;/ins&gt;]]. Требуется найти в &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;нём &lt;/ins&gt;максимальное паросочетание.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Приведем &lt;/del&gt;пример, на котором [[Алгоритм Куна для поиска максимального паросочетания|алгоритм Куна]] работать не будет. Рассмотрим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с множеством вершин &amp;lt;tex&amp;gt;V={1,2,3,4} &amp;lt;/tex&amp;gt;, и множеством &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ребер &lt;/del&gt;{{---}}&amp;lt;tex&amp;gt;E={\langle 1,2 \rangle, \langle 2, 3 \rangle, \langle 3, 1 \rangle, \langle 2, 4 \rangle}&amp;lt;/tex&amp;gt; и пусть ребро &amp;lt;tex&amp;gt;\langle 2, 3\rangle&amp;lt;/tex&amp;gt; взято в паросочетание. Тогда при запуске из вершины &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;, если обход пойдёт сначала в вершину &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;, то он &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;зайдет &lt;/del&gt;в тупик в вершине &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;, вместо того чтобы найти увеличивающую цепь &amp;lt;tex&amp;gt;1-3-2-4&amp;lt;/tex&amp;gt;. Как видно на этом примере, основная проблема заключается в том, что при попадании в цикл нечётной длины, обход может пойти по циклу в неправильном направлении.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Приведём &lt;/ins&gt;пример, на котором [[Алгоритм Куна для поиска максимального паросочетания|алгоритм Куна]] работать не будет. Рассмотрим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с множеством вершин &amp;lt;tex&amp;gt;V={1,2,3,4} &amp;lt;/tex&amp;gt;, и множеством &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;рёбер &lt;/ins&gt;{{---}}&amp;lt;tex&amp;gt;E={\langle 1,2 \rangle, \langle 2, 3 \rangle, \langle 3, 1 \rangle, \langle 2, 4 \rangle}&amp;lt;/tex&amp;gt; и пусть ребро &amp;lt;tex&amp;gt;\langle 2, 3\rangle&amp;lt;/tex&amp;gt; взято в паросочетание. Тогда при запуске из вершины &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;, если обход пойдёт сначала в вершину &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;, то он &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;зайдёт &lt;/ins&gt;в тупик в вершине &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;, вместо того чтобы найти увеличивающую цепь &amp;lt;tex&amp;gt;1-3-2-4&amp;lt;/tex&amp;gt;. Как видно на этом примере, основная проблема заключается в том, что при попадании в цикл нечётной длины, обход может пойти по циклу в неправильном направлении.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Теорема Эдмондса ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Теорема Эдмондса ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot; &gt;Строка 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Теорема&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Теорема&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|statement=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|statement=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть даны граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, паросочетание &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; и цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;2k+1&amp;lt;/tex&amp;gt;, содержащий &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ребер &lt;/del&gt;паросочетания &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; и вершинно непересекающийся с остальными &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ребрами &lt;/del&gt;из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Построим новый граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; из графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, сжимая цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; до единичной вершины, при этом все ребра, инцидентные вершинам этого цикла, становятся инцидентными вершине в новом графе. Тогда паросочетание &amp;lt;tex&amp;gt;M -E(Z)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;E(z)&amp;lt;/tex&amp;gt; {{---}} ребра, инцидентные циклу, является наибольшим в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; тогда и только тогда, когда М {{---}} наибольшее паросочетание в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть даны граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, паросочетание &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; и цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;2k+1&amp;lt;/tex&amp;gt;, содержащий &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;рёбер &lt;/ins&gt;паросочетания &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; и вершинно непересекающийся с остальными &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;рёбрами &lt;/ins&gt;из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Построим новый граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; из графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, сжимая цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; до единичной вершины, при этом все ребра, инцидентные вершинам этого цикла, становятся инцидентными вершине в новом графе. Тогда паросочетание &amp;lt;tex&amp;gt;M -E(Z)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;E(z)&amp;lt;/tex&amp;gt; {{---}} ребра, инцидентные циклу, является наибольшим в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; тогда и только тогда, когда М {{---}} наибольшее паросочетание в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|proof=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|proof=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ее &lt;/del&gt;через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;пройдем &lt;/del&gt;по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ее &lt;/del&gt;через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при сжатие цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;её &lt;/ins&gt;через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;пройдём &lt;/ins&gt;по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;её &lt;/ins&gt;через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при сжатие цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ребер &lt;/del&gt;цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;рёбер &lt;/ins&gt;цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для простоты описания алгоритма &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;введем &lt;/del&gt;некоторые определения.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для простоты описания алгоритма &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;введём &lt;/ins&gt;некоторые определения.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Определение&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Определение&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|definition= Будем называть '''соцветием''' &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; его цикл &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;нечетной &lt;/del&gt;длины.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|definition= Будем называть '''соцветием''' &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; его цикл &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;нечётной &lt;/ins&gt;длины.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Cжатием соцветия''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;назовем &lt;/del&gt;граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, полученный из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; сжатием всего нечётного цикла в одну псевдо-вершину. Все рёбра, инцидентные вершинам этого цикла, становятся инцидентными псевдо-вершине в новом графе.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Cжатием соцветия''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;назовём &lt;/ins&gt;граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, полученный из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; сжатием всего нечётного цикла в одну псевдо-вершину. Все рёбра, инцидентные вершинам этого цикла, становятся инцидентными псевдо-вершине в новом графе.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''База соцветия''' - вершина соцветия, в которую входит ребро не из данного соцветия.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''База соцветия''' - вершина соцветия, в которую входит ребро не из данного соцветия.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot; &gt;Строка 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи алгоритма [[Алгоритм Куна для поиска максимального паросочетания|Куна]], а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи алгоритма [[Алгоритм Куна для поиска максимального паросочетания|Куна]], а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;четно&lt;/del&gt;. Также для каждой вершины, расстояние до которой &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;нечетно&lt;/del&gt;, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ее &lt;/del&gt;предка {{---}} &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;четную &lt;/del&gt;вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, являющуюся корнем&amp;#160; или принадлежащую паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Найдем &lt;/del&gt;наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;четных &lt;/del&gt;вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок, в случае, когда при восстановление увеличивающего пути, мы зайдем в &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;нечетную &lt;/del&gt;вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;чётно&lt;/ins&gt;. Также для каждой вершины, расстояние до которой &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;нечётно&lt;/ins&gt;, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;её &lt;/ins&gt;предка {{---}} &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;чётную &lt;/ins&gt;вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, являющуюся корнем&amp;#160; или принадлежащую паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Найдём &lt;/ins&gt;наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;чётных &lt;/ins&gt;вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок, в случае, когда при восстановление увеличивающего пути, мы зайдем в &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;нечётную &lt;/ins&gt;вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Оценка сложности ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Оценка сложности ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Дмитрий Мурзин</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=33668&amp;oldid=prev</id>
		<title>Dgerasimov: /* Паросочетание в недвудольном графе */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=33668&amp;oldid=prev"/>
				<updated>2013-11-16T09:27:53Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Паросочетание в недвудольном графе&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 09:27, 16 ноября 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Паросочетание в недвудольном графе==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Рассмотрим неориентированный невзвешенный[[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Требуется найти в нем максимальное паросочетание.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Рассмотрим неориентированный невзвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Требуется найти в нем максимальное паросочетание.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Приведем пример, на котором [[Алгоритм Куна для поиска максимального паросочетания|алгоритм Куна]] работать не будет. Рассмотрим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с множеством вершин &amp;lt;tex&amp;gt;V={1,2,3,4} &amp;lt;/tex&amp;gt;, и множеством ребер {{---}}&amp;lt;tex&amp;gt;E={\langle 1,2 \rangle, \langle 2, 3 \rangle, \langle 3, 1 \rangle, \langle 2, 4 \rangle}&amp;lt;/tex&amp;gt; и пусть ребро &amp;lt;tex&amp;gt;\langle 2, 3\rangle&amp;lt;/tex&amp;gt; взято в паросочетание. Тогда при запуске из вершины &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;, если обход пойдёт сначала в вершину &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;, то он зайдет в тупик в вершине &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;, вместо того чтобы найти увеличивающую цепь &amp;lt;tex&amp;gt;1-3-2-4&amp;lt;/tex&amp;gt;. Как видно на этом примере, основная проблема заключается в том, что при попадании в цикл нечётной длины, обход может пойти по циклу в неправильном направлении. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Приведем пример, на котором [[Алгоритм Куна для поиска максимального паросочетания|алгоритм Куна]] работать не будет. Рассмотрим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с множеством вершин &amp;lt;tex&amp;gt;V={1,2,3,4} &amp;lt;/tex&amp;gt;, и множеством ребер {{---}}&amp;lt;tex&amp;gt;E={\langle 1,2 \rangle, \langle 2, 3 \rangle, \langle 3, 1 \rangle, \langle 2, 4 \rangle}&amp;lt;/tex&amp;gt; и пусть ребро &amp;lt;tex&amp;gt;\langle 2, 3\rangle&amp;lt;/tex&amp;gt; взято в паросочетание. Тогда при запуске из вершины &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;, если обход пойдёт сначала в вершину &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;, то он зайдет в тупик в вершине &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;, вместо того чтобы найти увеличивающую цепь &amp;lt;tex&amp;gt;1-3-2-4&amp;lt;/tex&amp;gt;. Как видно на этом примере, основная проблема заключается в том, что при попадании в цикл нечётной длины, обход может пойти по циклу в неправильном направлении.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Теорема Эдмондса ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Теорема Эдмондса ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dgerasimov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=18820&amp;oldid=prev</id>
		<title>178.178.29.194 в 09:33, 6 марта 2012</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=18820&amp;oldid=prev"/>
				<updated>2012-03-06T09:33:01Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 09:33, 6 марта 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot; &gt;Строка 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда пройдем по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при сжатие цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда пройдем по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при сжатие цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; ребер цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;М&lt;/del&gt;&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; ребер цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;M&lt;/ins&gt;&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>178.178.29.194</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=18815&amp;oldid=prev</id>
		<title>194.85.160.130: /* Алгоритм вырезания соцветий */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=18815&amp;oldid=prev"/>
				<updated>2012-03-06T08:04:01Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Алгоритм вырезания соцветий&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 08:04, 6 марта 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot; &gt;Строка 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Алгоритм вырезания соцветий==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Алгоритм вырезания соцветий==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;обхода в ширину&lt;/del&gt;, а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Опишем алгоритм, позволяющий находить максимальное паросочетание для произвольного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из теоремы Эдмондса понятно, что необходимо рассматривать паросочетание в сжатом графе, где его можно найти, к примеру, при помощи &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;алгоритма [[Алгоритм Куна для поиска максимального паросочетания|Куна]]&lt;/ins&gt;, а после восстанавливать паросочетание в исходном графе.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей четно. Также для каждой вершины, расстояние до которой нечетно, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить ее предка {{---}} четную вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, являющуюся корнем&amp;#160; или принадлежащую паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. Найдем наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех четных вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок, в случае, когда при восстановление увеличивающего пути, мы зайдем в нечетную вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Основную сложность представляют операции сжатия и восстановления цветков. Чтобы эффективно это делать, для каждой вершины необходимо хранить указатель на базу цветка, которому она принадлежит, или на себя в противном случае. Предположим, что для поиска паросочетаний в сжатом графе, мы используем обход в ширину. Тогда на каждой итерации алгоритма будет строиться дерево обхода в ширину, причём путь в нём до любой вершины будет являться чередующимся путём, начинающимся с корня этого дерева. Будем класть в очередь только те вершины, расстояние от корня до которых в дереве путей четно. Также для каждой вершины, расстояние до которой нечетно, в массиве предков &amp;lt;tex&amp;gt;p[]&amp;lt;/tex&amp;gt; необходимо хранить ее предка {{---}} четную вершину. Заметим, что если в процессе обхода в ширину мы из текущей вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; приходим в такую вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, являющуюся корнем&amp;#160; или принадлежащую паросочетанию и дереву путей, то обе эти вершины принадлежат некоторому цветку. Действительно, при выполнении этих условий эти вершины являются чётными вершинами, следовательно расстояние от них до их наименьшего общего предка имеет одну чётность. Найдем наименьшего общего предка &amp;lt;tex&amp;gt;lca(u,v)&amp;lt;/tex&amp;gt; вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, который является базой цветка. Для нахождения самого цикла необходимо пройтись от вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; до базы цветка. В явном виде цветок сжимать не будем, просто положим в очередь обхода в ширину все вершины, принадлежащие цветку. Также для всех четных вершин (за исключением базы) назначим предком соседнюю вершину в цикле, а для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; назначим предками друг друга. Это позволит корректно восстановить цветок, в случае, когда при восстановление увеличивающего пути, мы зайдем в нечетную вершину цикла.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>194.85.160.130</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=18523&amp;oldid=prev</id>
		<title>83.149.2.234: /* Теорема Эдмондса */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D1%86%D0%B2%D0%B5%D1%82%D0%B8%D0%B9&amp;diff=18523&amp;oldid=prev"/>
				<updated>2012-02-29T07:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Теорема Эдмондса&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:19, 29 февраля 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;Строка 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть даны граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, паросочетание &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; и цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;2k+1&amp;lt;/tex&amp;gt;, содержащий &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; ребер паросочетания &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; и вершинно непересекающийся с остальными ребрами из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Построим новый граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; из графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, сжимая цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; до единичной вершины, при этом все ребра, инцидентные вершинам этого цикла, становятся инцидентными вершине в новом графе. Тогда паросочетание &amp;lt;tex&amp;gt;M -E(Z)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;E(z)&amp;lt;/tex&amp;gt; {{---}} ребра, инцидентные циклу, является наибольшим в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; тогда и только тогда, когда М {{---}} наибольшее паросочетание в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть даны граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, паросочетание &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; и цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;2k+1&amp;lt;/tex&amp;gt;, содержащий &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; ребер паросочетания &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; и вершинно непересекающийся с остальными ребрами из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Построим новый граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; из графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, сжимая цикл &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; до единичной вершины, при этом все ребра, инцидентные вершинам этого цикла, становятся инцидентными вершине в новом графе. Тогда паросочетание &amp;lt;tex&amp;gt;M -E(Z)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;E(z)&amp;lt;/tex&amp;gt; {{---}} ребра, инцидентные циклу, является наибольшим в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; тогда и только тогда, когда М {{---}} наибольшее паросочетание в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|proof=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|proof=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;М&lt;/del&gt;'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда пройдем по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при сжатие цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;М&lt;/del&gt;'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда в силу [[Теорема о максимальном паросочетании и дополняющих_цепях|теоремы о максимальном паросочетании и дополняющих цепях]] существует увеличивающая относительно &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, то цепь является увеличивающей относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; и в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;M&lt;/ins&gt;'&amp;lt;/tex&amp;gt; не может быть наибольшим паросочетанием. Поэтому предположим, что цепь &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; пересекается с &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Заметим, что хотя бы одна концевая вершина цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Тогда пройдем по цепи &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, начиная с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; до первой встречной вершины на &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, обозначим ее через &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Тогда, при сжатие цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, участок &amp;lt;tex&amp;gt;P[u,v]&amp;lt;/tex&amp;gt; отобразится на увеличивающую цепь относительно &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;M&lt;/ins&gt;'&amp;lt;/tex&amp;gt; не является максимальным паросочетанием, что противоречит нашему предположению.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; ребер цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;М&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь допустим, что &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; паросочетание в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, мощности большей, чем &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;. Восстановим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; будет соответствовать некоторому паросочетанию в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, покрывающему не более одной вершины в &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;. Следовательно паросочетание &amp;lt;tex&amp;gt;N'&amp;lt;/tex&amp;gt; можно увеличить, используя &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; ребер цикла &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt;, и получить паросочетание &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, размера &amp;lt;tex&amp;gt;|N| = |N'|+k &amp;gt; |M'|+k = |M|&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;М&amp;lt;/tex&amp;gt; не является наибольшим паросочетанием в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, приходим к противоречию. Таким образом теорема доказана.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>83.149.2.234</name></author>	</entry>

	</feed>