<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.70.222.53&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.70.222.53&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/178.70.222.53"/>
		<updated>2026-04-08T20:54:06Z</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%BE%D1%82%D0%BC%D0%B5%D0%BD%D1%8B&amp;diff=58321</id>
		<title>Алгоритм отмены</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%BE%D1%82%D0%BC%D0%B5%D0%BD%D1%8B&amp;diff=58321"/>
				<updated>2016-12-25T21:09:20Z</updated>
		
		<summary type="html">&lt;p&gt;178.70.222.53: Удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>178.70.222.53</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%BE%D1%82%D0%BC%D0%B5%D0%BD%D1%8B_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B2%D0%B5%D1%81%D0%B0&amp;diff=58320</id>
		<title>Алгоритм отмены цикла минимального среднего веса</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%BE%D1%82%D0%BC%D0%B5%D0%BD%D1%8B_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B2%D0%B5%D1%81%D0%B0&amp;diff=58320"/>
				<updated>2016-12-25T21:08:58Z</updated>
		
		<summary type="html">&lt;p&gt;178.70.222.53: Новая страница: «==Алгоритм отмены цикла минимального среднего веса==  Приведенный алгоритм принадлежит к...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Алгоритм отмены цикла минимального среднего веса==&lt;br /&gt;
&lt;br /&gt;
Приведенный алгоритм принадлежит к классу сильно полиномиальных алгоритмов.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Сильно полиномиальными''' в контексте данной задачи называются алгоритмы, чья сложность полиномиально зависит от &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; {{---}} числа вершин и &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; {{---}} числа ребер графа.}}&lt;br /&gt;
&lt;br /&gt;
===Описание алгоритма===&lt;br /&gt;
Рассмотрим некоторый цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;. Обозначим его стоимость за &amp;lt;tex&amp;gt;p(C)&amp;lt;/tex&amp;gt;, а его длину (число ребер, входящих в цикл) за &amp;lt;tex&amp;gt;\texttt{len}(C)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Средним весом цикла''' называется отношение его стоимости к его длине &amp;lt;tex&amp;gt;\mu (C)=\frac{p(C)}{\texttt{len}(C)}&amp;lt;/tex&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Сам алгоритм====&lt;br /&gt;
Рассмотрим некоторый поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. Находим цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, обладающий наименьшим средним весом. Если &amp;lt;tex&amp;gt;\mu (C) \geq 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток минимальной стоимости и алгоритм завершается.&lt;br /&gt;
Иначе, отменим цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;f := f + c_{f}(C)\cdot f_{C}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;c_{f}(C)&amp;lt;/tex&amp;gt; {{---}} остаточная пропускная способность цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Вернемся к началу алгоритма.&lt;br /&gt;
&lt;br /&gt;
====Время работы алгоритма====&lt;br /&gt;
&amp;lt;tex&amp;gt;O(VE\cdot VE^{2}\log{V})&amp;lt;/tex&amp;gt;, при этом&lt;br /&gt;
&amp;lt;tex&amp;gt;O(VE)&amp;lt;/tex&amp;gt; времени тратится на поиск цикла минимального среднего веса.&lt;br /&gt;
&lt;br /&gt;
===Алгоритм поиска цикла минимального среднего веса===&lt;br /&gt;
====наивный способ====&lt;br /&gt;
Устроим двоичный поиск.&lt;br /&gt;
установим нижнюю и верхнюю границы &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;r&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;m&amp;lt;/tex&amp;gt;. Тогда сдвигаем правую границу на &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, иначе {{---}} левую.&lt;br /&gt;
Такой алгоритм будет работать за &amp;lt;tex&amp;gt;O(\texttt{log} \frac{1}{\varepsilon} \cdot EV)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; {{---}} точность выбора величины среднего веса цикла.&lt;br /&gt;
====способ убрать &amp;lt;tex&amp;gt;\texttt{log} \frac{1}{\varepsilon}&amp;lt;/tex&amp;gt; из оценки====&lt;br /&gt;
&lt;br /&gt;
Добавим к нашему графу вершину &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и ребра из нее во все остальные вершины.&lt;br /&gt;
Рассмотрим алгоритм Форда-Беллмана и попросим его построить нам следущую квадратную матрицу:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 d[i][u] // длина минимального пути от s до u ровно из i ребер&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Тогда длина оптимального цикла &amp;lt;tex&amp;gt;\mu^{*}&amp;lt;/tex&amp;gt; минимального среднего веса вычисляется как &amp;lt;tex&amp;gt;\min\limits_{u} {\max\limits_{k} {\frac{d[n][u]-d[k][u]}{n-k}}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Почему это так? Грубо говоря, достаточно доказать для &amp;lt;tex&amp;gt;\mu^{*}=0&amp;lt;/tex&amp;gt;, так как для других &amp;lt;tex&amp;gt;\mu^{*}&amp;lt;/tex&amp;gt; можно просто отнять его величину от всех ребер и получить рассматриваемый случай. &lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
как же найти сам цикл&lt;br /&gt;
Запомним, при каких &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; достигается этот минимум, и, используя &amp;lt;tex&amp;gt;d[n][u]&amp;lt;/tex&amp;gt;, по указателям предков поднимаемся. Как только мы зациклимся {{---}} мы нашли цикл минимального среднего веса.&lt;br /&gt;
&lt;br /&gt;
Этот алогоритм работает за &amp;lt;tex&amp;gt;O(VE)&amp;lt;/tex&amp;gt;.&lt;/div&gt;</summary>
		<author><name>178.70.222.53</name></author>	</entry>

	</feed>