<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Anton121</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Anton121"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%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/Anton121"/>
	<updated>2026-10-22T16:05:06Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28811</id>
		<title>Anton121 Test Page</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28811"/>
		<updated>2022-05-09T18:09:50Z</updated>

		<summary type="html">&lt;p&gt;Anton121: /* Так, ну допустим, посмотрим, как здесь отображается текст!&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;&#039;&#039;&#039;Посмотрим, как здесь отображается текст&#039;&#039;&#039;&#039;==&lt;br /&gt;
&#039;&#039;Организуем список, варианты входа в критическую секцию:&#039;&#039;&lt;br /&gt;
* pragma critical&lt;br /&gt;
* pragma atomic&lt;br /&gt;
* locks&lt;br /&gt;
* Other knowledges&lt;br /&gt;
Just statistic about Covid-19 new victims&lt;br /&gt;
[https://yandex.ru/covid19/stat?utm_source=main_graph&amp;amp;utm_source=main_notif&amp;amp;geoId=225 &amp;lt;br&amp;gt;Covid-19 statistic]&lt;br /&gt;
[[Файл:Bigstock.jpg|мини|&amp;lt;big&amp;gt;Push to make your life easier!&amp;lt;/big&amp;gt;]]&lt;br /&gt;
Снизу текста должно быть написано&amp;lt;sub&amp;gt;нижний&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Сверху текста должно быть написано&amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;Верхний&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 2019 !! 2020 !! 2021&lt;br /&gt;
|-&lt;br /&gt;
| 7,5 bil || 7,7 bil || 7,9 bil&lt;br /&gt;
|-&lt;br /&gt;
| 90% || 99% || &lt;br /&gt;
* &amp;lt;big&amp;gt;121%&amp;lt;/big&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;122%&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Открытая_энциклопедия_свойств_алгоритмов| Главная страница]]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Bigstock.jpg|Эти кнопки&lt;br /&gt;
Bigstock.jpg|Для тестирования&lt;br /&gt;
Bigstock.jpg|Добавления&lt;br /&gt;
Bigstock.jpg|Картинок&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, дальше я просто скопировал код для какого-то шаблона&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2} &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp;  \beta_{k} \\&lt;br /&gt;
\end{pmatrix} = \sum_{\begin{smallmatrix} \gamma_{1} &amp;lt; \gamma_{2} &amp;lt; \cdots &amp;lt; \gamma_{k} \end{smallmatrix}} L \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2}  &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
\end{pmatrix} U\begin{pmatrix}&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp; \beta_{k} \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28810</id>
		<title>Anton121 Test Page</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28810"/>
		<updated>2022-05-09T16:31:34Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;&#039;&#039;&#039;Так, ну допустим, посмотрим, как здесь отображается текст!&#039;&#039;&#039;&#039;==&lt;br /&gt;
&#039;&#039;Организуем списочек, варианты входа в критическую секцию:&#039;&#039;&lt;br /&gt;
* pragma critical&lt;br /&gt;
* pragma atomic&lt;br /&gt;
* locks&lt;br /&gt;
* Other knowledges&lt;br /&gt;
Just statistic about Covid-19 new victims&lt;br /&gt;
[https://yandex.ru/covid19/stat?utm_source=main_graph&amp;amp;utm_source=main_notif&amp;amp;geoId=225 &amp;lt;br&amp;gt;Covid-19 statistic]&lt;br /&gt;
[[Файл:Bigstock.jpg|мини|&amp;lt;big&amp;gt;Push to make your life easier!&amp;lt;/big&amp;gt;]]&lt;br /&gt;
Снизу текста должно быть написано&amp;lt;sub&amp;gt;нижний&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Сверху текста должно быть написано&amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;Верхний&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 2019 !! 2020 !! 2021&lt;br /&gt;
|-&lt;br /&gt;
| 7,5 bil || 7,7 bil || 7,9 bil&lt;br /&gt;
|-&lt;br /&gt;
| 90% || 99% || &lt;br /&gt;
* &amp;lt;big&amp;gt;121%&amp;lt;/big&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;122%&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Открытая_энциклопедия_свойств_алгоритмов| Главная страница]]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Bigstock.jpg|Эти кнопки&lt;br /&gt;
Bigstock.jpg|Для тестирования&lt;br /&gt;
Bigstock.jpg|Добавления&lt;br /&gt;
Bigstock.jpg|Картинок&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, дальше я просто скопировал код для какого-то шаблона&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2} &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp;  \beta_{k} \\&lt;br /&gt;
\end{pmatrix} = \sum_{\begin{smallmatrix} \gamma_{1} &amp;lt; \gamma_{2} &amp;lt; \cdots &amp;lt; \gamma_{k} \end{smallmatrix}} L \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2}  &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
\end{pmatrix} U\begin{pmatrix}&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp; \beta_{k} \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28809</id>
		<title>Anton121 Test Page</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28809"/>
		<updated>2022-05-09T16:27:44Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;&#039;&#039;&#039;Так, ну допустим, посмотрим, как здесь отображается текст!&#039;&#039;&#039;&#039;==&lt;br /&gt;
&#039;&#039;Организуем списочек, варианты входа в критическую секцию:&#039;&#039;&lt;br /&gt;
* pragma critical&lt;br /&gt;
* pragma atomic&lt;br /&gt;
* locks&lt;br /&gt;
* Other knowledges&lt;br /&gt;
Just statistic about Covid-19 new victims&lt;br /&gt;
[https://yandex.ru/covid19/stat?utm_source=main_graph&amp;amp;utm_source=main_notif&amp;amp;geoId=225 &amp;lt;br&amp;gt;Covid-19 statistic]&lt;br /&gt;
[[Файл:Bigstock.jpg|мини|&amp;lt;big&amp;gt;Push to make your life easier!&amp;lt;/big&amp;gt;]]&lt;br /&gt;
Снизу текста должно быть написано&amp;lt;sub&amp;gt;нижний&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Сверху текста должно быть написано&amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;Верхний&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 2019 !! 2020 !! 2021&lt;br /&gt;
|-&lt;br /&gt;
| 7,5 bil || 7,7 bil || 7,9 bil&lt;br /&gt;
|-&lt;br /&gt;
| 90% || 99% || &lt;br /&gt;
* &amp;lt;big&amp;gt;121%&amp;lt;/big&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;122%&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Открытая_энциклопедия_свойств_алгоритмов| Главная страница]]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Bigstock.jpg|Нужно больше&lt;br /&gt;
Bigstock.jpg|Кнопок&lt;br /&gt;
Bigstock.jpg|Нужно больше&lt;br /&gt;
Bigstock.jpg|Золота&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, дальше я просто скопировал код для какого-то шаблона&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2} &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp;  \beta_{k} \\&lt;br /&gt;
\end{pmatrix} = \sum_{\begin{smallmatrix} \gamma_{1} &amp;lt; \gamma_{2} &amp;lt; \cdots &amp;lt; \gamma_{k} \end{smallmatrix}} L \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2}  &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
\end{pmatrix} U\begin{pmatrix}&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp; \beta_{k} \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28808</id>
		<title>Anton121 Test Page</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28808"/>
		<updated>2022-05-09T16:27:06Z</updated>

		<summary type="html">&lt;p&gt;Anton121: /* Так, ну допустим, посмотрим, как здесь отображается текст, карл!&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;&#039;&#039;&#039;Так, ну допустим, посмотрим, как здесь отображается текст!&#039;&#039;&#039;&#039;==&lt;br /&gt;
&#039;&#039;Организуем списочек, варианты входа в критическую секцию:&#039;&#039;&lt;br /&gt;
* pragma critical&lt;br /&gt;
* pragma atomic&lt;br /&gt;
* locks&lt;br /&gt;
* Other knowledges&lt;br /&gt;
Just statistic about Covid-19 new victims&lt;br /&gt;
[https://yandex.ru/covid19/stat?utm_source=main_graph&amp;amp;utm_source=main_notif&amp;amp;geoId=225 &amp;lt;br&amp;gt;Covid-19 statistic]&lt;br /&gt;
[[Файл:Bigstock.jpg|мини|&amp;lt;big&amp;gt;Push to make your life easier!&amp;lt;/big&amp;gt;]]&lt;br /&gt;
Снизу текста должно быть написано&amp;lt;sub&amp;gt;нижний штангенциркуль&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Сверху текста должно быть написано&amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;Верхний Луивитон&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 2019 !! 2020 !! 2021&lt;br /&gt;
|-&lt;br /&gt;
| 7,5 bil || 7,7 bil || 7,9 bil&lt;br /&gt;
|-&lt;br /&gt;
| 90% || 99% || &lt;br /&gt;
* &amp;lt;big&amp;gt;121%&amp;lt;/big&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;122%&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Открытая_энциклопедия_свойств_алгоритмов| Главная страница]]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Bigstock.jpg|Нужно больше&lt;br /&gt;
Bigstock.jpg|Кнопок&lt;br /&gt;
Bigstock.jpg|Нужно больше&lt;br /&gt;
Bigstock.jpg|Золота&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, дальше я просто скопировал код для какого-то шаблона&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2} &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp;  \beta_{k} \\&lt;br /&gt;
\end{pmatrix} = \sum_{\begin{smallmatrix} \gamma_{1} &amp;lt; \gamma_{2} &amp;lt; \cdots &amp;lt; \gamma_{k} \end{smallmatrix}} L \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2}  &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
\end{pmatrix} U\begin{pmatrix}&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp; \beta_{k} \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushButton&amp;diff=28807</id>
		<title>Шаблон:PushButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushButton&amp;diff=28807"/>
		<updated>2022-05-02T15:18:22Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{link|https://parallel.ru/}}} &amp;lt;span style=&amp;quot;font-size:{{{size|initial}}}; color:{{{color|white}}}; &lt;br /&gt;
font-style:{{{style|initial}}}; background-color:{{{b-color|none}}}; font-weight: {{{weight|initial}}};&lt;br /&gt;
text-decoration:{{{decoration|initial}}}; text-transform:{{{transform|initial}}}&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt; {{{text|Get Perf.Data}}} &amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28671</id>
		<title>Anton121 Test Buttons</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28671"/>
		<updated>2021-11-07T14:52:12Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи ==&lt;br /&gt;
&lt;br /&gt;
Пусть задан связный неориентированный граф &amp;lt;math&amp;gt;G = (V, E)&amp;lt;/math&amp;gt; с весами рёбер &amp;lt;math&amp;gt;f(e)&amp;lt;/math&amp;gt;. Подграф, являющийся деревом и проходящий через все вершины&lt;br /&gt;
&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;, называется &#039;&#039;основным деревом&#039;&#039;. Остовное дерево называется &#039;&#039;минимальным&#039;&#039;, если суммарный вес его рёбер является минимальным среди всех остовных&lt;br /&gt;
деревьев.&lt;br /&gt;
&lt;br /&gt;
Постановка задачи и алгоритм её решения были впервые опубликованы в работе Отакара Борувки&amp;lt;ref name=boruvka&amp;gt;Borůvka, Otakar. “O Jistém Problému Minimálním.” Práce Moravské Přírodovědecké Společnosti Alexander Daryin, no. 3 (1926): 37–58.&amp;lt;/ref&amp;gt;. Английское название задачи – Minimum Spanning Tree (MST).&lt;br /&gt;
&lt;br /&gt;
== Варианты задачи ==&lt;br /&gt;
&lt;br /&gt;
Если исходный граф &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; несвязный, то набор минимальных остовных деревьев для всех компонент связности называется &#039;&#039;минимальным остовным лесом&#039;&#039; (Minimum&lt;br /&gt;
Spanning Forest, MSF).&lt;br /&gt;
&lt;br /&gt;
Для графа с целочисленными весами возможно использование специальных приёмов, таких как [[wikipedia:ru:Поразрядная сортировка|поразрядная сортировка]], что приводит к&lt;br /&gt;
алгоритмам, решающим задачу за линейное время.&lt;br /&gt;
&lt;br /&gt;
В распределённой задаче может присутствовать дополнительное требование, что обмен данными происходит только вдоль рёбер графа.&lt;br /&gt;
&lt;br /&gt;
== Свойства задачи ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Веса&#039;&#039;&#039;. Решение задачи зависит не от значений весов, а от их порядка. Таким образом, вместо задания весов можно задать порядок – предикат «меньше или равно» на множестве пар рёбер графа. По этой причине можно без ограничения общности считать, что все веса рёбер различны – для этого следует упорядочить рёбра вначале по весу, а затем по номеру. Кроме того, к исходным весам можно применить любую возрастающую функцию и это не приведёт к изменению решения. Как следствие, можно считать, что все веса находятся в заданном интервале, например, &amp;lt;math&amp;gt;[0, 1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Существование и единственность&#039;&#039;&#039;. Минимальный опорный лес всегда существует, а если все веса рёбер различны, то он единственный. Как уже отмечалось, всегда можно сделать веса рёбер различными. Если условие различных весов не выполняется, легко построить пример, в котором будет существовать более одного минимального остовного дерева.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Схлопывание фрагментов&#039;&#039;&#039;. Пусть &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; – фрагмент минимального остовного дерева графа &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;, а граф &amp;lt;math&amp;gt;G&#039;&amp;lt;/math&amp;gt; получен из &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; склеиванием вершин, принадлежащих&lt;br /&gt;
&amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;. Тогда объединение &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; и минимального остовного дерева графа &amp;lt;math&amp;gt;G&#039;&amp;lt;/math&amp;gt; даёт минимальное остовное дерево исходного графа &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Минимальное ребро фрагмента&#039;&#039;&#039;. Пусть &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; – фрагмент минимального остовного дерева и &amp;lt;math&amp;gt;e_F&amp;lt;/math&amp;gt; – ребро наименьшего веса, исходящее из &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; (т.е. ровно один его конец является вершиной из &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;). Если ребро &amp;lt;math&amp;gt;e_F&amp;lt;/math&amp;gt; единственно, то оно принадлежит минимальному остовному дереву. На этом свойстве основаны [[алгоритм Борувки]] и [[алгоритм Прима]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Минимальное ребро графа&#039;&#039;&#039;. Если &amp;lt;math&amp;gt;e^*&amp;lt;/math&amp;gt; – единственное ребро графа с минимальным весом, то оно принадлежит минимальному остовному дереву. На этом свойстве основан [[алгоритм Крускала]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ассоциативность по рёбрам&#039;&#039;&#039;. Пусть &amp;lt;math&amp;gt;MSF(E)&amp;lt;/math&amp;gt; – минимальный остовный лес графа с рёбрами &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt;. Тогда&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
        MSF(E_1 \cup E_2 \cup \dots \cup E_k) = MSF(MSF(E_1) \cup MSF(E_2) \cup \dots \cup MSF(E_k)).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Количество рёбер&#039;&#039;&#039; остовного леса для графа с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вершинами и &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; компонентами связности равно &amp;lt;math&amp;gt;n-c&amp;lt;/math&amp;gt;. Это свойство может использоваться для более быстрого завершения работы алгоритмов, если число компонент связности известно заранее.&lt;br /&gt;
&lt;br /&gt;
== Описание входных и выходных данных ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: взвешенный граф &amp;lt;math&amp;gt;(V, E, W)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вершин &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; рёбер &amp;lt;math&amp;gt;e_j = (v^{(1)}_{j},&lt;br /&gt;
v^{(2)}_{j})&amp;lt;/math&amp;gt; с весами &amp;lt;math&amp;gt;f_j&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;O(m + n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: список рёбер минимального остовного дерева (для несвязного графа – список минимальных остовных деревьев для всех компонент связности).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Алгоритмы решения задачи ==&lt;br /&gt;
&lt;br /&gt;
Существует три классических подхода к решению задачи:&lt;br /&gt;
* [[Алгоритм Борувки]];&amp;lt;ref name=boruvka /&amp;gt;&lt;br /&gt;
* [[Алгоритм Крускала]];&amp;lt;ref&amp;gt;Kruskal, Joseph B. “On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem.” Proceedings of the American Mathematical Society 7, no. 1 (1956): 48–48. doi:10.1090/S0002-9939-1956-0078686-7.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Алгоритм Прима]].&amp;lt;ref&amp;gt;Jarník, Vojtěch. “O Jistém Problému Minimálním (Z Dopisu Panu O. Borůvkovi).” Práce Moravské Přírodovědecké Společnosti 6, no. 4 (1930): 57–63.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Prim, R C. “Shortest Connection Networks and Some Generalizations.” Bell System Technical Journal 36, no. 6 (November 1957): 1389–1401. doi:10.1002/j.1538-7305.1957.tb01515.x.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Во всех случаях последовательная сложность алгоритма &amp;lt;math&amp;gt;O(m \ln n)&amp;lt;/math&amp;gt; при использовании обычных структур данных. (Обозначения: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; – число рёбер, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; – число вершин.)&lt;br /&gt;
&lt;br /&gt;
Все другие алгоритмы, как правило, являются вариацией на тему одного из трёх перечисленных, или их комбинацией.&lt;br /&gt;
* &#039;&#039;&#039;Алгоритм GHS&#039;&#039;&#039; (Gallager, Humblet, Spira)&amp;lt;ref&amp;gt;Gallager, Robert G, P A Humblet, and P M Spira. “A Distributed Algorithm for Minimum-Weight Spanning Trees.” ACM Transactions on Programming Languages and Systems 5, no. 1 (1983): 66–77. doi:10.1145/357195.357200.&amp;lt;/ref&amp;gt; и его последующие версии&amp;lt;ref&amp;gt;Gafni, Eli. “Improvements in the Time Complexity of Two Message-Optimal Election Algorithms,” 175–85, New York, New York, USA: ACM Press, 1985. doi:10.1145/323596.323612.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Awerbuch, B. “Optimal Distributed Algorithms for Minimum Weight Spanning Tree, Counting, Leader Election, and Related Problems,” 230–40, New York, New York, USA: ACM Press, 1987. doi:10.1145/28395.28421.&amp;lt;/ref&amp;gt; являются распределённым вариантом алгоритма Борувки. Это алгоритм обычно используется для автоматического распределённого построения остовного дерева сетью коммутаторов.&lt;br /&gt;
* &#039;&#039;&#039;Алгоритм Габова&#039;&#039;&#039; и др.&amp;lt;ref&amp;gt;Gabow, Harold N, Zvi Galil, Thomas H Spencer, and Robert Endre Tarjan. “Efficient Algorithms for Finding Minimum Spanning Trees in Undirected and Directed Graphs.” Combinatorica 6, no. 2 (June 1986): 109–22. doi:10.1007/BF02579168.&amp;lt;/ref&amp;gt; использует [[wikipedia:ru:Фибоначчиева куча|фибоначчиеву кучу]] для упорядочения рёбер в алгоритме Борувки. Сложность &amp;lt;math&amp;gt;O(m \ln \beta (m, n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Алгоритм Фредмана и Уилларда&#039;&#039;&#039;&amp;lt;ref&amp;gt;Fredman, Michael L, and Dan E Willard. “Trans-Dichotomous Algorithms for Minimum Spanning Trees and Shortest Paths.” Journal of Computer and System Sciences 48, no. 3 (June 1994): 533–51. doi:10.1016/S0022-0000(05)80064-9.&amp;lt;/ref&amp;gt; предназначен для графов с целочисленными весами и имеет линейную оценку сложности &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;. Используется алгоритм Прима в сочетании со специально разработанным алгоритмом кучи ([[wikipedia:AF-heap|AF-heap]]).&lt;br /&gt;
* &#039;&#039;&#039;Алгоритм Каргера&#039;&#039;&#039; и др.&amp;lt;ref&amp;gt;Karger, David R, Philip N Klein, and Robert Endre Tarjan. “A Randomized Linear-Time Algorithm to Find Minimum Spanning Trees.” Journal of the ACM 42, no. 2 (March 1, 1995): 321–28. doi:10.1145/201019.201022.&amp;lt;/ref&amp;gt; решает задачу &#039;&#039;в среднем&#039;&#039; за линейное время &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;. (Существование детерминированного алгоритма с линейной оценкой сложности является открытым вопросом.)&lt;br /&gt;
&lt;br /&gt;
Следует отметить, что алгоритмы, имеющие асимптотическую сложность лучшую, чем &amp;lt;math&amp;gt;O(m \ln n)&amp;lt;/math&amp;gt;, как правило, на практике работают медленнее классических алгоритмов: константа в оценке настолько велика, что выигрыш от лучшей асимптотике будет заметен только на графах очень больших размеров.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма ==&lt;br /&gt;
&lt;br /&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;
== &#039;&#039;&#039;&amp;lt;u&amp;gt;LinkButtons&amp;lt;/u&amp;gt;&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Все кнопки ниже ведут на &amp;quot;yandex.ru&amp;quot; (Просто показано их разное &amp;quot;оформление&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--В общем, просто создаем 2 строчки кнопок, на первой строчке - кнопки одинакового размера, с некоторыми разными свойствами, на второй - большие кнопки--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;{{PushButton|link = https://yandex.ru/|text = Yandex}}&amp;lt;/s&amp;gt;&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|color = yellow|weight = 900}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|decoration = underline}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|b-color = red|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|weight = 900|decoration = line-through}}&lt;br /&gt;
----&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px}} &lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px|weight = bold|decoration = underline|color = orange}}&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28670</id>
		<title>Anton121 Test Buttons</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28670"/>
		<updated>2021-11-07T13:05:11Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм поиска в ширину (BFS)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;N/A, \max O(|V|) &amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;N/A, \max O(|E|) &amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Elijah|И.В.Афанасьев]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поиск в ширину&#039;&#039;&#039; (англ. Breadth-First Search, BFS) позволяет вычислить кратчайшие расстояния (в терминах количества рёбер) от выделенной вершины ориентированного графа до всех остальных вершин, и/или построить корневое направленное дерево, расстояния в котором совпадают с расстояниями в исходном графе. Кроме того, поиск в ширину позволяет решать задачу проверки достижимости (существуют ли пути между вершиной источником и остальными вершинами графа). Впервые алгоритм поиска в ширину описан в работах Мура&amp;lt;ref&amp;gt;Moore, Edward F. “The Shortest Path Through a Maze,” International Symposium on the Theory of Switching, 285–92, 1959.&amp;lt;/ref&amp;gt; и Ли&amp;lt;ref&amp;gt;Lee, C Y. “An Algorithm for Path Connections and Its Applications.” IEEE Transactions on Electronic Computers 10, no. 3 (September 1961): 346–65. doi:10.1109/TEC.1961.5219222.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм основан на обходе вершин графа &amp;quot;по слоям&amp;quot;. На каждом шаге есть множество &amp;quot;передовых&amp;quot; вершин, для смежных к которым производится проверка, относятся ли они к еще не посещенным. Все еще не посещенные вершины добавляются в новое множество &amp;quot;передовых&amp;quot; вершин, обрабатываемых на следующем шаге. Изначально в множество &amp;quot;передовых&amp;quot; вершин входит только вершина-источник, от которой и начинается обход.&lt;br /&gt;
&lt;br /&gt;
В последовательном случае алгоритм имеет алгоритмическую сложность &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - число вершин в графе, &amp;lt;math&amp;gt;|E|&amp;lt;/math&amp;gt; - число ребер в графе.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Пусть задан граф &amp;lt;math&amp;gt;G = (V, E)&amp;lt;/math&amp;gt; без весов, и с выделенной вершиной-источником &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. Путем &amp;lt;math&amp;gt;P(u,v)&amp;lt;/math&amp;gt; между вершинами &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; называется множество ребер &amp;lt;math&amp;gt;(u, v_1), (v_1, v_2), ... (v_{n-1}, v)&amp;lt;/math&amp;gt;. Длиной пути &amp;lt;math&amp;gt;d(u,v)&amp;lt;/math&amp;gt; обозначим число ребер в данном пути между вершинами &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;. Поиск в ширину находит кратчайшие пути &amp;lt;math&amp;gt;d(u,v)&amp;lt;/math&amp;gt; от вершины &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; до всех остальных вершин графа описанным далее образом.&lt;br /&gt;
&lt;br /&gt;
В начале работы алгоритма расстояние до вершины-источника &amp;lt;math&amp;gt;d(u)=0&amp;lt;/math&amp;gt;, до остальных вершин &amp;lt;math&amp;gt;d(v) = \infty, \forall v \neq u &amp;lt;/math&amp;gt;. Также в начале работы алгоритма инициализируется множество &amp;lt;math&amp;gt;F = \{u\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Далее на каждом шаге алгоритма строится множество вершин &amp;lt;math&amp;gt;P = {w} &amp;lt;/math&amp;gt;, таких, что для &amp;lt;math&amp;gt;\forall v \in F \exists (v, w) \in E | d(w) = \infty &amp;lt;/math&amp;gt;, при этом обновляются расстояния &amp;lt;math&amp;gt;d(w)=d(v)+1&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;\forall w \in P &amp;lt;/math&amp;gt;. Затем производится переход на следующий шаг до тех пор, пока &amp;lt;math&amp;gt;P \neq \emptyset&amp;lt;/math&amp;gt;; при этом в начале каждого шага множество F заменяется на P.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительным ядром алгоритма является обход вершин, смежных с выбранной вершиной &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, с последующим добавлением еще не посещенных вершин в множество &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;. Данная операция выполняется на каждом шаге для каждой вершины &amp;lt;math&amp;gt;v \in F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм последовательно уточняет значения функции &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Структуру можно описать следующим образом:&lt;br /&gt;
&lt;br /&gt;
1.	Инициализация: всем вершинам присваивается предполагаемое расстояние &amp;lt;math&amp;gt;d(v)=\infty&amp;lt;/math&amp;gt;, кроме вершины-источника, для которой &amp;lt;math&amp;gt;d(u)=0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
2.	Помещение вершины источника &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; в множество &amp;quot;передовых&amp;quot; вершин &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.     Обход вершин множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
а) Инициализация множества &amp;lt;math&amp;gt;P=\emptyset&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
б) Для каждой вершины &amp;lt;math&amp;gt;v \in F&amp;lt;/math&amp;gt; обход всех вершин &amp;lt;math&amp;gt;w | \exists (v, w)&amp;lt;/math&amp;gt; (смежных с ней), c помещением в множество &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; таких вершин &amp;lt;math&amp;gt;w |    d(w)=\infty&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
в) Замена множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; и переход на шаг 3 в случае, если множество &amp;lt;math&amp;gt;F \neq \emptyset&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Простейшая версия алгоритма поиск в ширину может быть реализована при помощи очередей на языке C++ следующим образом.&lt;br /&gt;
Код приведен в предположении, что граф хранится в формате сжатого списка смежности: для каждой вершины в массиве vertices_to_edges_ptrs хранятся индекс начала и индекс конца списка смежных с ней вершин из массива dst_ids.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// init distances&lt;br /&gt;
for(int i = 0; i &amp;lt; vertices_count; i++)&lt;br /&gt;
    _result[i] = MAX_INT;&lt;br /&gt;
    &lt;br /&gt;
// init queue and first vertex&lt;br /&gt;
std::queue&amp;lt;int&amp;gt; vertex_queue;&lt;br /&gt;
vertex_queue.push(_source_vertex);&lt;br /&gt;
_result[_source_vertex] = 1;&lt;br /&gt;
    &lt;br /&gt;
// do bfs&lt;br /&gt;
while(vertex_queue.size() &amp;gt; 0)&lt;br /&gt;
{&lt;br /&gt;
    int cur_vertex = vertex_queue.front();&lt;br /&gt;
    vertex_queue.pop();&lt;br /&gt;
        &lt;br /&gt;
    long long first = vertices_to_edges_ptrs[cur_vertex];&lt;br /&gt;
    long long last = vertices_to_edges_ptrs[cur_vertex + 1];&lt;br /&gt;
    for(long long i = first; i &amp;lt; last; i++)&lt;br /&gt;
    {&lt;br /&gt;
        int dst_id = dst_ids[i];&lt;br /&gt;
        if(_result[dst_id] == MAX_INT)&lt;br /&gt;
        {&lt;br /&gt;
            _result[dst_id] = _result[src_id] + 1;&lt;br /&gt;
            vertex_queue.push(dst_id);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм имеет последовательную сложность &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;|E|&amp;lt;/math&amp;gt; - число вершин и ребер графа соответственно: алгоритм инициализирует начальный массив расстояний - &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt; операций, а затем обходит каждую вершину один единственный раз -  &amp;lt;math&amp;gt;O(|E|)&amp;lt;/math&amp;gt; операций. Данная оценка верна в случае, если формат хранения графа позволяет обходить вершины, смежные к выбранной (к примеру форматы списка смежности, сжатого списка смежности). При использовании других форматов оценка сложности может быть большей.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
Информационный граф классического алгоритма поиска в ширину приведен на рисунке 1.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Classical_BFS_ig.png|thumb|center|500px|Рисунок 1. Информационный граф алгоритма BFS.]]&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 используются следующие обозначения: &lt;br /&gt;
&lt;br /&gt;
[1] - добавление вершины-источника &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; к множеству &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[2] - извлечение добавленной вершины &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; из множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[3] - проверка расстояний до вершин, смежных с вершиной &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[4] - добавление еще не посещенных вершин в множество &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[5] - замена множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; на  &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; и проверка его пустоты. В случае непустого множества - переход на следующую итерацию, иначе завершение работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм имеет один важный недостаток при реализации: операция [4] требует бесконфликтной возможности добавления элементов в множество P, что, на практике, всегда будет сводиться к сериализации обращений к структуре данных, моделирующей данное множество.&lt;br /&gt;
&lt;br /&gt;
В результате часто используется модификация алгоритма (далее алгоритм-2), использующая набор независимых структур данных для каждого из параллельных процессов. Информационный граф данного подхода приведен на рисунке 2.&lt;br /&gt;
&lt;br /&gt;
[[Файл:BFS_ig_parallel_queues.png|thumb|center|500px|Рисунок 2. Информационный граф алгоритма BFS (независимые структуры данных).]]&lt;br /&gt;
&lt;br /&gt;
Обозначения для рисунка 2:&lt;br /&gt;
&lt;br /&gt;
[1] - добавление вершины-источника в множество &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[2] - разделение данных множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; между процессами&lt;br /&gt;
&lt;br /&gt;
[3] - помещение в множества &amp;lt;math&amp;gt;F_i&amp;lt;/math&amp;gt; соответствующих данных из &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; каждым процессом с номером i.&lt;br /&gt;
&lt;br /&gt;
[4] - извлечение очередной вершины из множеств &amp;lt;math&amp;gt;F_i&amp;lt;/math&amp;gt;, обход её соседей и добавление их в множество &amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt; в случае, если они еще не посещены&lt;br /&gt;
&lt;br /&gt;
[5] - попарное слияние множеств &amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt; для различных процессов, итоговое преобразование их в множество &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[6] - проверка условия выхода из цикла&lt;br /&gt;
&lt;br /&gt;
Кроме того, в случае, если реализация структур данных, моделирующих множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;, невозможна, может использоваться квадратичный по сложности алгоритм, схожий с алгоритм Беллмана-Форда. Основная идея заключается в том, что на каждом шаге производится обход всех ребер графа с обновлением текущего массива дистанций. Информационный граф данной модификации алгоритма приведен на рисунке 3.&lt;br /&gt;
&lt;br /&gt;
[[Файл:quadratic_BFS_ig.png|thumb|center|500px|Рисунок 3. Информационный граф алгоритма BFS (квадратичный подход к распараллеливанию).]]&lt;br /&gt;
&lt;br /&gt;
Обозначения для рисунка 3:&lt;br /&gt;
&lt;br /&gt;
[1] - инициализация расстояний до вершины-источника&lt;br /&gt;
&lt;br /&gt;
[2] - инициализация расстояний до остальных вершин графа&lt;br /&gt;
&lt;br /&gt;
[3] - загрузка информации об очередном ребре и обновление дистанций до соответствующих вершин. &lt;br /&gt;
&lt;br /&gt;
[4] - проверка условия выхода из цикла&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В ходе работы классический вариант алгоритма обходит граф по слоям. В каждый слой добавляются еще не посещенные вершины, достижимые из вершин предыдущего слоя. Обход вершин каждого слоя, как и их соседей, может производиться параллельно. Точно оценить число вершин в каждом слое невозможно в силу того, что их количество зависит от структуры связанности входного графа. Аналогично невозможно оценить число шагов алгоритма, за которое будут найдены все кратчайшие пути.&lt;br /&gt;
&lt;br /&gt;
Произведем оценку ширины ярусно-параллельной формы алгоритма через максимальное число вершин p в слое среди всех шагов алгоритма. Тогда число параллельных операций на данном слое будет равно сумме числа смежных вершин для каждой вершины слоя: &amp;lt;math&amp;gt;\sum_{n=1}^{p} degree(v_i)&amp;lt;/math&amp;gt;, при этом для каждого слоя данное значение будет различным. Высота ярусно-параллельной формы будет равна числу шагов в алгоритме и может быть оценена только сверху (не более &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
При квадратичном подходе к параллельной реализации алгоритма на каждом шаге выполняется &amp;lt;math&amp;gt;O(|E|)&amp;lt;/math&amp;gt; операций, которые могут быть выполнены параллельно; таким образом, ширина ЯПФ данной модификации алгоритма равна &amp;lt;math&amp;gt;O(|E|)&amp;lt;/math&amp;gt;. Число шагов алгоритма, как и в классическом случае, зависит от структуры графа и может быть оценено сверху как &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: граф &amp;lt;math&amp;gt;G(V, E)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; вершин &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;|E|&amp;lt;/math&amp;gt; рёбер &amp;lt;math&amp;gt;e_j = (v^{(1)}_{j}, v^{(2)}_{j})&amp;lt;/math&amp;gt;, вершина-источник &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039; (возможные варианты):&lt;br /&gt;
# для каждой вершины &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; исходного графа расстояние &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt;, определенное как число ребер, лежащих на кратчайшем пути от вершины &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; к &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;.&lt;br /&gt;
# для каждой вершины &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; исходного графа значение достижимости (достижима или нет) от вершины-источника &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;.&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
* Распределённый алгоритм поиска вширь является вычислительным ядром бенчмарка [http://www.graph500.org Graph500].&lt;br /&gt;
** MPI: {{Buttonlinkimp|12}}&lt;br /&gt;
* C++: [http://www.boost.org/libs/graph/doc/ Boost Graph Library] (функции &amp;lt;code&amp;gt;[http://www.boost.org/libs/graph/doc/breadth_first_search.html breadth_first_search]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[http://www.boost.org/libs/graph/doc/breadth_first_visit.html breadth_first_visit]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* C++, MPI: [http://www.boost.org/libs/graph_parallel/doc/html/index.html Parallel Boost Graph Library] (функция &amp;lt;code&amp;gt;[http://www.boost.org/libs/graph_parallel/doc/html/breadth_first_search.html breadth_first_search]&amp;lt;/code&amp;gt;).{{Buttonlinkimp|11}}&lt;br /&gt;
* Java: [http://webgraph.di.unimi.it WebGraph] (класс &amp;lt;code&amp;gt;[http://webgraph.di.unimi.it/docs/it/unimi/dsi/webgraph/algo/ParallelBreadthFirstVisit.html ParallelBreadthFirstVisit]&amp;lt;/code&amp;gt;), многопоточная реализация.&lt;br /&gt;
* Python: [https://networkx.github.io NetworkX] (функция &amp;lt;code&amp;gt;[http://networkx.github.io/documentation/networkx-1.9.1/reference/generated/networkx.algorithms.traversal.breadth_first_search.bfs_edges.html bfs_edges]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Python/C++: [https://networkit.iti.kit.edu NetworKit] (класс &amp;lt;code&amp;gt;[https://networkit.iti.kit.edu/data/uploads/docs/NetworKit-Doc/python/html/graph.html#networkit.graph.BFS networkit.graph.BFS]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* RCC for CPU {{Buttonlinkimp|9}}&lt;br /&gt;
* RCC for GPU {{Buttonlinkimp|26}}&lt;br /&gt;
* Gap {{Buttonlinkimp|36}}&lt;br /&gt;
* Litra {{Buttonlinkimp|39}}&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Статьи в работе]]&lt;br /&gt;
&lt;br /&gt;
[[En:Breadth-first search (BFS)]]&lt;br /&gt;
== &#039;&#039;&#039;&amp;lt;u&amp;gt;LinkButtons&amp;lt;/u&amp;gt;&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Все кнопки ниже ведут на &amp;quot;yandex.ru&amp;quot; (Просто показано их разное &amp;quot;оформление&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--В общем, просто создаем 2 строчки кнопок, на первой строчке - кнопки одинакового размера, с некоторыми разными свойствами, на второй - большие кнопки--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;{{PushButton|link = https://yandex.ru/|text = Yandex}}&amp;lt;/s&amp;gt;&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|color = yellow|weight = 900}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|decoration = underline}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|b-color = red|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|weight = 900|decoration = line-through}}&lt;br /&gt;
----&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px}} &lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px|weight = bold|decoration = underline|color = orange}}&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28669</id>
		<title>Anton121 Test Buttons</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28669"/>
		<updated>2021-11-07T13:00:36Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &#039;&#039;&#039;&amp;lt;u&amp;gt;LinkButtons&amp;lt;/u&amp;gt;&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Все кнопки ниже ведут на &amp;quot;yandex.ru&amp;quot; (Просто показано их разное &amp;quot;оформление&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--В общем, просто создаем 2 строчки кнопок, на первой строчке - кнопки одинакового размера, с некоторыми разными свойствами, на второй - большие кнопки--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;{{PushButton|link = https://yandex.ru/|text = Yandex}}&amp;lt;/s&amp;gt;&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|color = yellow|weight = 900}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|decoration = underline}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|b-color = red|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|weight = 900|decoration = line-through}}&lt;br /&gt;
----&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px}} &lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px|weight = bold|decoration = underline|color = orange}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Алгоритм поиска в ширину (BFS)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;N/A, \max O(|V|) &amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;N/A, \max O(|E|) &amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Elijah|И.В.Афанасьев]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поиск в ширину&#039;&#039;&#039; (англ. Breadth-First Search, BFS) позволяет вычислить кратчайшие расстояния (в терминах количества рёбер) от выделенной вершины ориентированного графа до всех остальных вершин, и/или построить корневое направленное дерево, расстояния в котором совпадают с расстояниями в исходном графе. Кроме того, поиск в ширину позволяет решать задачу проверки достижимости (существуют ли пути между вершиной источником и остальными вершинами графа). Впервые алгоритм поиска в ширину описан в работах Мура&amp;lt;ref&amp;gt;Moore, Edward F. “The Shortest Path Through a Maze,” International Symposium on the Theory of Switching, 285–92, 1959.&amp;lt;/ref&amp;gt; и Ли&amp;lt;ref&amp;gt;Lee, C Y. “An Algorithm for Path Connections and Its Applications.” IEEE Transactions on Electronic Computers 10, no. 3 (September 1961): 346–65. doi:10.1109/TEC.1961.5219222.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм основан на обходе вершин графа &amp;quot;по слоям&amp;quot;. На каждом шаге есть множество &amp;quot;передовых&amp;quot; вершин, для смежных к которым производится проверка, относятся ли они к еще не посещенным. Все еще не посещенные вершины добавляются в новое множество &amp;quot;передовых&amp;quot; вершин, обрабатываемых на следующем шаге. Изначально в множество &amp;quot;передовых&amp;quot; вершин входит только вершина-источник, от которой и начинается обход.&lt;br /&gt;
&lt;br /&gt;
В последовательном случае алгоритм имеет алгоритмическую сложность &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - число вершин в графе, &amp;lt;math&amp;gt;|E|&amp;lt;/math&amp;gt; - число ребер в графе.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Пусть задан граф &amp;lt;math&amp;gt;G = (V, E)&amp;lt;/math&amp;gt; без весов, и с выделенной вершиной-источником &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. Путем &amp;lt;math&amp;gt;P(u,v)&amp;lt;/math&amp;gt; между вершинами &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; называется множество ребер &amp;lt;math&amp;gt;(u, v_1), (v_1, v_2), ... (v_{n-1}, v)&amp;lt;/math&amp;gt;. Длиной пути &amp;lt;math&amp;gt;d(u,v)&amp;lt;/math&amp;gt; обозначим число ребер в данном пути между вершинами &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;. Поиск в ширину находит кратчайшие пути &amp;lt;math&amp;gt;d(u,v)&amp;lt;/math&amp;gt; от вершины &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; до всех остальных вершин графа описанным далее образом.&lt;br /&gt;
&lt;br /&gt;
В начале работы алгоритма расстояние до вершины-источника &amp;lt;math&amp;gt;d(u)=0&amp;lt;/math&amp;gt;, до остальных вершин &amp;lt;math&amp;gt;d(v) = \infty, \forall v \neq u &amp;lt;/math&amp;gt;. Также в начале работы алгоритма инициализируется множество &amp;lt;math&amp;gt;F = \{u\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Далее на каждом шаге алгоритма строится множество вершин &amp;lt;math&amp;gt;P = {w} &amp;lt;/math&amp;gt;, таких, что для &amp;lt;math&amp;gt;\forall v \in F \exists (v, w) \in E | d(w) = \infty &amp;lt;/math&amp;gt;, при этом обновляются расстояния &amp;lt;math&amp;gt;d(w)=d(v)+1&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;\forall w \in P &amp;lt;/math&amp;gt;. Затем производится переход на следующий шаг до тех пор, пока &amp;lt;math&amp;gt;P \neq \emptyset&amp;lt;/math&amp;gt;; при этом в начале каждого шага множество F заменяется на P.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительным ядром алгоритма является обход вершин, смежных с выбранной вершиной &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, с последующим добавлением еще не посещенных вершин в множество &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;. Данная операция выполняется на каждом шаге для каждой вершины &amp;lt;math&amp;gt;v \in F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм последовательно уточняет значения функции &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Структуру можно описать следующим образом:&lt;br /&gt;
&lt;br /&gt;
1.	Инициализация: всем вершинам присваивается предполагаемое расстояние &amp;lt;math&amp;gt;d(v)=\infty&amp;lt;/math&amp;gt;, кроме вершины-источника, для которой &amp;lt;math&amp;gt;d(u)=0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
2.	Помещение вершины источника &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; в множество &amp;quot;передовых&amp;quot; вершин &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.     Обход вершин множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
а) Инициализация множества &amp;lt;math&amp;gt;P=\emptyset&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
б) Для каждой вершины &amp;lt;math&amp;gt;v \in F&amp;lt;/math&amp;gt; обход всех вершин &amp;lt;math&amp;gt;w | \exists (v, w)&amp;lt;/math&amp;gt; (смежных с ней), c помещением в множество &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; таких вершин &amp;lt;math&amp;gt;w |    d(w)=\infty&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
в) Замена множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; и переход на шаг 3 в случае, если множество &amp;lt;math&amp;gt;F \neq \emptyset&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Простейшая версия алгоритма поиск в ширину может быть реализована при помощи очередей на языке C++ следующим образом.&lt;br /&gt;
Код приведен в предположении, что граф хранится в формате сжатого списка смежности: для каждой вершины в массиве vertices_to_edges_ptrs хранятся индекс начала и индекс конца списка смежных с ней вершин из массива dst_ids.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// init distances&lt;br /&gt;
for(int i = 0; i &amp;lt; vertices_count; i++)&lt;br /&gt;
    _result[i] = MAX_INT;&lt;br /&gt;
    &lt;br /&gt;
// init queue and first vertex&lt;br /&gt;
std::queue&amp;lt;int&amp;gt; vertex_queue;&lt;br /&gt;
vertex_queue.push(_source_vertex);&lt;br /&gt;
_result[_source_vertex] = 1;&lt;br /&gt;
    &lt;br /&gt;
// do bfs&lt;br /&gt;
while(vertex_queue.size() &amp;gt; 0)&lt;br /&gt;
{&lt;br /&gt;
    int cur_vertex = vertex_queue.front();&lt;br /&gt;
    vertex_queue.pop();&lt;br /&gt;
        &lt;br /&gt;
    long long first = vertices_to_edges_ptrs[cur_vertex];&lt;br /&gt;
    long long last = vertices_to_edges_ptrs[cur_vertex + 1];&lt;br /&gt;
    for(long long i = first; i &amp;lt; last; i++)&lt;br /&gt;
    {&lt;br /&gt;
        int dst_id = dst_ids[i];&lt;br /&gt;
        if(_result[dst_id] == MAX_INT)&lt;br /&gt;
        {&lt;br /&gt;
            _result[dst_id] = _result[src_id] + 1;&lt;br /&gt;
            vertex_queue.push(dst_id);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм имеет последовательную сложность &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;|E|&amp;lt;/math&amp;gt; - число вершин и ребер графа соответственно: алгоритм инициализирует начальный массив расстояний - &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt; операций, а затем обходит каждую вершину один единственный раз -  &amp;lt;math&amp;gt;O(|E|)&amp;lt;/math&amp;gt; операций. Данная оценка верна в случае, если формат хранения графа позволяет обходить вершины, смежные к выбранной (к примеру форматы списка смежности, сжатого списка смежности). При использовании других форматов оценка сложности может быть большей.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
Информационный граф классического алгоритма поиска в ширину приведен на рисунке 1.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Classical_BFS_ig.png|thumb|center|500px|Рисунок 1. Информационный граф алгоритма BFS.]]&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 используются следующие обозначения: &lt;br /&gt;
&lt;br /&gt;
[1] - добавление вершины-источника &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; к множеству &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[2] - извлечение добавленной вершины &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; из множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[3] - проверка расстояний до вершин, смежных с вершиной &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[4] - добавление еще не посещенных вершин в множество &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[5] - замена множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; на  &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; и проверка его пустоты. В случае непустого множества - переход на следующую итерацию, иначе завершение работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм имеет один важный недостаток при реализации: операция [4] требует бесконфликтной возможности добавления элементов в множество P, что, на практике, всегда будет сводиться к сериализации обращений к структуре данных, моделирующей данное множество.&lt;br /&gt;
&lt;br /&gt;
В результате часто используется модификация алгоритма (далее алгоритм-2), использующая набор независимых структур данных для каждого из параллельных процессов. Информационный граф данного подхода приведен на рисунке 2.&lt;br /&gt;
&lt;br /&gt;
[[Файл:BFS_ig_parallel_queues.png|thumb|center|500px|Рисунок 2. Информационный граф алгоритма BFS (независимые структуры данных).]]&lt;br /&gt;
&lt;br /&gt;
Обозначения для рисунка 2:&lt;br /&gt;
&lt;br /&gt;
[1] - добавление вершины-источника в множество &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[2] - разделение данных множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; между процессами&lt;br /&gt;
&lt;br /&gt;
[3] - помещение в множества &amp;lt;math&amp;gt;F_i&amp;lt;/math&amp;gt; соответствующих данных из &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; каждым процессом с номером i.&lt;br /&gt;
&lt;br /&gt;
[4] - извлечение очередной вершины из множеств &amp;lt;math&amp;gt;F_i&amp;lt;/math&amp;gt;, обход её соседей и добавление их в множество &amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt; в случае, если они еще не посещены&lt;br /&gt;
&lt;br /&gt;
[5] - попарное слияние множеств &amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt; для различных процессов, итоговое преобразование их в множество &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[6] - проверка условия выхода из цикла&lt;br /&gt;
&lt;br /&gt;
Кроме того, в случае, если реализация структур данных, моделирующих множества &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;, невозможна, может использоваться квадратичный по сложности алгоритм, схожий с алгоритм Беллмана-Форда. Основная идея заключается в том, что на каждом шаге производится обход всех ребер графа с обновлением текущего массива дистанций. Информационный граф данной модификации алгоритма приведен на рисунке 3.&lt;br /&gt;
&lt;br /&gt;
[[Файл:quadratic_BFS_ig.png|thumb|center|500px|Рисунок 3. Информационный граф алгоритма BFS (квадратичный подход к распараллеливанию).]]&lt;br /&gt;
&lt;br /&gt;
Обозначения для рисунка 3:&lt;br /&gt;
&lt;br /&gt;
[1] - инициализация расстояний до вершины-источника&lt;br /&gt;
&lt;br /&gt;
[2] - инициализация расстояний до остальных вершин графа&lt;br /&gt;
&lt;br /&gt;
[3] - загрузка информации об очередном ребре и обновление дистанций до соответствующих вершин. &lt;br /&gt;
&lt;br /&gt;
[4] - проверка условия выхода из цикла&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В ходе работы классический вариант алгоритма обходит граф по слоям. В каждый слой добавляются еще не посещенные вершины, достижимые из вершин предыдущего слоя. Обход вершин каждого слоя, как и их соседей, может производиться параллельно. Точно оценить число вершин в каждом слое невозможно в силу того, что их количество зависит от структуры связанности входного графа. Аналогично невозможно оценить число шагов алгоритма, за которое будут найдены все кратчайшие пути.&lt;br /&gt;
&lt;br /&gt;
Произведем оценку ширины ярусно-параллельной формы алгоритма через максимальное число вершин p в слое среди всех шагов алгоритма. Тогда число параллельных операций на данном слое будет равно сумме числа смежных вершин для каждой вершины слоя: &amp;lt;math&amp;gt;\sum_{n=1}^{p} degree(v_i)&amp;lt;/math&amp;gt;, при этом для каждого слоя данное значение будет различным. Высота ярусно-параллельной формы будет равна числу шагов в алгоритме и может быть оценена только сверху (не более &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
При квадратичном подходе к параллельной реализации алгоритма на каждом шаге выполняется &amp;lt;math&amp;gt;O(|E|)&amp;lt;/math&amp;gt; операций, которые могут быть выполнены параллельно; таким образом, ширина ЯПФ данной модификации алгоритма равна &amp;lt;math&amp;gt;O(|E|)&amp;lt;/math&amp;gt;. Число шагов алгоритма, как и в классическом случае, зависит от структуры графа и может быть оценено сверху как &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: граф &amp;lt;math&amp;gt;G(V, E)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; вершин &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;|E|&amp;lt;/math&amp;gt; рёбер &amp;lt;math&amp;gt;e_j = (v^{(1)}_{j}, v^{(2)}_{j})&amp;lt;/math&amp;gt;, вершина-источник &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;O(|V| + |E|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039; (возможные варианты):&lt;br /&gt;
# для каждой вершины &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; исходного графа расстояние &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt;, определенное как число ребер, лежащих на кратчайшем пути от вершины &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; к &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;.&lt;br /&gt;
# для каждой вершины &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; исходного графа значение достижимости (достижима или нет) от вершины-источника &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;.&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;O(|V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
* Распределённый алгоритм поиска вширь является вычислительным ядром бенчмарка [http://www.graph500.org Graph500].&lt;br /&gt;
** MPI: {{Buttonlinkimp|12}}&lt;br /&gt;
* C++: [http://www.boost.org/libs/graph/doc/ Boost Graph Library] (функции &amp;lt;code&amp;gt;[http://www.boost.org/libs/graph/doc/breadth_first_search.html breadth_first_search]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[http://www.boost.org/libs/graph/doc/breadth_first_visit.html breadth_first_visit]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* C++, MPI: [http://www.boost.org/libs/graph_parallel/doc/html/index.html Parallel Boost Graph Library] (функция &amp;lt;code&amp;gt;[http://www.boost.org/libs/graph_parallel/doc/html/breadth_first_search.html breadth_first_search]&amp;lt;/code&amp;gt;).{{Buttonlinkimp|11}}&lt;br /&gt;
* Java: [http://webgraph.di.unimi.it WebGraph] (класс &amp;lt;code&amp;gt;[http://webgraph.di.unimi.it/docs/it/unimi/dsi/webgraph/algo/ParallelBreadthFirstVisit.html ParallelBreadthFirstVisit]&amp;lt;/code&amp;gt;), многопоточная реализация.&lt;br /&gt;
* Python: [https://networkx.github.io NetworkX] (функция &amp;lt;code&amp;gt;[http://networkx.github.io/documentation/networkx-1.9.1/reference/generated/networkx.algorithms.traversal.breadth_first_search.bfs_edges.html bfs_edges]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Python/C++: [https://networkit.iti.kit.edu NetworKit] (класс &amp;lt;code&amp;gt;[https://networkit.iti.kit.edu/data/uploads/docs/NetworKit-Doc/python/html/graph.html#networkit.graph.BFS networkit.graph.BFS]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* RCC for CPU {{Buttonlinkimp|9}}&lt;br /&gt;
* RCC for GPU {{Buttonlinkimp|26}}&lt;br /&gt;
* Gap {{Buttonlinkimp|36}}&lt;br /&gt;
* Litra {{Buttonlinkimp|39}}&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Статьи в работе]]&lt;br /&gt;
&lt;br /&gt;
[[En:Breadth-first search (BFS)]]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28667</id>
		<title>Anton121 Test Buttons</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28667"/>
		<updated>2021-11-06T17:30:57Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &#039;&#039;&#039;&amp;lt;u&amp;gt;LinkButtons&amp;lt;/u&amp;gt;&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Все кнопки ниже ведут на &amp;quot;yandex.ru&amp;quot; (Просто показано их разное &amp;quot;оформление&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--В общем, просто создаем 2 строчки кнопок, на первой строчке - кнопки одинакового размера, с некоторыми разными свойствами, на второй - большие кнопки--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;{{PushButton|link = https://yandex.ru/|text = Yandex}}&amp;lt;/s&amp;gt;&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|color = yellow|weight = 900}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|decoration = underline}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|b-color = red|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|weight = 900|decoration = line-through}}&lt;br /&gt;
----&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px}} &lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px|weight = bold|decoration = underline|color = orange}}&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28666</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28666"/>
		<updated>2021-11-06T17:21:36Z</updated>

		<summary type="html">&lt;p&gt;Anton121: Полностью удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28665</id>
		<title>Anton121 Test Buttons</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Buttons&amp;diff=28665"/>
		<updated>2021-11-06T17:20:18Z</updated>

		<summary type="html">&lt;p&gt;Anton121: Новая страница: «== &amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;LinkButtons&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039; ==  Все кнопки ниже ведут на &amp;quot;yandex.ru&amp;quot; (Просто показано их разное &amp;quot;оформление&amp;quot;)...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &#039;&#039;&#039;&amp;lt;u&amp;gt;LinkButtons&amp;lt;/u&amp;gt;&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Все кнопки ниже ведут на &amp;quot;yandex.ru&amp;quot; (Просто показано их разное &amp;quot;оформление&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--В общем, просто создаем 2 строчки кнопок, на первой строчки - кнопки одинакового размера, с некоторыми разными свойства, на второй - большие кнопки--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;{{PushButton|link = https://yandex.ru/|text = Yandex}}&amp;lt;/s&amp;gt;&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|color = yellow|weight = 900}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|decoration = underline}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|b-color = red|weight = bold}}&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|style = italic|color = yellow|weight = 900|decoration = line-through}}&lt;br /&gt;
----&lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px}} &lt;br /&gt;
{{PushButton|link = https://yandex.ru/|text = Yandex|size = 100px|weight = bold|decoration = underline|color = orange}}&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushButton&amp;diff=28664</id>
		<title>Шаблон:PushButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushButton&amp;diff=28664"/>
		<updated>2021-11-06T16:25:22Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{link|https://parallel.ru/}}} &amp;lt;span style=&amp;quot;font-size:{{{size|initial}}}; color:{{{color|white}}}; &lt;br /&gt;
font-style:{{{style|initial}}}; background-color:{{{b-color|none}}}; font-weight: {{{weight|initial}}};&lt;br /&gt;
text-decoration:{{{decoration|initial}}}; text-transform:{{{trasform|initial}}}&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt; {{{text|Get Perf.Data}}} &amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushButton&amp;diff=28663</id>
		<title>Шаблон:PushButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushButton&amp;diff=28663"/>
		<updated>2021-11-06T16:03:58Z</updated>

		<summary type="html">&lt;p&gt;Anton121: Новая страница: «[{{{link|https://parallel.ru/}}} &amp;lt;span style=&amp;quot;font-size:{{{size|initial}}}; color:{{{color|white}}};  font-style:{{{style|initial}}}; background-color:{{{b-color|...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{link|https://parallel.ru/}}} &amp;lt;span style=&amp;quot;font-size:{{{size|initial}}}; color:{{{color|white}}}; &lt;br /&gt;
font-style:{{{style|initial}}}; background-color:{{{b-color|none}}}; font-weight: {{{type|initial}}};&lt;br /&gt;
text-decoration:{{{decoration|initial}}}; text-transform:{{{trasform|initial}}}&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt; {{{text|Get Perf.Data}}} &amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28662</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28662"/>
		<updated>2021-11-06T16:00:19Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{link|https://parallel.ru/}}} &amp;lt;span style=&amp;quot;font-size:{{{size|initial}}}; color:{{{color|white}}}; &lt;br /&gt;
font-style:{{{style|initial}}}; background-color:{{{b-color|none}}}; font-weight: {{{type|initial}}};&lt;br /&gt;
text-decoration:{{{decoration|initial}}}; text-transform:{{{trasform|initial}}}&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt; {{{text|Get Perf.Data}}} &amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28661</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28661"/>
		<updated>2021-11-06T15:39:12Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{link|https://parallel.ru/computers/top500.list46.html}}} &amp;lt;span style=&amp;quot;font-size:{{{2}}}; color:red; &lt;br /&gt;
font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28660</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28660"/>
		<updated>2021-11-06T15:38:04Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{1}}} &amp;lt;span style=&amp;quot;font-size:{{{2}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28659</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28659"/>
		<updated>2021-11-06T15:36:55Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [{{{1}}} &amp;lt;span style=&amp;quot;font-size:{{{2}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28658</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28658"/>
		<updated>2021-11-06T15:33:27Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{1}}} &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:{{{2}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28657</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28657"/>
		<updated>2021-11-06T15:30:41Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{1}}} &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:{{{size|10px}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28656</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28656"/>
		<updated>2021-11-06T15:25:22Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{link|https://parallel.ru/computers/top500.list46.html}}} &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:{{{size|10px}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28655</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28655"/>
		<updated>2021-11-06T15:24:03Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{1|https://parallel.ru/computers/top500.list46.html}}} &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:{{{2|10px}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28654</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28654"/>
		<updated>2021-11-06T15:04:34Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{1}}} &amp;lt;span style=&amp;quot;font-size:{{{2}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28653</id>
		<title>Шаблон:PushTheStrangeButton</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:PushTheStrangeButton&amp;diff=28653"/>
		<updated>2021-11-06T14:59:16Z</updated>

		<summary type="html">&lt;p&gt;Anton121: Новая страница: «[{{{1}}} &amp;lt;span style=&amp;quot;{{{2}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot;  class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt;...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{1}}} &amp;lt;span style=&amp;quot;{{{2}}}; color:red; font-style:italic; background-color:orange; font-weight: bold;&amp;quot; &lt;br /&gt;
class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot;&amp;gt;Go_To_Site &amp;lt;br&amp;gt; Push the button&amp;lt;/span&amp;gt;]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28600</id>
		<title>Anton121 Test Page</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28600"/>
		<updated>2021-10-07T20:11:00Z</updated>

		<summary type="html">&lt;p&gt;Anton121: /* Так, ну допустим, посмотрим, как здесь отображается текст, карл!&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;&#039;&#039;&#039;Так, ну допустим, посмотрим, как здесь отображается текст, карл!&#039;&#039;&#039;&#039;==&lt;br /&gt;
&#039;&#039;Организуем списочек, варианты входа в критическую секцию:&#039;&#039;&lt;br /&gt;
* pragma critical&lt;br /&gt;
* pragma atomic&lt;br /&gt;
* locks&lt;br /&gt;
* My knowledges have come out&lt;br /&gt;
We are gonna organise a little break and show static about Covid-19 new victims&lt;br /&gt;
[https://yandex.ru/covid19/stat?utm_source=main_graph&amp;amp;utm_source=main_notif&amp;amp;geoId=225 &amp;lt;br&amp;gt;Covid-19 statistic]&lt;br /&gt;
[[Файл:Bigstock.jpg|мини|&amp;lt;big&amp;gt;Push to make your life easier!&amp;lt;/big&amp;gt;]]&lt;br /&gt;
Снизу текста должно быть написано&amp;lt;sub&amp;gt;нижний штангенциркуль&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Сверху текста должно быть написано&amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;Верхний Луивитон&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 2019 !! 2020 !! 2021&lt;br /&gt;
|-&lt;br /&gt;
| 7,5 bil || 7,7 bil || 7,9 bil&lt;br /&gt;
|-&lt;br /&gt;
| 90% || 99% || &lt;br /&gt;
* &amp;lt;big&amp;gt;121%&amp;lt;/big&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;122%&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Открытая_энциклопедия_свойств_алгоритмов| Главная страница]]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Bigstock.jpg|Нужно больше&lt;br /&gt;
Bigstock.jpg|Кнопок&lt;br /&gt;
Bigstock.jpg|Нужно больше&lt;br /&gt;
Bigstock.jpg|Золота&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, дальше я просто скопировал код для какого-то шаблона&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2} &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp;  \beta_{k} \\&lt;br /&gt;
\end{pmatrix} = \sum_{\begin{smallmatrix} \gamma_{1} &amp;lt; \gamma_{2} &amp;lt; \cdots &amp;lt; \gamma_{k} \end{smallmatrix}} L \begin{pmatrix}&lt;br /&gt;
 \alpha_{1} &amp;amp; \alpha_{2}  &amp;amp; \cdots &amp;amp; \alpha_{k} \\&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
\end{pmatrix} U\begin{pmatrix}&lt;br /&gt;
 \gamma_{1} &amp;amp; \gamma_{2}  &amp;amp; \cdots &amp;amp; \gamma_{k} \\&lt;br /&gt;
 \beta_{1} &amp;amp; \beta_{2}  &amp;amp; \cdots &amp;amp; \beta_{k} \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Bigstock.jpg&amp;diff=28599</id>
		<title>Файл:Bigstock.jpg</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Bigstock.jpg&amp;diff=28599"/>
		<updated>2021-10-07T19:35:55Z</updated>

		<summary type="html">&lt;p&gt;Anton121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Just for my test page&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28598</id>
		<title>Anton121 Test Page</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Anton121_Test_Page&amp;diff=28598"/>
		<updated>2021-10-07T19:29:21Z</updated>

		<summary type="html">&lt;p&gt;Anton121: Новая страница: «==&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Так, ну допустим, посмотрим, как здесь отображается текст, карл!&amp;#039;&amp;#039;&amp;#039;&amp;#039;== &amp;#039;&amp;#039;Организуем списо...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;&#039;&#039;&#039;Так, ну допустим, посмотрим, как здесь отображается текст, карл!&#039;&#039;&#039;&#039;==&lt;br /&gt;
&#039;&#039;Организуем списочек, варианты входа в критическую секцию:&#039;&#039;&lt;br /&gt;
* pragma critical&lt;br /&gt;
* pragma atomic&lt;br /&gt;
* locks&lt;br /&gt;
* My knowledges have come out&lt;br /&gt;
We should organise a little break and show static about Covid-19 new victims&lt;br /&gt;
[https://yandex.ru/covid19/stat?utm_source=main_graph&amp;amp;utm_source=main_notif&amp;amp;geoId=225 Covid-19 statistic]&lt;br /&gt;
[[Файл:Example.png|мини|Какая-то Некая картинка]]&lt;/div&gt;</summary>
		<author><name>Anton121</name></author>
	</entry>
</feed>