<?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=91.122.56.202&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=91.122.56.202&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/91.122.56.202"/>
		<updated>2026-06-13T01:46:39Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Heavy-light_%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F&amp;diff=47531</id>
		<title>Heavy-light декомпозиция</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Heavy-light_%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F&amp;diff=47531"/>
				<updated>2015-06-05T07:19:23Z</updated>
		
		<summary type="html">&lt;p&gt;91.122.56.202: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Heavy-light декомпозиция''' {{---}} техника разбиения дерева на множество рёберно-непересекающихся путей так, чтобы при прохождении от одной вершины до другой произошла смена не более, чем &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей.&lt;br /&gt;
==Описание задачи==&lt;br /&gt;
Пусть у нас есть дерево &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; c &amp;lt;tex&amp;gt;n&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;O(\log^p{n})&amp;lt;/tex&amp;gt; при Heavy-light декомпозиции.&lt;br /&gt;
==Описание декомпозиции==&lt;br /&gt;
Декомпозиция заключается в классификации всех рёбер дерева &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в 2 вида: легкие и тяжёлые. Введём функцию &amp;lt;tex&amp;gt;s(v)&amp;lt;/tex&amp;gt;, которая будет обозначать размер поддерева вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Тяжёлые ребра''' {{---}} ребра &amp;lt;tex&amp;gt;(u, v)&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;s(v) \geq s(u) / 2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Лёгкие ребра''' {{---}} соответственно все остальные.&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим вершины, из которых не ведет ни одно тяжёлое ребро.  Будем идти от них вверх до корня или пока не пройдем легкое ребро. Получится какое-то множество путей. Утверждается, что оно будет являться искомым.&lt;br /&gt;
==Доказательство корректности полученной декомпозиции==&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement = Полученная декомпозиция является искомой.&lt;br /&gt;
|proof =&lt;br /&gt;
Докажем по отдельности корректность декомпозиции.&lt;br /&gt;
&lt;br /&gt;
1. Все рёбра покрыты путями.&lt;br /&gt;
&lt;br /&gt;
Есть два типа вершин: те, из которых ведёт ровно одно тяжёлое ребро и те, из которых не ведёт ни одного тяжёлого ребра. Для первого типа вершин мы дойдем до них некоторым путём через тяжёлое ребро снизу по определению выбора путей, а лёгкие рёбра ведущие из неё возьмем как последние рёбра в соответствующих путях. Для второго типа вершин мы по определению выбора путей возьмем их как начальные и пойдем вверх.&lt;br /&gt;
&lt;br /&gt;
Таким образом все рёбра будут покрыты.&lt;br /&gt;
&lt;br /&gt;
2. Все пути не пересекаются.&lt;br /&gt;
&lt;br /&gt;
Докажем от противного. Пусть мы взяли какое-то ребро дважды. Это значит, что из какой-то вершины вело более чем одно тяжёлое ребро, чего быть не могло. Получили противоречие.&lt;br /&gt;
&lt;br /&gt;
3. При прохождении пути от вершины &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;O(\log{n})&amp;lt;/tex&amp;gt; путей.&lt;br /&gt;
&lt;br /&gt;
Докажем эквивалентный факт, что при пути от любой вершины до корня мы сменим не более, чем &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей. Рассмотрим лёгкое ребро. Заметим, что проход вниз по такому ребру уменьшает размер поддерева как минимум в 2 раза. Но смена пути может произойти только при переходе по лёгкому ребру. Таким образом мы сменим не более &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Примеры задач==&lt;br /&gt;
Some examples&lt;/div&gt;</summary>
		<author><name>91.122.56.202</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Heavy-light_%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F&amp;diff=47465</id>
		<title>Heavy-light декомпозиция</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Heavy-light_%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F&amp;diff=47465"/>
				<updated>2015-06-04T17:57:55Z</updated>
		
		<summary type="html">&lt;p&gt;91.122.56.202: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Heavy-light декомпозиция''' {{---}} техника разбиения дерева на множество рёберно-непересекающихся путей так, чтобы при прохождении от одной вершины до другой произошла смена не более, чем &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей.&lt;br /&gt;
==Описание задачи==&lt;br /&gt;
Пусть у нас есть дерево &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; c &amp;lt;tex&amp;gt;n&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;O(\log{n})&amp;lt;/tex&amp;gt; при Heavy-light декомпозиции.&lt;br /&gt;
==Описание декомпозиции==&lt;br /&gt;
Декомпозиция заключается в классификации всех рёбер дерева &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в 2 вида: легкие и тяжёлые. Введём функцию &amp;lt;tex&amp;gt;s(v)&amp;lt;/tex&amp;gt;, которая будет обозначать размер поддерева вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Тяжёлые ребра''' {{---}} ребра &amp;lt;tex&amp;gt;(u, v)&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;s(v) \geq s(u) / 2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Лёгкие ребра''' {{---}} соответственно все остальные.&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим вершины, из которых не ведет ни одно тяжёлое ребро.  Будем идти от них вверх до корня или пока не пройдем легкое ребро. Получится какое-то множество путей. Утверждается, что оно будет являться искомым.&lt;br /&gt;
==Доказательство корректности полученной декомпозиции==&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement = Полученная декомпозиция является искомой.&lt;br /&gt;
|proof =&lt;br /&gt;
Докажем по отдельности корректность декомпозиции.&lt;br /&gt;
&lt;br /&gt;
1. Все рёбра покрыты путями.&lt;br /&gt;
&lt;br /&gt;
Есть два типа вершин: те, из которых ведёт ровно одно тяжёлое ребро и те, из которых не ведёт ни одного тяжёлого ребра. Для первого типа вершин мы дойдем до них некоторым путём через тяжёлое ребро снизу по определению выбора путей, а лёгкие рёбра ведущие из неё возьмем как последние рёбра в соответствующих путях. Для второго типа вершин мы по определению выбора путей возьмем их как начальные и пойдем вверх.&lt;br /&gt;
&lt;br /&gt;
Таким образом все рёбра будут покрыты.&lt;br /&gt;
&lt;br /&gt;
2. Все пути не пересекаются.&lt;br /&gt;
&lt;br /&gt;
Докажем от противного. Пусть мы взяли какое-то ребро дважды. Это значит, что из какой-то вершины вело более чем одно тяжёлое ребро, чего быть не могло. Получили противоречие.&lt;br /&gt;
&lt;br /&gt;
3. При прохождении пути от вершины &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;O(\log{n})&amp;lt;/tex&amp;gt; путей.&lt;br /&gt;
&lt;br /&gt;
Докажем эквивалентный факт, что при пути от любой вершины до корня мы сменим не более, чем &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей. Рассмотрим лёгкое ребро. Заметим, что проход вниз по такому ребру уменьшает размер поддерева как минимум в 2 раза. Но смена пути может произойти только при переходе по лёгкому ребру. Таким образом мы сменим не более &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Примеры задач==&lt;br /&gt;
Some examples&lt;/div&gt;</summary>
		<author><name>91.122.56.202</name></author>	</entry>

	</feed>