<?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=109.188.174.176&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=109.188.174.176&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/109.188.174.176"/>
		<updated>2026-04-06T06:04:53Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BE%D1%81%D1%82%D0%BE%D0%B2&amp;diff=20542</id>
		<title>Транзитивный остов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BE%D1%81%D1%82%D0%BE%D0%B2&amp;diff=20542"/>
				<updated>2012-04-12T20:31:16Z</updated>
		
		<summary type="html">&lt;p&gt;109.188.174.176: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Транзитивным остовом''' (''transitive reduction'') [[Определение отношения|отношения]] &amp;lt;tex&amp;gt; R &amp;lt;/tex&amp;gt; на множестве &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; называется минимальное отношение &amp;lt;tex&amp;gt; R^- &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; такое, что [[транзитивное замыкание]] &amp;lt;tex&amp;gt; R^- &amp;lt;/tex&amp;gt; равно транзитивному замыканию &amp;lt;tex&amp;gt; R &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Алгоритм для антисимметричных отношений ==&lt;br /&gt;
Для удобства представим отношение в виде графа: &amp;lt;tex&amp;gt; G = \left &amp;lt; V, E \right &amp;gt; &amp;lt;/tex&amp;gt;. Его транзитивным остовом будет граф &amp;lt;tex&amp;gt; G^- = \left &amp;lt; V, E^- \right &amp;gt; &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введём несколько обозначений:&lt;br /&gt;
* &amp;lt;tex&amp;gt; u \underset{G}{\longrightarrow} v &amp;lt;/tex&amp;gt; — в графе &amp;lt;tex&amp;gt; G &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;br /&gt;
* &amp;lt;tex&amp;gt; u \underset{G}{\overset{*}{\longrightarrow}} v &amp;lt;/tex&amp;gt; — в графе &amp;lt;tex&amp;gt; G &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; v &amp;lt;/tex&amp;gt; достижима из &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt;);&lt;br /&gt;
* &amp;lt;tex&amp;gt; u \underset{G}{\overset{+}{\longrightarrow}} v &amp;lt;/tex&amp;gt; — в графе &amp;lt;tex&amp;gt; G &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;br /&gt;
&lt;br /&gt;
Также введём определение транзитивного замыкания в терминах теории графов: &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Транзитивным замыканием''' графа &amp;lt;tex&amp;gt; G = \left &amp;lt; V, E \right &amp;gt; &amp;lt;/tex&amp;gt; называется граф &amp;lt;tex&amp;gt; G^* = \left &amp;lt; V, E^* \right &amp;gt; &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; E^* = \left \{ (i, j) \in V \times V | i \underset{G}{\overset{*}{\longrightarrow}} j \right \} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
 &lt;br /&gt;
Так как отношение антисимметрично, то граф ацикличен, то есть в нём выполняется следующее: &amp;lt;tex&amp;gt; \forall i, j \in V: i \underset{G}{\overset{+}{\longrightarrow}} j \Longrightarrow i \neq j &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Докажем теорему, из которой следует алгоритм.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; G^- = \left &amp;lt; V, E^- \right &amp;gt; &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; E^- = \left \{  (k, m) \in E \ | \  \forall l: [ k \underset{G}{\overset{*}{\longrightarrow}} l \wedge (l, m) \in E \Longrightarrow k = l ] \right \} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Докажем, что &amp;lt;tex&amp;gt; E^- \subseteq \left \{  (k, m) \in E \ | \  \forall l: [ k \underset{G}{\overset{*}{\longrightarrow}} l \wedge (l, m) \in E \Longrightarrow k = l ] \right \}&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; G^- &amp;lt;/tex&amp;gt; уже построен. Пусть &amp;lt;tex&amp;gt; (k, m) \in E^- &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; k \neq m &amp;lt;/tex&amp;gt; (так как иначе удаление ребра &amp;lt;tex&amp;gt; (k, m) &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt; E^- &amp;lt;/tex&amp;gt; приведёт к образованию меньшего графа с тем же транзитивным замыканием, что нарушает условие минимальности транзитивного остова). Поэтому по определению транзитивного остова &amp;lt;tex&amp;gt; k \underset{G}{\overset{+}{\longrightarrow}} m &amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; — вершина, для которой выполняется &amp;lt;tex&amp;gt; k \underset{G}{\overset{*}{\longrightarrow}} l \underset{G}{\longrightarrow} m &amp;lt;/tex&amp;gt;. Докажем, что &amp;lt;tex&amp;gt; k = l &amp;lt;/tex&amp;gt;, от противного. Пусть &amp;lt;tex&amp;gt; k \neq l &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; ацикличен, поэтому &amp;lt;tex&amp;gt; l \neq m &amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt; G^* = (G^-)^* &amp;lt;/tex&amp;gt;, верно &amp;lt;tex&amp;gt; k \underset{G^-}{\overset{+}{\longrightarrow}} l \underset{G^-}{\overset{+}{\longrightarrow}} m &amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt; G^- &amp;lt;/tex&amp;gt; ацикличен, путь из &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; не может содержать ребра &amp;lt;tex&amp;gt; (k, m) &amp;lt;/tex&amp;gt;. Аналогично путь из &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; m &amp;lt;/tex&amp;gt; не может содержать &amp;lt;tex&amp;gt; (k, m) &amp;lt;/tex&amp;gt;. Поэтому в &amp;lt;tex&amp;gt; G^- &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; (k, m) &amp;lt;/tex&amp;gt;. Поэтому удаление &amp;lt;tex&amp;gt; (k, m) &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt; E^- &amp;lt;/tex&amp;gt; не изменит транзитивное замыкание, что противоречит условию минимальности &amp;lt;tex&amp;gt; E^- &amp;lt;/tex&amp;gt;. Поэтому &amp;lt;tex&amp;gt; \forall l: [ k \underset{G}{\overset{*}{\longrightarrow}} l \wedge (l, m) \in E \Longrightarrow k = l ] &amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt; k \underset{G}{\overset{+}{\longrightarrow}} m &amp;lt;/tex&amp;gt;, существует такая вершина &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt; k \underset{G}{\overset{*}{\longrightarrow}} l \underset{G}{\longrightarrow} m &amp;lt;/tex&amp;gt;, что приводит к выводу, что &amp;lt;tex&amp;gt; (k, m) \in E &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Докажем, что &amp;lt;tex&amp;gt; \left \{  (k, m) \in E \ | \  \forall l: [ k \underset{G}{\overset{*}{\longrightarrow}} l \wedge (l, m) \in E \Longrightarrow k = l ] \right \} \subseteq  E^- &amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Предположим, что &amp;lt;tex&amp;gt; (k, m) \in E &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \forall l: [ k \underset{G}{\overset{*}{\longrightarrow}} l \wedge (l, m) \in E \Longrightarrow k = l ] &amp;lt;/tex&amp;gt;. Докажем от противного, пусть &amp;lt;tex&amp;gt; (k, m) \notin E^- &amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; ацикличен, &amp;lt;tex&amp;gt; k \neq m &amp;lt;/tex&amp;gt; и поэтому &amp;lt;tex&amp;gt; k \underset{G^-}{\overset{+}{\longrightarrow}} m &amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt; (k, m) \notin E^- &amp;lt;/tex&amp;gt;, существует вершина &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt; k \underset{G^-}{\overset{*}{\longrightarrow}} l \underset{G^-}{\overset{*}{\longrightarrow}} m &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; k \neq l \neq m &amp;lt;/tex&amp;gt;. Поэтому &amp;lt;tex&amp;gt; k \underset{G}{\overset{+}{\longrightarrow}} l \underset{G}{\overset{+}{\longrightarrow}} m &amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; ацикличен, существует вершина &amp;lt;tex&amp;gt; l' \neq k &amp;lt;/tex&amp;gt;, для которой выполняется &amp;lt;tex&amp;gt; k \underset{G}{\overset{+}{\longrightarrow}} l' \underset{G}{\longrightarrow} m &amp;lt;/tex&amp;gt;, что противоречит нашему предположению.&lt;br /&gt;
&lt;br /&gt;
Так как множества &amp;lt;tex&amp;gt; E^- &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \left \{  (k, m) \in E \ | \  \forall l: [ k \underset{G}{\overset{*}{\longrightarrow}} l \wedge (l, m) \in E \Longrightarrow k = l ] \right \} &amp;lt;/tex&amp;gt; включены друг в друга, они совпадают, что и требовалось доказать.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
  &amp;lt;tex&amp;gt; R^- &amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; R &amp;lt;/tex&amp;gt;&lt;br /&gt;
  foreach &amp;lt;tex&amp;gt; a &amp;lt;/tex&amp;gt; in &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt;&lt;br /&gt;
    foreach &amp;lt;tex&amp;gt; b &amp;lt;/tex&amp;gt; in &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt;&lt;br /&gt;
      foreach &amp;lt;tex&amp;gt; c &amp;lt;/tex&amp;gt; in &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt;&lt;br /&gt;
        if &amp;lt;tex&amp;gt; aRb &amp;lt;/tex&amp;gt; and &amp;lt;tex&amp;gt; bRc &amp;lt;/tex&amp;gt; and &amp;lt;tex&amp;gt; aRc &amp;lt;/tex&amp;gt;&lt;br /&gt;
          &amp;lt;tex&amp;gt; R^- &amp;lt;/tex&amp;gt;.delete(pair(&amp;lt;tex&amp;gt; a &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;
* [http://en.wikipedia.org/wiki/Transitive_reduction Wikipedia: Transitive reduction]&lt;br /&gt;
* [http://archive.cs.uu.nl/pub/RUU/CS/techreps/CS-1987/1987-25.pdf J.A. La Poutré and J. van Leeuwen. «Maintenance of transitive closures and transitive reductions of graphs», 1987]&lt;/div&gt;</summary>
		<author><name>109.188.174.176</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:Splay-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=20514</id>
		<title>Обсуждение:Splay-дерево</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:Splay-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=20514"/>
				<updated>2012-04-11T20:36:22Z</updated>
		
		<summary type="html">&lt;p&gt;109.188.174.176: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: {{tick | ticked=1}} саморегулирующееся? o_O &lt;br /&gt;
: {{tick | ticked=1}} &amp;quot;Основной идей для сохранение &amp;quot;&lt;br /&gt;
: {{tick | ticked=1}} Сделать отдельный раздел &amp;quot;опреации&amp;quot;, в него их запихать как подразделы&lt;br /&gt;
: {{tick | ticked=1}} добавить категории&lt;br /&gt;
: {{tick | ticked=1}} названия вершин в конспекте и на картинках совпадают чуть менее чем никак. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 19:23, 6 февраля 2012 (MSK)&lt;br /&gt;
: {{tick}} нормально офромить источники&lt;br /&gt;
:: Ссылку на статью надо оформлять как&lt;br /&gt;
:: Автор1, Автор2. Название статьи.&lt;br /&gt;
:: Также, кажется, эта статья есть в открытом доступе, значит, добавить на нее ссылку. Добавить ссылку хотя бы на википедию. На визуализатор, если есть.&lt;br /&gt;
::: Треш-статья все еще не убрана. Ссылку на английскую википедию добавь, да. Нужная тебе статья — первая ссылка по запросу «Tarjan splay tree» и первый референс в английской вики. Это Sleator, Daniel D.; Tarjan, Robert E. (1985), &amp;quot;Self-Adjusting Binary Search Trees&amp;quot;. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 22:49, 8 апреля 2012 (GST)&lt;br /&gt;
::: И вообще, почитай эту статью, в ней ни слова по сплей-деревья. Тебе другая статья нужна.&lt;br /&gt;
:: Сначала пишут «Википедия», потом название статьи. --[[Служебная:Contributions/109.188.174.176|109.188.174.176]] 00:36, 12 апреля 2012 (GST)&lt;br /&gt;
&lt;br /&gt;
: {{tick | ticked=1}} раздел «определение» убрать, из него все запихать в шапку.&lt;br /&gt;
: {{tick | ticked=1}} сплей-дерево — не самобалансируещееся, почитай определение сбалансированного дерева поиска. Баланс в нем не сохраняется.&lt;br /&gt;
: {{tick}} про операции&lt;br /&gt;
:: Как-то бредово выглядит в начале каждого подпункта название операции с ее аргументами. Либо напиши аргументы в заголовке, либо придумай что-то другое. Еще плохо выглядит написаение аргументов в техе, а остального - плейнтекстом. Либо все плейнтекстом, либо все в техе и заюзать \operatorname&lt;br /&gt;
::: Сначала пишут структуру, потом — аргументы (Split(Tree, key) и т.п.). Ну и либо пиши Tree везде(в Find) тоже, либо там где не надо, не пиши.&lt;br /&gt;
:: Move to root — не операция, это одна из возможных эвристик, но которая не приводит ни к чему хорошему. Ее хорошо упомянуть, но не в операциях.&lt;br /&gt;
::: Теперь она вообще внезапно появляется и неясно зачем. Почитай немного статью, которую я сказал и пойми, где тебе будет уместно упомянуть её и как.&lt;br /&gt;
:::: Все еще не исправлено. И про нее написан полнейший бред, почитай уже статью Тарьяна. --[[Служебная:Contributions/109.188.174.176|109.188.174.176]] 00:36, 12 апреля 2012 (GST)&lt;br /&gt;
{{tick}}В Splay нумерации списка нет, пункты 1, 1 и 1. Там же надо написать, что удаляешь вершину b, потому что сначала неясно. А вообще вершинам на картинках лучше бы чуть более осмысленные имена, например, x, p(parent) и g(grandparent). --[[Участник:Dgerasimov|Дмитрий Герасимов]] 01:48, 7 апреля 2012 (GST)&lt;br /&gt;
: Да, в лемме тоже неплохо бы переименовать. И в тех в статье выделить x, p и g, да.--[[Служебная:Contributions/109.188.174.176|109.188.174.176]] 00:36, 12 апреля 2012 (GST)&lt;br /&gt;
{{tick|ticked=1}}Я имею в виду, что из картинки не сразу ясно, какой вершине мы делаем splay, а в тексте этого явно не написано.&lt;br /&gt;
{{tick|ticked=1}} А сделай Zig, Zig-Zig и Zig-Zag подпунктами Splay, тогда нормально смотреться будет. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 22:49, 8 апреля 2012 (GST)&lt;br /&gt;
{{tick|ticked=1}}Ну в общем-то я ничего против википедии не имею, картинки там вроде адекватные.&lt;br /&gt;
{{tick | ticked=1}} Почему ничего нет про Find? Обязательно надо написать, что он тоже меняет дерево.&lt;br /&gt;
{{tick}} еще пару слов сказать про сплей-деревья по неявному ключу.&lt;/div&gt;</summary>
		<author><name>109.188.174.176</name></author>	</entry>

	</feed>