<?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=Zhu.a-v</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=Zhu.a-v"/>
	<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/Zhu.a-v"/>
	<updated>2026-10-22T20:10:08Z</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23455</id>
		<title>Участник:Zhu.a-v/Алгоритм Киркпатрика</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23455"/>
		<updated>2017-10-23T20:40:33Z</updated>

		<summary type="html">&lt;p&gt;Zhu.a-v: /* Свойства и структура алгоритма */&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;
Выпуклой оболочкой множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; называется наименьшее выпуклое множество, содержащее множество &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Справедлива следующая интерпретация выпуклой оболочки: если вбить в деревянную доску несколько гвоздей, забивая их только до середины ножки, затем накинуть вокруг них петлю веревки и затянуть, веревка опишет выпуклую оболочку для множества точек-гвоздей.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Киркпатрика решает [[Построение выпуклой оболочки набора точек|задачу построения выпуклой оболочки набора точек]] методом &amp;quot;разделяй и властвуй&amp;quot; &amp;lt;ref&amp;gt;Kirkpatrick, David G.; Seidel, Raimund (1986). &amp;quot;The ultimate planar convex hull algorithm&amp;quot;. SIAM Journal on Computing. 15 (1): 287–299.&amp;lt;/ref&amp;gt;. Для этого множество разделяется некоторой прямой на два подмножества, для этих подмножеств рекурсивно запускается алгоритм поиска выпуклой оболочки, затем полученные выпуклые оболочки специальным образом &amp;quot;сшивают&amp;quot; в одну общую выпуклую оболочку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Математическое описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Входные данные: множество точек &amp;lt;math&amp;gt; X = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ясно, что выпуклая оболочка множества точек на плоскости &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; --- это выпуклый многоугольник, вершины которого содержатся в &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;, и все остальные элементы &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; лежат внутри этого многоугольника. Значит, задача поиска выпуклой оболочки &amp;lt;math&amp;gt; conv(X) &amp;lt;/math&amp;gt; сводится к выбору такого набора вершин &amp;lt;math&amp;gt; (x_{i_1},y_{i_1}),(x_{i_2},y_{i_2}),...,(x_{i_n},y_{i_n}) &amp;lt;/math&amp;gt; , которые образуют выпуклый многоугольник, содержащий все точки множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множество точек &amp;lt;math&amp;gt; conv(X) &amp;lt;/math&amp;gt; --- вершины выпуклой оболочки для множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Применим рекурсивный подход &amp;quot;разделяй и властвуй&amp;quot; для решения поставленной задачи: &lt;br /&gt;
&lt;br /&gt;
1. Если множество состоит из 1 элемента, его выпуклая оболочка совпадает с самим множеством. Иначе шаг 2.&lt;br /&gt;
&lt;br /&gt;
2. Проведем на плоскости прямую, разделяющую множество на два примерно одинаковых подмножества &amp;lt;math&amp;gt; X_l &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; X_r &amp;lt;/math&amp;gt;. Выберем для этого вертикальную линию, являющуюся медианой абцисс точек множества, для которого на текущем шаге строится выпуклая оболочка. Для каждого из полученных подмножеств найдем выпуклую оболочку. Перейдем на шаг 3.&lt;br /&gt;
&lt;br /&gt;
3. Построим &amp;lt;math&amp;gt; conv(X) &amp;lt;/math&amp;gt; по &amp;lt;math&amp;gt; conv(X_l) &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; conv(X_r) &amp;lt;/math&amp;gt;, построенным на предыдущем шаге. Поскольку множества &amp;lt;math&amp;gt; X_l &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; X_r &amp;lt;/math&amp;gt; разделены вертикальной линией, их &lt;br /&gt;
выпуклые оболочки представляют собой непересекающиеся выпуклые многоугольники. Следовательно, для построения общей выпуклой &lt;br /&gt;
оболочки этих многоугольников достаточно найти их общие касательные - верхнюю и нижнюю, а затем отбросить правую цепочку в &lt;br /&gt;
многоугольнике &amp;lt;math&amp;gt; conv(X_l) &amp;lt;/math&amp;gt; и левую цепочку в многоугольнике &amp;lt;math&amp;gt; conv(X_r) &amp;lt;/math&amp;gt;. &lt;br /&gt;
Пусть левый и правый многоугольники представлены списками вершин &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Поиск общей касательной начнем с мостика &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;, соединяющего самую правую вершину &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; с самой левой вершиной &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Далее будем последовательно перемещать эти вершины вдоль границ выпуклых &lt;br /&gt;
многоугольников против часовой стрелки в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и по часовой стрелке в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt; до тех пор, пока существуют вершины, лежащие слева от вектора &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;. Таким образом мы найдем общую верхнюю касательную. Аналогично, вычислим нижнюю касательную. Но перемещение теперь осуществляется по часовой стрелке в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и против часовой стрелки в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Поиск нижней касательной завершается, когда мостик окажется в положении, при котором не существует вершин, лежащих справа от вектора &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;. &amp;lt;ref&amp;gt;Местецкий Л.М. Лекции по вычислительной геометрии. Учебное пособие. ВМК МГУ, 2013.&amp;lt;/ref&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;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhu.a-v</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23454</id>
		<title>Участник:Zhu.a-v/Алгоритм Киркпатрика</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23454"/>
		<updated>2017-10-23T20:37:51Z</updated>

		<summary type="html">&lt;p&gt;Zhu.a-v: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор статьи: Журавская Александра&lt;br /&gt;
&lt;br /&gt;
=Свойства и структура алгоритма=&lt;br /&gt;
&lt;br /&gt;
Алгоритм Киркпатрика решает [[Построение выпуклой оболочки набора точек|задачу построения выпуклой оболочки набора точек]] методом &amp;quot;разделяй и властвуй&amp;quot; &amp;lt;ref&amp;gt;Kirkpatrick, David G.; Seidel, Raimund (1986). &amp;quot;The ultimate planar convex hull algorithm&amp;quot;. SIAM Journal on Computing. 15 (1): 287–299.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Общее описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Выпуклой оболочкой множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; называется наименьшее выпуклое множество, содержащее множество &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Справедлива следующая интерпретация выпуклой оболочки: если вбить в деревянную доску несколько гвоздей, забивая их только до середины ножки, затем накинуть вокруг них петлю веревки и затянуть, веревка опишет выпуклую оболочку для множества точек-гвоздей.&lt;br /&gt;
&lt;br /&gt;
==Математическое описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Входные данные: множество точек &amp;lt;math&amp;gt; X = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ясно, что выпуклая оболочка множества точек на плоскости &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; --- это выпуклый многоугольник, вершины которого содержатся в &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;, и все остальные элементы &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; лежат внутри этого многоугольника. Значит, задача поиска выпуклой оболочки &amp;lt;math&amp;gt; conv(X) &amp;lt;/math&amp;gt; сводится к выбору такого набора вершин &amp;lt;math&amp;gt; (x_{i_1},y_{i_1}),(x_{i_2},y_{i_2}),...,(x_{i_n},y_{i_n}) &amp;lt;/math&amp;gt; , которые образуют выпуклый многоугольник, содержащий все точки множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множество точек &amp;lt;math&amp;gt; conv(X) &amp;lt;/math&amp;gt; --- вершины выпуклой оболочки для множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Применим рекурсивный подход &amp;quot;разделяй и властвуй&amp;quot; для решения поставленной задачи: &lt;br /&gt;
&lt;br /&gt;
1. Если множество состоит из 1 элемента, его выпуклая оболочка совпадает с самим множеством. Иначе шаг 2.&lt;br /&gt;
&lt;br /&gt;
2. Проведем на плоскости прямую, разделяющую множество на два примерно одинаковых подмножества &amp;lt;math&amp;gt; X_l &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; X_r &amp;lt;/math&amp;gt;. Выберем для этого вертикальную линию, являющуюся медианой абцисс точек множества, для которого на текущем шаге строится выпуклая оболочка. Для каждого из полученных подмножеств найдем выпуклую оболочку. Перейдем на шаг 3.&lt;br /&gt;
&lt;br /&gt;
3. Построим &amp;lt;math&amp;gt; conv(X) &amp;lt;/math&amp;gt; по &amp;lt;math&amp;gt; conv(X_l) &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; conv(X_r) &amp;lt;/math&amp;gt;, построенным на предыдущем шаге. Поскольку множества &amp;lt;math&amp;gt; X_l &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; X_r &amp;lt;/math&amp;gt; разделены вертикальной линией, их &lt;br /&gt;
выпуклые оболочки представляют собой непересекающиеся выпуклые многоугольники. Следовательно, для построения общей выпуклой &lt;br /&gt;
оболочки этих многоугольников достаточно найти их общие касательные - верхнюю и нижнюю, а затем отбросить правую цепочку в &lt;br /&gt;
многоугольнике &amp;lt;math&amp;gt; conv(X_l) &amp;lt;/math&amp;gt; и левую цепочку в многоугольнике &amp;lt;math&amp;gt; conv(X_r) &amp;lt;/math&amp;gt;. &lt;br /&gt;
Пусть левый и правый многоугольники представлены списками вершин &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Поиск общей касательной начнем с мостика &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;, соединяющего самую правую вершину &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; с самой левой вершиной &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Далее будем последовательно перемещать эти вершины вдоль границ выпуклых &lt;br /&gt;
многоугольников против часовой стрелки в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и по часовой стрелке в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt; до тех пор, пока существуют вершины, лежащие слева от вектора &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;. Таким образом мы найдем общую верхнюю касательную. Аналогично, вычислим нижнюю касательную. Но перемещение теперь осуществляется по часовой стрелке в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и против часовой стрелки в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Поиск нижней касательной завершается, когда мостик окажется в положении, при котором не существует вершин, лежащих справа от вектора &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;. &amp;lt;ref&amp;gt;Местецкий Л.М. Лекции по вычислительной геометрии. Учебное пособие. ВМК МГУ, 2013.&amp;lt;/ref&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;/div&gt;</summary>
		<author><name>Zhu.a-v</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23451</id>
		<title>Участник:Zhu.a-v/Алгоритм Киркпатрика</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23451"/>
		<updated>2017-10-23T20:34:13Z</updated>

		<summary type="html">&lt;p&gt;Zhu.a-v: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор статьи: Журавская Александра&lt;br /&gt;
&lt;br /&gt;
=Свойства и структура алгоритма=&lt;br /&gt;
&lt;br /&gt;
Алгоритм Киркпатрика решает [[Построение выпуклой оболочки набора точек|задачу построения выпуклой оболочки набора точек]] методом &amp;quot;разделяй и властвуй&amp;quot; &amp;lt;ref&amp;gt;Kirkpatrick, David G.; Seidel, Raimund (1986). &amp;quot;The ultimate planar convex hull algorithm&amp;quot;. SIAM Journal on Computing. 15 (1): 287–299.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Общее описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Выпуклой оболочкой множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; называется наименьшее выпуклое множество, содержащее множество &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Справедлива следующая интерпретация выпуклой оболочки: если вбить в деревянную доску несколько гвоздей, забивая их только до середины ножки, затем накинуть вокруг них петлю веревки и затянуть, веревка опишет выпуклую оболочку для множества точек-гвоздей.&lt;br /&gt;
&lt;br /&gt;
==Математическое описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Входные данные: множество точек &amp;lt;math&amp;gt; X = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ясно, что выпуклая оболочка множества точек на плоскости &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; --- это выпуклый многоугольник, вершины которого содержатся в &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;, и все остальные элементы &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; лежат внутри этого многоугольника. Значит, задача поиска выпуклой оболочки &amp;lt;math&amp;gt; conv X &amp;lt;/math&amp;gt; сводится к выбору такого набора вершин &amp;lt;math&amp;gt; (x_{i_1},y_{i_1}),(x_{i_2},y_{i_2}),...,(x_{i_n},y_{i_n}) &amp;lt;/math&amp;gt; , которые образуют выпуклый многоугольник, содержащий все точки множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множество точек &amp;lt;math&amp;gt; conv X &amp;lt;/math&amp;gt; --- вершины выпуклой оболочки для множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Применим рекурсивный подход &amp;quot;разделяй и властвуй&amp;quot; для решения поставленной задачи: &lt;br /&gt;
&lt;br /&gt;
1. Если множество состоит из 1 элемента, его выпуклая оболочка совпадает с самим множеством. Иначе шаг 2.&lt;br /&gt;
&lt;br /&gt;
2. Проведем на плоскости прямую, разделяющую множество на два примерно одинаковых подмножества &amp;lt;math&amp;gt; X_l &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; X_r &amp;lt;/math&amp;gt;. Выберем для этого следующую прямую: &amp;lt;math&amp;gt; x = \frac{\sum_{(a,b) \in T} a}{|T|} &amp;lt;/math&amp;gt; --- это вертикальная линия, медиана абцисс точек множества, для которого на текущем шаге строится выпуклая оболочка. Для каждого из полученных подмножеств найдем выпуклую оболочку. Перейдем на шаг 3.&lt;br /&gt;
&lt;br /&gt;
3. Построим &amp;lt;math&amp;gt; conv(X) &amp;lt;/math&amp;gt; по &amp;lt;math&amp;gt; conv(X_l) &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; conv(X_r) &amp;lt;/math&amp;gt;, построенным на предыдущем шаге. Поскольку множества &amp;lt;math&amp;gt; X_l &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; X_r &amp;lt;/math&amp;gt; разделены вертикальной линией, их &lt;br /&gt;
выпуклые оболочки представляют собой непересекающиеся выпуклые многоугольники. Следовательно, для построения общей выпуклой &lt;br /&gt;
оболочки этих многоугольников достаточно найти их общие касательные - верхнюю и нижнюю, а затем отбросить правую цепочку в &lt;br /&gt;
многоугольнике &amp;lt;math&amp;gt; conv(X_l) &amp;lt;/math&amp;gt; и левую цепочку в многоугольнике &amp;lt;math&amp;gt; conv(X_r) &amp;lt;/math&amp;gt;. &lt;br /&gt;
Пусть левый и правый многоугольники представлены списками вершин &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Поиск общей касательной начнем с мостика &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;, соединяющего самую правую вершину &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; с самой левой вершиной &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Далее будем последовательно перемещать эти вершины вдоль границ выпуклых &lt;br /&gt;
многоугольников против часовой стрелки в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и по часовой стрелке в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt; до тех пор, пока существуют вершины, лежащие слева от вектора &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;. Таким образом мы найдем общую верхнюю касательную. Аналогично, вычислим нижнюю касательную. Но перемещение теперь осуществляется по часовой стрелке в &amp;lt;math&amp;gt; P_l &amp;lt;/math&amp;gt; и против часовой стрелки в &amp;lt;math&amp;gt; P_r &amp;lt;/math&amp;gt;. Поиск нижней касательной завершается, когда мостик окажется в положении, при котором не существует вершин, лежащих справа от вектора &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt;. &amp;lt;ref&amp;gt;Местецкий Л.М. Лекции по вычислительной геометрии. Учебное пособие. ВМК МГУ, 2013.&amp;lt;/ref&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;/div&gt;</summary>
		<author><name>Zhu.a-v</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23434</id>
		<title>Участник:Zhu.a-v/Алгоритм Киркпатрика</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23434"/>
		<updated>2017-10-23T19:48:02Z</updated>

		<summary type="html">&lt;p&gt;Zhu.a-v: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор статьи: Журавская Александра&lt;br /&gt;
&lt;br /&gt;
=Свойства и структура алгоритма=&lt;br /&gt;
&lt;br /&gt;
Алгоритм Киркпатрика решает [[Построение выпуклой оболочки набора точек|задачу построения выпуклой оболочки набора точек]] методом &amp;quot;разделяй и властвуй&amp;quot; &amp;lt;ref&amp;gt;Kirkpatrick, David G.; Seidel, Raimund (1986). &amp;quot;The ultimate planar convex hull algorithm&amp;quot;. SIAM Journal on Computing. 15 (1): 287–299.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Общее описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Выпуклой оболочкой множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; называется наименьшее выпуклое множество, содержащее множество &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Справедлива следующая интерпретация выпуклой оболочки: если вбить в деревянную доску несколько гвоздей, забивая их только до середины ножки, затем накинуть вокруг них петлю веревки и затянуть, веревка опишет выпуклую оболочку для множества точек-гвоздей.&lt;br /&gt;
&lt;br /&gt;
Применим рекурсивный подход &amp;quot;разделяй и властвуй&amp;quot; для решения поставленной задачи: &lt;br /&gt;
&lt;br /&gt;
1. Если множество состоит менее, чем из &amp;lt;math&amp;gt; 6 &amp;lt;/math&amp;gt; элементов, вычислим выпуклую оболочку напрямую перебором наборов точек. Иначе шаг 2.&lt;br /&gt;
&lt;br /&gt;
2. Проведем на плоскости прямую, разделяющую множество на 2 примерно одинаковых подмножества. Для каждого из них найдем выпуклую оболочку. Перейдем на шаг 3.&lt;br /&gt;
&lt;br /&gt;
3. Построим общую выпуклую оболочку по двум, построенным на предыдущем шаге.&lt;br /&gt;
&lt;br /&gt;
==Математическое описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Ясно, что выпуклая оболочка множества точек на плоскости &amp;lt;math&amp;gt; X = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}&amp;lt;/math&amp;gt; --- это выпуклый многоугольник, вершины которого содержатся в &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;, и все остальные элементы &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; лежат внутри этого многоугольника. Значит, задача поиска выпуклой оболочки &amp;lt;math&amp;gt; conv X &amp;lt;/math&amp;gt; сводится к выбору такого набора вершин &amp;lt;math&amp;gt; (x_{i_1},y_{i_1}),(x_{i_2},y_{i_2}),...,(x_{i_n},y_{i_n}) &amp;lt;/math&amp;gt; , которые образуют выпуклый многоугольник, содержащий все точки множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для выполнения шага 1 достаточно проверить все возможные тройки, четверки и пятерки точек и выбрать из них подходящую под определение выпуклой оболочки.&lt;br /&gt;
&lt;br /&gt;
Шаг 2 требует выбора разделяющей прямой: выберем прямую &amp;lt;math&amp;gt; x = /underline{x} &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;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhu.a-v</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23428</id>
		<title>Участник:Zhu.a-v/Алгоритм Киркпатрика</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23428"/>
		<updated>2017-10-23T19:31:49Z</updated>

		<summary type="html">&lt;p&gt;Zhu.a-v: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор статьи: Журавская Александра&lt;br /&gt;
&lt;br /&gt;
=Свойства и структура алгоритма=&lt;br /&gt;
&lt;br /&gt;
Алгоритм Киркпатрика решает [[Построение выпуклой оболочки набора точек|задачу построения выпуклой оболочки набора точек]] методом &amp;quot;разделяй и властвуй&amp;quot; &amp;lt;ref&amp;gt;Kirkpatrick, David G.; Seidel, Raimund (1986). &amp;quot;The ultimate planar convex hull algorithm&amp;quot;. SIAM Journal on Computing. 15 (1): 287–299.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Общее описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Выпуклой оболочкой множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; называется наименьшее выпуклое множество, содержащее множество &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Справедлива следующая интерпретация выпуклой оболочки: если вбить в деревянную доску несколько гвоздей, забивая их только до середины ножки, затем накинуть вокруг них петлю веревки и затянуть, веревка опишет выпуклую оболочку для множества точек-гвоздей.&lt;br /&gt;
&lt;br /&gt;
Применим рекурсивный подход &amp;quot;разделяй и властвуй&amp;quot; для решения поставленной задачи: &lt;br /&gt;
&lt;br /&gt;
1. Если множество состоит менее, чем из &amp;lt;math&amp;gt; 6 &amp;lt;/math&amp;gt; элементов, найдем выпуклую оболочку перебором наборов точек. Иначе шаг 2.&lt;br /&gt;
&lt;br /&gt;
2. Проведем на плоскости прямую, разделяющую множество на 2 непустых подмножества. Для каждого подмножества выполним 1. Перейдем на шаг 3.&lt;br /&gt;
&lt;br /&gt;
3. Построим общую выпуклую оболочку по двум, построенным на предыдущем шаге.&lt;br /&gt;
&lt;br /&gt;
==Математическое описание алгоритма==&lt;br /&gt;
&lt;br /&gt;
Ясно, что выпуклая оболочка множества точек на плоскости &amp;lt;math&amp;gt; X = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}&amp;lt;/math&amp;gt; --- это выпуклый многоугольник, вершины которого содержатся в &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;, и все остальные элементы &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; лежат внутри этого многоугольника. Значит, задача поиска выпуклой оболочки &amp;lt;math&amp;gt; conv X &amp;lt;/math&amp;gt; сводится к выбору такого набора вершин &amp;lt;math&amp;gt; (x_{i_1},y_{i_1}),(x_{i_2},y_{i_2}),...,(x_{i_n},y_{i_n}) &amp;lt;/math&amp;gt; , образующих выпуклый многоугольник, содержащий все точки множества &amp;lt;math&amp;gt; X &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;/div&gt;</summary>
		<author><name>Zhu.a-v</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23422</id>
		<title>Участник:Zhu.a-v/Алгоритм Киркпатрика</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:Zhu.a-v/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D0%B8%D1%80%D0%BA%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA%D0%B0&amp;diff=23422"/>
		<updated>2017-10-23T19:28:18Z</updated>

		<summary type="html">&lt;p&gt;Zhu.a-v: Новая страница: «Автор статьи: Журавская Александра  =Свойства и структура алгоритма= Алгоритм Киркпатри…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор статьи: Журавская Александра&lt;br /&gt;
&lt;br /&gt;
=Свойства и структура алгоритма=&lt;br /&gt;
Алгоритм Киркпатрика решает [[Построение выпуклой оболочки набора точек|задачу построения выпуклой оболочки набора точек]] методом &amp;quot;разделяй и властвуй&amp;quot; &amp;lt;ref&amp;gt;Kirkpatrick, David G.; Seidel, Raimund (1986). &amp;quot;The ultimate planar convex hull algorithm&amp;quot;. SIAM Journal on Computing. 15 (1): 287–299.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
==Общее описание алгоритма==&lt;br /&gt;
Выпуклой оболочкой множества &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; называется наименьшее выпуклое множество, содержащее множество &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;.&lt;br /&gt;
Справедлива следующая интерпретация выпуклой оболочки: если вбить в деревянную доску несколько гвоздей, забивая их только до середины ножки, затем накинуть вокруг них петлю веревки и затянуть, веревка опишет выпуклую оболочку для множества точек-гвоздей.&lt;br /&gt;
Применим рекурсивный подход &amp;quot;разделяй и властвуй&amp;quot; для решения поставленной задачи: &lt;br /&gt;
1. Если множество состоит менее, чем из &amp;lt;math&amp;gt; 6 &amp;lt;/math&amp;gt; элементов, найдем выпуклую оболочку перебором наборов точек. Иначе шаг 2.&lt;br /&gt;
2. Проведем на плоскости прямую, разделяющую множество на 2 непустых подмножества. Для каждого подмножества выполним 1. Перейдем на шаг 3.&lt;br /&gt;
3. Построим общую выпуклую оболочку по двум, построенным на предыдущем шаге.&lt;br /&gt;
&lt;br /&gt;
==Математическое описание алгоритма==&lt;br /&gt;
Ясно, что выпуклая оболочка множества точек на плоскости &amp;lt;math&amp;gt; X = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}&amp;lt;/math&amp;gt; --- это выпуклый многоугольник, вершины которого содержатся в &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt;, и все остальные элементы &amp;lt;math&amp;gt; X &amp;lt;/math&amp;gt; лежат внутри этого многоугольника. Значит, задача поиска выпуклой оболочки &amp;lt;math&amp;gt; conv X &amp;lt;/math&amp;gt; сводится к выбору такого набора вершин &amp;lt;math&amp;gt; (x_{i_1},y_{i_1}),(x_{i_2},y_{i_2}),...,(x_{i_n},y_{i_n}) &amp;lt;/math&amp;gt; , образующих выпуклый многоугольник, содержащий все точки множества &amp;lt;math&amp;gt; X &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;/div&gt;</summary>
		<author><name>Zhu.a-v</name></author>
	</entry>
</feed>