<?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=176.101.2.153&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=176.101.2.153&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/176.101.2.153"/>
		<updated>2026-04-08T21:06:17Z</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%B5%D0%B1%D1%80%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=71749</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%B5%D0%B1%D1%80%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=71749"/>
				<updated>2019-08-08T17:49:35Z</updated>
		
		<summary type="html">&lt;p&gt;176.101.2.153: Была опечатка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Алгебра графов''' (англ. ''algebra of graphs'')  {{---}} способ построить на пространстве [[Основные определения теории графов#Ориентированные графы | ориентированных графов]] алгебраическую структуру. Впервые такая возможность была продемонстрирована McNulty и George F. в 1983 году.&amp;lt;ref&amp;gt;[https://www.researchgate.net/publication/225490641_Inherently_nonfinitely_based_finite_algebras  McNulty, George F.; Shallon, Caroline R. (1983) {{---}} &amp;quot;Inherently nonfinitely based finite algebras&amp;quot;, Universal algebra and lattice theory (Puebla, 1982), Lecture Notes in Math., 1004, Berlin, New York: Springer-Verlag, pp. 206–231.]&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Основные определения ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Пустой граф''' (англ. ''empty graph'') {{---}} [[Основные определения теории графов#Ориентированные графы|граф]] в котором нет вершин и ребер. Здесь и далее будем обозначать его как &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;. То есть &amp;lt;tex&amp;gt;\varepsilon = \{\varnothing, \varnothing\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Одиночный граф''' (англ. ''single graph'') {{---}} [[Основные определения теории графов#Ориентированные графы|граф]] состоящий из одной вершины. Здесь и далее  для удобства будем обозначать и одиночный граф и множество его вершин одной буквой. Например, &amp;lt;tex&amp;gt; a = \{a, \varnothing \}&amp;lt;/tex&amp;gt; {{---}} граф содержащий толко одну вершину &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Алгеброй графов''' (англ. ''algebra of graphs'') называется множество ориентированных графов с двумя определенными на нем операциями.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G_1 = \{V_1, E_1\}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;G_2 = \{V_2, E_2\}&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\forall G_1, G_2&amp;lt;/tex&amp;gt; &lt;br /&gt;
* '''Сложение''' (англ. ''overlay''): &amp;lt;tex&amp;gt;G_1 + G_2 = \{V_1 \cup V_2, E_1 \cup E_2\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
* '''Соединение''' (англ. ''connect''): &amp;lt;tex&amp;gt; G_1 \rightarrow G_2 = \{V_1 \cup V_2, E_1 \cup E_2 \cup V_1 \times V_2\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Cвойства операций == &lt;br /&gt;
Данные операции обладают следующими свойствами очевидными из определения.&lt;br /&gt;
=== Сложение ===&lt;br /&gt;
* Наличие нейтрального элемента&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;G + \varepsilon = G&amp;lt;/tex&amp;gt; &lt;br /&gt;
}}&lt;br /&gt;
* ''Коммутативность:''&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;G_1 + G_2 = G_2 + G_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
* ''Aссоциативность:'' &lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;G_1 + (G_2 + G_3) = (G_1 + G_2) + G_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Соединение ===&lt;br /&gt;
* ''Наличие левого и правого нейтральных элементов:''&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;\varepsilon \rightarrow G = G \\G \rightarrow \varepsilon = G&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
* ''Ассоциативность:''&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;G_1 \rightarrow (G_2 \rightarrow G_3) = (G_1 \rightarrow G_2) \rightarrow G_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Левая часть:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;G_1 \rightarrow (G_2 \rightarrow G_3) = (V_1, E_1) \rightarrow ((V_2, E_2) \rightarrow (V_3, E_3)) = (V_1, E_1) \rightarrow (V_2 \cup V_3, E_2 \cup E_3 \cup V_2 \times V_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_2 \times V_3 \cup V_1 \times (V_2 \cup V_3)) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_2 \times V_3 \cup V_1 \times V_2 \cup V_1 \times V_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_1 \times V_2  \cup V_1 \times V_3 \cup V_2 \times V_3)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правая часть:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;(G_1 \rightarrow G_2) \rightarrow G_3 = ((V_1, E_1) \rightarrow (V_2, E_2)) \rightarrow (V_3, E_3) = (V_1 \cup V_2, E_1 \cup E_2 \cup V_1 \times V_2) \rightarrow (V_3, E_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup V_1 \times V_2 \cup E_3 \cup (V_1 \cup V_2) \times V_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_1 \times V_2 \cup V_1 \times V_3 \cup V_2 \times V_3)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Другие свойства ===&lt;br /&gt;
* ''Левая и правая дистрибутивность:''&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt;G_1 \rightarrow (G_2 + G_3) = G_1 \rightarrow G_2 + G_1\rightarrow G_3 \\ (G_1 + G_2) \rightarrow G_3 = G_1 \rightarrow G_3 + G_2 \rightarrow G_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof= &lt;br /&gt;
Левая часть:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;G_1 \rightarrow (G_2 + G_3) = (V_1, E_1) \rightarrow ((V_2, E_2) + (V_3, E_3)) = (V_1, E_1) \rightarrow (V_2 \cup V_3, E_2 \cup E_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_1 \times (V_2 \cup V_3)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правая часть:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;G_1 \rightarrow G_2 + G_1 \rightarrow G_3 = (V_1, E_1) \rightarrow (V_2, E_2) + (V_1, E_1) \rightarrow (V_3, E_3) = (V_1 \cup V_2, E_1 \cup E_2 \cup V_1 \times V_2) + (V_1 \cup V_3, E_1 \cup E_3 \cup V_1 \times V_3) = (V_1 \cup V_2 \cup V_1  \cup V_3, E_1 \cup E_2 \cup V_1 \times V_2 \cup E_1 \cup E_3 \cup V_1 \times V_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_1 \times V_2 \cup V_1 \times V_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_1 \times (V_2 \cup V_3))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правая дистрибутивность доказывается аналогично.&lt;br /&gt;
}}&lt;br /&gt;
* ''Декомпозиция:''&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;G_1 \rightarrow G_2 \rightarrow G_3 = G_1 \rightarrow G_2 + G_1 \rightarrow G_3 + G_2 \rightarrow G_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Левая часть:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;G_1 \rightarrow G_2 \rightarrow G_3 = (V_1, E_1) \rightarrow (V_2, E_2) \rightarrow (V_3, E_3) = (V_1 \cup V_2, E_1 \cup E_2 \cup V_1 \times V_2) \rightarrow (V_3, E_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup V_1 \times V_2 \cup E_3 \cup (V_1 \cup V_2) \times V_3) =  (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_1 \times V_2 \cup V_1 \times V_3 \cup V_2 \times V_3)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правая часть:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;G_1 \rightarrow G_2 + G_1 \rightarrow G_3 + G_2 \rightarrow G_3 = (V_1, E_1) \rightarrow (V_2, E_2) + (V_1, E_1) \rightarrow (V_3, E_3) + (V_2, E_2) \rightarrow (V_3, E_3) = (V_1 \cup V_2, E_1 \cup E_2 \cup V_1 \times V_2) + (V_1 \cup V_3, E_1 \cup E_3 \cup V_1 \times V_3) + (V_2 \cup V_3, E_2 \cup E_3 \cup V_2 \times V_3) = (V_1 \cup V_2 \cup V_1 \cup V_3 \cup V_2 \cup V_3, E_1 \cup E_2 \cup V_1 \times V_2 \cup E_1 \cup E_3 \cup V_1 \times V_3 \cup E_2 \cup E_3 \cup V_2 \times V_3) = (V_1 \cup V_2 \cup V_3, E_1 \cup E_2 \cup E_3 \cup V_1 \times V_2 \cup V_1 \times V_3 \cup V_2 \times V_3)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Любой граф &amp;lt;tex&amp;gt;G = \{V, E\}&amp;lt;/tex&amp;gt; можно представить в виде композиции сложений и соединений.&lt;br /&gt;
|proof=Действительно, &amp;lt;tex&amp;gt;G = \sum_{(u, v\in V)}u \rightarrow v&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\sum&amp;lt;/tex&amp;gt; это послeдовательное применение операции сложения графов.&lt;br /&gt;
}}&lt;br /&gt;
== Построение графов в функциональных языках ==&lt;br /&gt;
Построенная нами алгебраическая структура очень полезна для использования в функциональных языках программирования. До введения понятия алгебры графов работа с ними в функциональных языках была очень неудобна и часто порождало ошибки.&lt;br /&gt;
&lt;br /&gt;
Дело в том, что способ представления в виде списка смежности либо матрицы смежности, широко используемых в императивных программах, оказался очень тяжело применим в функциональной среде.  Компилятор при представлении графа в виде списка не может проверить, ни его корректность в принципе, ни корректность совершения некоторой операции над ним. Но если представить граф в виде последовательности операций из простейших графов, то почти все проблемы, связанные с построением графа и проверкой его корректности, устраняются. &lt;br /&gt;
&lt;br /&gt;
Подробная реализация на языке &amp;lt;tex&amp;gt;\mathrm{Haskell}&amp;lt;/tex&amp;gt;&amp;lt;ref&amp;gt;[https://blogs.ncl.ac.uk/andreymokhov/an-algebra-of-graphs/ An algebra of graphs {{---}} &amp;quot;no time&amp;quot; Andrey Mokhov's blog]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Основные определения теории графов]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [https://www.researchgate.net/publication/225490641_Inherently_nonfinitely_based_finite_algebras McNulty, George F.; Shallon, Caroline R. (1983), &amp;quot;Inherently nonfinitely based finite algebras&amp;quot;, Universal algebra and lattice theory (Puebla, 1982), Lecture Notes in Math., 1004, Berlin, New York: Springer-Verlag, pp. 206–231 ] &lt;br /&gt;
* [https://www.staff.ncl.ac.uk/andrey.mokhov/algebra.pdf Algebra of Parameterised Graphs {{---}} Andrey Mokhov, Victor Khomenko, Newcastle University UK, ACM Transactions on Embedded Computing Systems, Vol. 1, No. 1, Article 1, Publication date: January 2014 .]&lt;br /&gt;
* [https://blogs.ncl.ac.uk/andreymokhov/an-algebra-of-graphs/ An algebra of graphs {{---}} &amp;quot;no time&amp;quot; Andrey Mokhov's blog]&lt;br /&gt;
* [https://blogs.ncl.ac.uk/andreymokhov/graphs-a-la-carte/ Graphs à la carte {{---}} &amp;quot;no time&amp;quot; Andrey Mokhov's blog]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Основные определения теории графов]]&lt;/div&gt;</summary>
		<author><name>176.101.2.153</name></author>	</entry>

	</feed>