<?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=Dobrovetskiy</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=Dobrovetskiy"/>
	<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/Dobrovetskiy"/>
	<updated>2026-10-23T03:21:26Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13589</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13589"/>
		<updated>2016-10-23T21:57:21Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&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;
[[Файл:1.5_Deltsova.png|800px|thumb|center|Схема работы реализации алгоритма CURE]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&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;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &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;
&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;
Последовательная реализация алгоритма CURE на Python/C++ представлена в пакете: [https://github.com/annoviko/pyclustering pyclustering].&lt;br /&gt;
&lt;br /&gt;
Также существует параллельная реализация алгоритма, описанная в сборнике [3].&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Guha, Sudipto; Rastogi, Rajeev; Shim, Kyuseok (2001). &amp;quot;CURE: An Efficient Clustering Algorithm for Large Databases&amp;quot;. Information Systems. 26 (1): 35–58.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming.&lt;br /&gt;
Volume 4315 of the series Lecture Notes in Computer Science pp 289-299&lt;br /&gt;
Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13585</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13585"/>
		<updated>2016-10-23T21:42:30Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&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;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&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;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &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;
&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;
Последовательная реализация алгоритма CURE на Python/C++ представлена в пакете: [https://github.com/annoviko/pyclustering pyclustering].&lt;br /&gt;
&lt;br /&gt;
Также существует параллельная реализация алгоритма, описанная в сборнике [3].&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Guha, Sudipto; Rastogi, Rajeev; Shim, Kyuseok (2001). &amp;quot;CURE: An Efficient Clustering Algorithm for Large Databases&amp;quot;. Information Systems. 26 (1): 35–58.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming.&lt;br /&gt;
Volume 4315 of the series Lecture Notes in Computer Science pp 289-299&lt;br /&gt;
Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13584</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13584"/>
		<updated>2016-10-23T21:41:21Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: /* Существующие реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&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;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&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;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &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;
&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;
Последовательная реализация алгоритма CURE на Python/C++ представлена в пакете: [https://github.com/annoviko/pyclustering pyclustering].&lt;br /&gt;
&lt;br /&gt;
Также существует параллельная реализация алгоритма, описанная в сборнике [3].&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Guha, Sudipto; Rastogi, Rajeev; Shim, Kyuseok (2001). &amp;quot;CURE: An Efficient Clustering Algorithm for Large Databases&amp;quot;. Information Systems. 26 (1): 35–58.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming.&lt;br /&gt;
Volume 4315 of the series Lecture Notes in Computer Science pp 289-299&lt;br /&gt;
Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13583</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13583"/>
		<updated>2016-10-23T21:40:19Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: /* Существующие реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&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;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&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;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &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;
&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;
Последовательная реализация CURE-алгоритма для кластеризации для Python/C++ представлена в пакете: [https://github.com/annoviko/pyclustering pyclustering].&lt;br /&gt;
&lt;br /&gt;
Также существует параллельная реализация алгоритма, описанная в сборнике [3].&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Guha, Sudipto; Rastogi, Rajeev; Shim, Kyuseok (2001). &amp;quot;CURE: An Efficient Clustering Algorithm for Large Databases&amp;quot;. Information Systems. 26 (1): 35–58.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming.&lt;br /&gt;
Volume 4315 of the series Lecture Notes in Computer Science pp 289-299&lt;br /&gt;
Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13582</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13582"/>
		<updated>2016-10-23T21:39:30Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&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;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&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;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &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;
&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;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Guha, Sudipto; Rastogi, Rajeev; Shim, Kyuseok (2001). &amp;quot;CURE: An Efficient Clustering Algorithm for Large Databases&amp;quot;. Information Systems. 26 (1): 35–58.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming.&lt;br /&gt;
Volume 4315 of the series Lecture Notes in Computer Science pp 289-299&lt;br /&gt;
Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13523</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13523"/>
		<updated>2016-10-23T16:14:55Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&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;
== Входные и выходные данные алгоритма ==&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;
== Масштабируемость алгоритма и его реализации ==&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13522</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13522"/>
		<updated>2016-10-23T16:12:58Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя. Результат: строка &amp;lt;math&amp;gt;p&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;
== Входные и выходные данные алгоритма ==&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;
== Масштабируемость алгоритма и его реализации ==&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13521</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13521"/>
		<updated>2016-10-23T16:11:57Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество.&lt;br /&gt;
&lt;br /&gt;
2)выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины.&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) Выберем произвольную точку кластера и назначим её представителем &lt;br /&gt;
&lt;br /&gt;
2) Пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек.&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя. Результат: строка &amp;lt;math&amp;gt;p&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;
== Входные и выходные данные алгоритма ==&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;
== Масштабируемость алгоритма и его реализации ==&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13520</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13520"/>
		<updated>2016-10-23T16:07:37Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;/math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество.&lt;br /&gt;
&lt;br /&gt;
2)выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины.&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
1) Выберем произвольную точку кластера и назначим её представителем &lt;br /&gt;
2) Пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек.&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя. Результат: строка &amp;lt;math&amp;gt;p&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;
== Входные и выходные данные алгоритма ==&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;
== Масштабируемость алгоритма и его реализации ==&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13519</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13519"/>
		<updated>2016-10-23T16:06:11Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;/gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;/math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество.&lt;br /&gt;
&lt;br /&gt;
2)выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины.&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
1) Выберем произвольную точку кластера и назначим её представителем &lt;br /&gt;
2) Пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек.&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя. Результат: строка &amp;lt;math&amp;gt;p&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;
== Входные и выходные данные алгоритма ==&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;
== Масштабируемость алгоритма и его реализации ==&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13028</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13028"/>
		<updated>2016-10-17T16:09:39Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&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;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&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;
 &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;
&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13027</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13027"/>
		<updated>2016-10-17T16:08:34Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Кластеризация&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Агломеративные методы&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Эта группа методов характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&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;
 &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;
&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13016</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13016"/>
		<updated>2016-10-17T15:36:55Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
Алгоритм CURE (Clustering Using REpresentatives).&lt;br /&gt;
&lt;br /&gt;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&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;
 &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;
&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13015</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13015"/>
		<updated>2016-10-17T15:36:09Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
Алгоритм CURE (Clustering Using REpresentatives).&lt;br /&gt;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер:&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
2&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&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;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&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;
 &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;
&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;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=8720</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=8720"/>
		<updated>2016-10-15T07:39:40Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&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;
&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;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=8719</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=8719"/>
		<updated>2016-10-15T07:37:49Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: Новая страница: «{{algorithm | name              = Алгоритм кластеризации с использованием представлений | serial_complexity = &amp;lt;ma…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&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;
&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;
&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;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Воеводин В.В., Воеводин Вад.В. Спасительная локальность суперкомпьютеров //Открытые системы. - 2013. - № 9. - С. 12-15.&lt;br /&gt;
&lt;br /&gt;
[3] Воеводин Вад.В., Швец П. Метод покрытий для оценки локальности использования данных в программах // Вестник УГАТУ. — 2014. — Т. 18, № 1(62). — С. 224–229.&lt;br /&gt;
&lt;br /&gt;
[4] Антонов А.С., Теплов А.М. О практической сложности понятия масштабируемости параллельных программ// Высокопроизводительные параллельные вычисления на кластерных системах (HPC 2014): Материалы XIV Международной конференции -Пермь: Издательство ПНИПУ, 2014. С. 20-27.&lt;br /&gt;
&lt;br /&gt;
[5] Никитенко Д.А. Комплексный анализ производительности суперкомпьютерных систем, основанный на данных системного мониторинга // Вычислительные методы и программирование. 2014. 15. 85–97.&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</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:Algorithm-template&amp;diff=8717</id>
		<title>Шаблон:Algorithm-template</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:Algorithm-template&amp;diff=8717"/>
		<updated>2016-10-15T07:32:14Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
=== Локальность данных и вычислений ===&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Начатые статьи]]&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</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:Algorithm-template&amp;diff=8716</id>
		<title>Шаблон:Algorithm-template</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:Algorithm-template&amp;diff=8716"/>
		<updated>2016-10-15T07:30:51Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
=== Локальность данных и вычислений ===&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Начатые статьи]]&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</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:Algorithm-template&amp;diff=8241</id>
		<title>Шаблон:Algorithm-template</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:Algorithm-template&amp;diff=8241"/>
		<updated>2016-10-14T21:21:30Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: /* Локальность реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
=== Локальность данных и вычислений ===&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Начатые статьи]]&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</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:Algorithm-template&amp;diff=8240</id>
		<title>Шаблон:Algorithm-template</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:Algorithm-template&amp;diff=8240"/>
		<updated>2016-10-14T21:21:16Z</updated>

		<summary type="html">&lt;p&gt;Dobrovetskiy: /* Локальность реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
=== Локальность данных и вычислений ===&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Начатые статьи]]&lt;/div&gt;</summary>
		<author><name>Dobrovetskiy</name></author>
	</entry>
</feed>