<?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=Aleksey+Dumbay</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=Aleksey+Dumbay"/>
	<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/Aleksey_Dumbay"/>
	<updated>2026-10-23T06:51:07Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23651</id>
		<title>Участник:Aleksey Dumbay/QuickHull</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23651"/>
		<updated>2017-10-30T10:37:04Z</updated>

		<summary type="html">&lt;p&gt;Aleksey Dumbay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Алгоритм: QuickHull для двумерного случая&lt;br /&gt;
&lt;br /&gt;
Автор статьи: [[Участник: Aleksey_Dumbay |Думбай А.Д. группа 317]]&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Построение выпуклой оболочки множества точек - задача построения минимального по вложенности выпуклого множества, содержащего все точки из исходного множества. В случае конечного числа точек на плоскости выпуклая оболочка описывается некоторым подмножеством точек, которые принадлежат этой выпуклой оболочке. В этом случае выпуклая оболочка представляет собой выпуклый многоугольник с вершинами из этого подмножества точек.&lt;br /&gt;
&lt;br /&gt;
Алгоритм QuickHull&amp;lt;ref&amp;gt;Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996). [http://dpd.cs.princeton.edu/Papers/BarberDobkinHuhdanpaa.pdf &amp;quot;The quickhull algorithm for convex hulls&amp;quot;]&amp;lt;/ref&amp;gt; - алгоритм построения выпуклой оболочки множества точек в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае, где &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; - мощность множества точек. Алгоритм использует подход, аналогичный подходу QuickSort, разделяя исходное множество на некоторые подмножества, отсекая ненужные точки, после этого применяется рекурсивно к образовавшимся подмножествам, а потом  объединяет их. В рамках этого алгоритма решаются две задачи - выделения подмножеств и объединения нескольких выпуклых оболочек вместе.&lt;br /&gt;
&lt;br /&gt;
Есть несколько различных вариантов данного алгоритма, которые по-разному находят подмножества для рекурсивного обхода. Общая их идея заключается в выделении крайних точек и отсечении всех точек, что попали в образованный ими многоугольник. Остальные точки делятся на множества и обрабатываются рекурсивно. Так же существует вариант алгоритма, в котором рекурсивно находится наиболее удаленная от отрезка вершина, отсекается образованный треугольник, а к новым сторонам и разбившемуся множеству алгоритм применяется рекурсивно.&amp;lt;ref&amp;gt;[http://algolist.manual.ru/maths/geom/convhull/quickhull.php Пример реализации такого варианта]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество точек на плоскости, на выходе - те точки, которые являются вершинами выпуклой оболочки.&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Выпуклое множество &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; для векторного пространства &amp;lt;math&amp;gt;\mathbb{V}&amp;lt;/math&amp;gt; над &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt; - такое множество, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
    \forall \textbf{x}, \textbf{y} \in A, \forall \alpha \in [0,1]: \textbf{x} \cdot \alpha + \textbf{y} \cdot (1 - \alpha) \in A&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[http://www.machinelearning.ru/wiki/images/c/cc/MO17_seminar6.pdf Выпуклое множество]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выпуклая оболочка множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; - это такое выпуклое множество, которое содержит все точки из множества &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; и при этом является минимальным по вложению. В случае &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; выпуклая оболочка является многоугольником.&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;, которое описывает набор точек на плоскости, где каждая точка - вектор &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; где компоненты соответствуют координатам на плоскости в декартовой системе координат. &amp;lt;math&amp;gt;\mathbb{X} = \{a_1, a_2, \ldots, a_N\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Алгоритм работает в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Алгоритм строит упорядоченный набор из точек &amp;lt;math&amp;gt;x_{1}, x_{2}, \ldots, x_m &amp;lt;/math&amp;gt;, которые образуют многоугольник &amp;lt;math&amp;gt;X_1X_2X_3\ldots X_m&amp;lt;/math&amp;gt;, являющийся выпуклой оболочкой множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;x_i \in A&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Aleksey Dumbay</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23650</id>
		<title>Участник:Aleksey Dumbay/QuickHull</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23650"/>
		<updated>2017-10-30T10:36:39Z</updated>

		<summary type="html">&lt;p&gt;Aleksey Dumbay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Алгоритм: QuickHull для двумерного случая&lt;br /&gt;
&lt;br /&gt;
Автор статьи: [ Участник: Aleksey_Dumbay |Думбай А.Д. группа 317]]&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Построение выпуклой оболочки множества точек - задача построения минимального по вложенности выпуклого множества, содержащего все точки из исходного множества. В случае конечного числа точек на плоскости выпуклая оболочка описывается некоторым подмножеством точек, которые принадлежат этой выпуклой оболочке. В этом случае выпуклая оболочка представляет собой выпуклый многоугольник с вершинами из этого подмножества точек.&lt;br /&gt;
&lt;br /&gt;
Алгоритм QuickHull&amp;lt;ref&amp;gt;Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996). [http://dpd.cs.princeton.edu/Papers/BarberDobkinHuhdanpaa.pdf &amp;quot;The quickhull algorithm for convex hulls&amp;quot;]&amp;lt;/ref&amp;gt; - алгоритм построения выпуклой оболочки множества точек в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае, где &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; - мощность множества точек. Алгоритм использует подход, аналогичный подходу QuickSort, разделяя исходное множество на некоторые подмножества, отсекая ненужные точки, после этого применяется рекурсивно к образовавшимся подмножествам, а потом  объединяет их. В рамках этого алгоритма решаются две задачи - выделения подмножеств и объединения нескольких выпуклых оболочек вместе.&lt;br /&gt;
&lt;br /&gt;
Есть несколько различных вариантов данного алгоритма, которые по-разному находят подмножества для рекурсивного обхода. Общая их идея заключается в выделении крайних точек и отсечении всех точек, что попали в образованный ими многоугольник. Остальные точки делятся на множества и обрабатываются рекурсивно. Так же существует вариант алгоритма, в котором рекурсивно находится наиболее удаленная от отрезка вершина, отсекается образованный треугольник, а к новым сторонам и разбившемуся множеству алгоритм применяется рекурсивно.&amp;lt;ref&amp;gt;[http://algolist.manual.ru/maths/geom/convhull/quickhull.php Пример реализации такого варианта]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество точек на плоскости, на выходе - те точки, которые являются вершинами выпуклой оболочки.&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Выпуклое множество &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; для векторного пространства &amp;lt;math&amp;gt;\mathbb{V}&amp;lt;/math&amp;gt; над &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt; - такое множество, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
    \forall \textbf{x}, \textbf{y} \in A, \forall \alpha \in [0,1]: \textbf{x} \cdot \alpha + \textbf{y} \cdot (1 - \alpha) \in A&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[http://www.machinelearning.ru/wiki/images/c/cc/MO17_seminar6.pdf Выпуклое множество]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выпуклая оболочка множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; - это такое выпуклое множество, которое содержит все точки из множества &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; и при этом является минимальным по вложению. В случае &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; выпуклая оболочка является многоугольником.&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;, которое описывает набор точек на плоскости, где каждая точка - вектор &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; где компоненты соответствуют координатам на плоскости в декартовой системе координат. &amp;lt;math&amp;gt;\mathbb{X} = \{a_1, a_2, \ldots, a_N\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Алгоритм работает в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Алгоритм строит упорядоченный набор из точек &amp;lt;math&amp;gt;x_{1}, x_{2}, \ldots, x_m &amp;lt;/math&amp;gt;, которые образуют многоугольник &amp;lt;math&amp;gt;X_1X_2X_3\ldots X_m&amp;lt;/math&amp;gt;, являющийся выпуклой оболочкой множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;x_i \in A&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Aleksey Dumbay</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23649</id>
		<title>Участник:Aleksey Dumbay/QuickHull</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23649"/>
		<updated>2017-10-30T10:35:56Z</updated>

		<summary type="html">&lt;p&gt;Aleksey Dumbay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Алгоритм: QuickHull для двумерного случая&lt;br /&gt;
&lt;br /&gt;
Автор статьи: [[Участник:Aleksey_Dumbay|Думбай А.Д. группа 317]]&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Построение выпуклой оболочки множества точек - задача построения минимального по вложенности выпуклого множества, содержащего все точки из исходного множества. В случае конечного числа точек на плоскости выпуклая оболочка описывается некоторым подмножеством точек, которые принадлежат этой выпуклой оболочке. В этом случае выпуклая оболочка представляет собой выпуклый многоугольник с вершинами из этого подмножества точек.&lt;br /&gt;
&lt;br /&gt;
Алгоритм QuickHull&amp;lt;ref&amp;gt;Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996). [http://dpd.cs.princeton.edu/Papers/BarberDobkinHuhdanpaa.pdf &amp;quot;The quickhull algorithm for convex hulls&amp;quot;]&amp;lt;/ref&amp;gt; - алгоритм построения выпуклой оболочки множества точек в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае, где &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; - мощность множества точек. Алгоритм использует подход, аналогичный подходу QuickSort, разделяя исходное множество на некоторые подмножества, отсекая ненужные точки, после этого применяется рекурсивно к образовавшимся подмножествам, а потом  объединяет их. В рамках этого алгоритма решаются две задачи - выделения подмножеств и объединения нескольких выпуклых оболочек вместе.&lt;br /&gt;
&lt;br /&gt;
Есть несколько различных вариантов данного алгоритма, которые по-разному находят подмножества для рекурсивного обхода. Общая их идея заключается в выделении крайних точек и отсечении всех точек, что попали в образованный ими многоугольник. Остальные точки делятся на множества и обрабатываются рекурсивно. Так же существует вариант алгоритма, в котором рекурсивно находится наиболее удаленная от отрезка вершина, отсекается образованный треугольник, а к новым сторонам и разбившемуся множеству алгоритм применяется рекурсивно.&amp;lt;ref&amp;gt;[http://algolist.manual.ru/maths/geom/convhull/quickhull.php Пример реализации такого варианта]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество точек на плоскости, на выходе - те точки, которые являются вершинами выпуклой оболочки.&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Выпуклое множество &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; для векторного пространства &amp;lt;math&amp;gt;\mathbb{V}&amp;lt;/math&amp;gt; над &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt; - такое множество, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
    \forall \textbf{x}, \textbf{y} \in A, \forall \alpha \in [0,1]: \textbf{x} \cdot \alpha + \textbf{y} \cdot (1 - \alpha) \in A&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[http://www.machinelearning.ru/wiki/images/c/cc/MO17_seminar6.pdf Выпуклое множество]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выпуклая оболочка множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; - это такое выпуклое множество, которое содержит все точки из множества &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; и при этом является минимальным по вложению. В случае &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; выпуклая оболочка является многоугольником.&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;, которое описывает набор точек на плоскости, где каждая точка - вектор &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; где компоненты соответствуют координатам на плоскости в декартовой системе координат. &amp;lt;math&amp;gt;\mathbb{X} = \{a_1, a_2, \ldots, a_N\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Алгоритм работает в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Алгоритм строит упорядоченный набор из точек &amp;lt;math&amp;gt;x_{1}, x_{2}, \ldots, x_m &amp;lt;/math&amp;gt;, которые образуют многоугольник &amp;lt;math&amp;gt;X_1X_2X_3\ldots X_m&amp;lt;/math&amp;gt;, являющийся выпуклой оболочкой множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;x_i \in A&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Aleksey Dumbay</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23648</id>
		<title>Участник:Aleksey Dumbay/QuickHull</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23648"/>
		<updated>2017-10-30T10:35:48Z</updated>

		<summary type="html">&lt;p&gt;Aleksey Dumbay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Алгоритм: QuickHull для двумерного случая&lt;br /&gt;
Автор статьи: [[Участник:Aleksey_Dumbay|Думбай А.Д. группа 317]]&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Построение выпуклой оболочки множества точек - задача построения минимального по вложенности выпуклого множества, содержащего все точки из исходного множества. В случае конечного числа точек на плоскости выпуклая оболочка описывается некоторым подмножеством точек, которые принадлежат этой выпуклой оболочке. В этом случае выпуклая оболочка представляет собой выпуклый многоугольник с вершинами из этого подмножества точек.&lt;br /&gt;
&lt;br /&gt;
Алгоритм QuickHull&amp;lt;ref&amp;gt;Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996). [http://dpd.cs.princeton.edu/Papers/BarberDobkinHuhdanpaa.pdf &amp;quot;The quickhull algorithm for convex hulls&amp;quot;]&amp;lt;/ref&amp;gt; - алгоритм построения выпуклой оболочки множества точек в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае, где &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; - мощность множества точек. Алгоритм использует подход, аналогичный подходу QuickSort, разделяя исходное множество на некоторые подмножества, отсекая ненужные точки, после этого применяется рекурсивно к образовавшимся подмножествам, а потом  объединяет их. В рамках этого алгоритма решаются две задачи - выделения подмножеств и объединения нескольких выпуклых оболочек вместе.&lt;br /&gt;
&lt;br /&gt;
Есть несколько различных вариантов данного алгоритма, которые по-разному находят подмножества для рекурсивного обхода. Общая их идея заключается в выделении крайних точек и отсечении всех точек, что попали в образованный ими многоугольник. Остальные точки делятся на множества и обрабатываются рекурсивно. Так же существует вариант алгоритма, в котором рекурсивно находится наиболее удаленная от отрезка вершина, отсекается образованный треугольник, а к новым сторонам и разбившемуся множеству алгоритм применяется рекурсивно.&amp;lt;ref&amp;gt;[http://algolist.manual.ru/maths/geom/convhull/quickhull.php Пример реализации такого варианта]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество точек на плоскости, на выходе - те точки, которые являются вершинами выпуклой оболочки.&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Выпуклое множество &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; для векторного пространства &amp;lt;math&amp;gt;\mathbb{V}&amp;lt;/math&amp;gt; над &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt; - такое множество, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
    \forall \textbf{x}, \textbf{y} \in A, \forall \alpha \in [0,1]: \textbf{x} \cdot \alpha + \textbf{y} \cdot (1 - \alpha) \in A&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[http://www.machinelearning.ru/wiki/images/c/cc/MO17_seminar6.pdf Выпуклое множество]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выпуклая оболочка множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; - это такое выпуклое множество, которое содержит все точки из множества &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; и при этом является минимальным по вложению. В случае &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; выпуклая оболочка является многоугольником.&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;, которое описывает набор точек на плоскости, где каждая точка - вектор &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; где компоненты соответствуют координатам на плоскости в декартовой системе координат. &amp;lt;math&amp;gt;\mathbb{X} = \{a_1, a_2, \ldots, a_N\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Алгоритм работает в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Алгоритм строит упорядоченный набор из точек &amp;lt;math&amp;gt;x_{1}, x_{2}, \ldots, x_m &amp;lt;/math&amp;gt;, которые образуют многоугольник &amp;lt;math&amp;gt;X_1X_2X_3\ldots X_m&amp;lt;/math&amp;gt;, являющийся выпуклой оболочкой множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;x_i \in A&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Aleksey Dumbay</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23647</id>
		<title>Участник:Aleksey Dumbay/QuickHull</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23647"/>
		<updated>2017-10-30T10:35:09Z</updated>

		<summary type="html">&lt;p&gt;Aleksey Dumbay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = QuickHull&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Автор статьи: [[Участник:Aleksey Dumbay|Думбай А.Д. группа 317]]&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Построение выпуклой оболочки множества точек - задача построения минимального по вложенности выпуклого множества, содержащего все точки из исходного множества. В случае конечного числа точек на плоскости выпуклая оболочка описывается некоторым подмножеством точек, которые принадлежат этой выпуклой оболочке. В этом случае выпуклая оболочка представляет собой выпуклый многоугольник с вершинами из этого подмножества точек.&lt;br /&gt;
&lt;br /&gt;
Алгоритм QuickHull&amp;lt;ref&amp;gt;Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996). [http://dpd.cs.princeton.edu/Papers/BarberDobkinHuhdanpaa.pdf &amp;quot;The quickhull algorithm for convex hulls&amp;quot;]&amp;lt;/ref&amp;gt; - алгоритм построения выпуклой оболочки множества точек в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае, где &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; - мощность множества точек. Алгоритм использует подход, аналогичный подходу QuickSort, разделяя исходное множество на некоторые подмножества, отсекая ненужные точки, после этого применяется рекурсивно к образовавшимся подмножествам, а потом  объединяет их. В рамках этого алгоритма решаются две задачи - выделения подмножеств и объединения нескольких выпуклых оболочек вместе.&lt;br /&gt;
&lt;br /&gt;
Есть несколько различных вариантов данного алгоритма, которые по-разному находят подмножества для рекурсивного обхода. Общая их идея заключается в выделении крайних точек и отсечении всех точек, что попали в образованный ими многоугольник. Остальные точки делятся на множества и обрабатываются рекурсивно. Так же существует вариант алгоритма, в котором рекурсивно находится наиболее удаленная от отрезка вершина, отсекается образованный треугольник, а к новым сторонам и разбившемуся множеству алгоритм применяется рекурсивно.&amp;lt;ref&amp;gt;[http://algolist.manual.ru/maths/geom/convhull/quickhull.php Пример реализации такого варианта]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество точек на плоскости, на выходе - те точки, которые являются вершинами выпуклой оболочки.&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Выпуклое множество &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; для векторного пространства &amp;lt;math&amp;gt;\mathbb{V}&amp;lt;/math&amp;gt; над &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt; - такое множество, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
    \forall \textbf{x}, \textbf{y} \in A, \forall \alpha \in [0,1]: \textbf{x} \cdot \alpha + \textbf{y} \cdot (1 - \alpha) \in A&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[http://www.machinelearning.ru/wiki/images/c/cc/MO17_seminar6.pdf Выпуклое множество]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выпуклая оболочка множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; - это такое выпуклое множество, которое содержит все точки из множества &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; и при этом является минимальным по вложению. В случае &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; выпуклая оболочка является многоугольником.&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;, которое описывает набор точек на плоскости, где каждая точка - вектор &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; где компоненты соответствуют координатам на плоскости в декартовой системе координат. &amp;lt;math&amp;gt;\mathbb{X} = \{a_1, a_2, \ldots, a_N\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Алгоритм работает в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Алгоритм строит упорядоченный набор из точек &amp;lt;math&amp;gt;x_{1}, x_{2}, \ldots, x_m &amp;lt;/math&amp;gt;, которые образуют многоугольник &amp;lt;math&amp;gt;X_1X_2X_3\ldots X_m&amp;lt;/math&amp;gt;, являющийся выпуклой оболочкой множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;x_i \in A&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Aleksey Dumbay</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23411</id>
		<title>Участник:Aleksey Dumbay/QuickHull</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23411"/>
		<updated>2017-10-23T19:06:09Z</updated>

		<summary type="html">&lt;p&gt;Aleksey Dumbay: Правки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Построение выпуклой оболочки множества точек - задача построения минимального по вложенности выпуклого множества, содержащего все точки из исходного множества. В случае конечного числа точек на плоскости выпуклая оболочка описывается некоторым подмножеством точек, которые принадлежат этой выпуклой оболочке. В этом случае выпуклая оболочка представляет собой выпуклый многоугольник с вершинами из этого подмножества точек.&lt;br /&gt;
&lt;br /&gt;
Алгоритм QuickHull&amp;lt;ref&amp;gt;Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996). [http://dpd.cs.princeton.edu/Papers/BarberDobkinHuhdanpaa.pdf &amp;quot;The quickhull algorithm for convex hulls&amp;quot;]&amp;lt;/ref&amp;gt; - алгоритм построения выпуклой оболочки множества точек в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае, где &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; - мощность множества точек. Алгоритм использует подход, аналогичный подходу QuickSort, разделяя исходное множество на некоторые подмножества, отсекая ненужные точки, после этого применяется рекурсивно к образовавшимся подмножествам, а потом  объединяет их. В рамках этого алгоритма решаются две задачи - выделения подмножеств и объединения нескольких выпуклых оболочек вместе.&lt;br /&gt;
&lt;br /&gt;
Есть несколько различных вариантов данного алгоритма, которые по-разному находят подмножества для рекурсивного обхода. Общая их идея заключается в выделении крайних точек и отсечении всех точек, что попали в образованный ими многоугольник. Остальные точки делятся на множества и обрабатываются рекурсивно. Так же существует вариант алгоритма, в котором рекурсивно находится наиболее удаленная от отрезка вершина, отсекается образованный треугольник, а к новым сторонам и разбившемуся множеству алгоритм применяется рекурсивно.&amp;lt;ref&amp;gt;[http://algolist.manual.ru/maths/geom/convhull/quickhull.php Пример реализации такого варианта]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество точек на плоскости, на выходе - те точки, которые являются вершинами выпуклой оболочки.&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Выпуклое множество &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; для векторного пространства &amp;lt;math&amp;gt;\mathbb{V}&amp;lt;/math&amp;gt; над &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt; - такое множество, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
    \forall \textbf{x}, \textbf{y} \in A, \forall \alpha \in [0,1]: \textbf{x} \cdot \alpha + \textbf{y} \cdot (1 - \alpha) \in A&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[http://www.machinelearning.ru/wiki/images/c/cc/MO17_seminar6.pdf Выпуклое множество]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выпуклая оболочка множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; - это такое выпуклое множество, которое содержит все точки из множества &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; и при этом является минимальным по вложению. В случае &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; выпуклая оболочка является многоугольником.&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;, которое описывает набор точек на плоскости, где каждая точка - вектор &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; где компоненты соответствуют координатам на плоскости в декартовой системе координат. &amp;lt;math&amp;gt;\mathbb{X} = \{a_1, a_2, \ldots, a_N\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Алгоритм работает в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Алгоритм строит упорядоченный набор из точек &amp;lt;math&amp;gt;x_{1}, x_{2}, \ldots, x_m &amp;lt;/math&amp;gt;, которые образуют многоугольник &amp;lt;math&amp;gt;X_1X_2X_3\ldots X_m&amp;lt;/math&amp;gt;, являющийся выпуклой оболочкой множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;x_i \in A&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Aleksey Dumbay</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23410</id>
		<title>Участник:Aleksey Dumbay/QuickHull</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Aleksey_Dumbay/QuickHull&amp;diff=23410"/>
		<updated>2017-10-23T19:04:54Z</updated>

		<summary type="html">&lt;p&gt;Aleksey Dumbay: Новая страница: « = Свойства и структура алгоритма = == Общее описание алгоритма == Построение выпуклой обол…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Построение выпуклой оболочки множества точек - задача построения минимального по вложенности выпуклого множества, содержащего все точки из исходного множества. В случае конечного числа точек на плоскости выпуклая оболочка описывается некоторым подмножеством точек, которые принадлежат этой выпуклой оболочке. В этом случае выпуклая оболочка представляет собой выпуклый многоугольник с вершинами из этого подмножества точек.&lt;br /&gt;
&lt;br /&gt;
Алгоритм QuickHull&amp;lt;ref&amp;gt;Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996). [http://dpd.cs.princeton.edu/Papers/BarberDobkinHuhdanpaa.pdf &amp;quot;The quickhull algorithm for convex hulls&amp;quot;]&amp;lt;/ref&amp;gt; - алгоритм построения выпуклой оболочки множества точек в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае, где &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; - мощность множества точек. Алгоритм использует подход, аналогичный подходу QuickSort, разделяя исходное множество на некоторые подмножества, отсекая ненужные точки, после этого применяется рекурсивно к образовавшимся подмножествам, а потом  объединяет их. В рамках этого алгоритма решаются две задачи - выделения подмножеств и объединения нескольких выпуклых оболочек вместе.&lt;br /&gt;
&lt;br /&gt;
Есть несколько различных вариантов данного алгоритма, которые по-разному находят подмножества для рекурсивного обхода. Общая их идея заключается в выделении крайних точек и отсечении всех точек, что попали в образовываемый ими многоугольник. Остальные точки делятся на множества и обрабатываются рекурсивно. Так же существует вариант алгоритма, в котором рекурсивно находится наиболее удаленная от отрезка вершина, отсекается образованный треугольник, а к новым сторонам и разбившемуся множеству алгоритм применяется рекурсивно.&amp;lt;ref&amp;gt;[http://algolist.manual.ru/maths/geom/convhull/quickhull.php Пример реализации такого варианта]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество точек на плоскости, на выходе - те точки, которые являются вершинами выпуклой оболочки.&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Выпуклое множество &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; для векторного пространства &amp;lt;math&amp;gt;\mathbb{V}&amp;lt;/math&amp;gt; над &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt; - такое множество, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
    \forall \textbf{x}, \textbf{y} \in A, \forall \alpha \in [0,1]: \textbf{x} \cdot \alpha + \textbf{y} \cdot (1 - \alpha) \in A&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[http://www.machinelearning.ru/wiki/images/c/cc/MO17_seminar6.pdf Выпуклое множество]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выпуклая оболочка множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; - это такое выпуклое множество, которое содержит все точки из множества &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; и при этом является минимальным по вложению. В случае &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; выпуклая оболочка является многоугольником.&lt;br /&gt;
&lt;br /&gt;
На вход алгоритму подается множество &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;, которое описывает набор точек на плоскости, где каждая точка - вектор &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; где компоненты соответствуют координатам на плоскости в декартовой системе координат. &amp;lt;math&amp;gt;\mathbb{X} = \{a_1, a_2, \ldots, a_N\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Алгоритм работает в среднем за &amp;lt;math&amp;gt;\Theta(N*\log{N})&amp;lt;/math&amp;gt; и за &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Алгоритм строит упорядоченный набор из точек &amp;lt;math&amp;gt;x_{1}, x_{2}, \ldots, x_m &amp;lt;/math&amp;gt;, которые образуют многоугольник &amp;lt;math&amp;gt;X_1X_2X_3\ldots X_m&amp;lt;/math&amp;gt;, являющийся выпуклой оболочкой множества точек &amp;lt;math&amp;gt;\mathbb{X}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;x_i \in A&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;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Aleksey Dumbay</name></author>
	</entry>
</feed>