![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Сравнительный анализ алгоритмов построения выпуклой оболочки на плоскости |
Сравнительный анализ алгоритмов построения выпуклой оболочки на плоскости Аннотация Тема данной курсовой работы – " Сравнительный анализ алгоритмов построения выпуклой оболочки на плоскости". Для сравнения взяты четыре алгоритма: обход методом Грэхема, быстрый метод, метод “разделяй и властвуй” и динамический метод. Задача этой работы – раскрыть эти алгоритмы и провести исследования эффективности их. Программная часть для курсовой работы выполнена на Borla d Delphi 4. ОглавлениеАннотация 2Введение 4Предварительная разработка алгоритма построения выпуклой оболочки 7Метод обхода Грэхема 9Быстрые методы построения выпуклой оболочки. 11Алгоритмы типа “разделяй и властвуй”. 12Динамические алгоритмы построения выпуклой оболочки 14Сравнительный анализ алгоритмов построения выпуклой оболочки 17Выводы 20Заключение 21Приложение U i 1.pas 22Литература 34 Введение Множество различных задач вычислительной геометрии связано с построением выпуклой оболочки. В настоящий момент эта задача хорошо исследована и имеет широкое применение в распознавании образов, а так же в задачах в задаче раскроя и компоновки материала. Само понятие выпуклой оболочки является довольно простым и интуитивно понятным. Если представить резиновый шнур, натянутый на множество точек, то это и будет выпуклая оболочка для данного множества точек. Но, не смотря на свою простоту, оно не конструктивно, поэтому далее будут рассмотрены способы построения эффективных алгоритмов для построения выпуклой оболочки. Так как алгоритмы для решения нашей задачи, как правило, являются подзадачами других, более сложных задач, то интерес представляют только алгоритмы имеющие сложность O( log ). Само понятие выпуклой оболочки является довольно простым и интуитивно понятным. Если представить резиновый шнур, натянутый на множество точек, то это и будет выпуклая оболочка для данного множества точек. Но, не смотря на свою простоту, оно не конструктивно, поэтому далее будут рассмотрены способы построения эффективных алгоритмов для построения выпуклой оболочки. Так как алгоритмы для решения нашей задачи, как правило, являются подзадачами других, более сложных задач, то интерес представляют только алгоритмы имеющие сложность O( log ). Для начала, несколько определений: Определение 1. Область D принадлежащая пространству E2, будет называться выпуклой, если для любой пары точек q1 и q2 из D отрезок q1q2 целиком принадлежит D. Определение 2. Выпуклой оболочкой множества точек S, принадлежащих пространству E2, называется граница наименьшей выпуклой области в E2, которая охватывает S. Далее будем иметь дело только с множествами, состоящими из конечного числа точек. Поэтому чтобы охарактеризовать структуру выпуклой оболочки нам нужно обобщить понятия выпуклого многоугольника. Определение 3. Полиэдральным множеством или политопом называется пересечение конечного множества замкнутых полупространств. Следующая теорема характеризует выпуклые оболочки в нужном нам плане. Теорема 1. Выпуклая оболочка конечного множества точек в Ed является выпуклым политопом. Наоборот, каждый выпуклый политоп является выпуклой оболочкой конечного множества точек.
Прежде чем переходить к описанию алгоритмов следует произвести постановку задач и определить нижние оценки для решения их. Так как алгоритмы имеют дело с границей выпуклой оболочки множества L co v(L), то введем для нее обозначение CH(L) и будем ее также называть выпуклой оболочкой. Сформулируем две основные задачи: Задача ВО1. (Выпуклая оболочка). В E2 задано множество S, содержащее точек. Требуется построить их выпуклую оболочку (т.е. полное описание границы CH(S)). Задача ВО2. (Открытый алгоритм для выпуклой оболочки). На плоскости задана последовательность из точек p1, , p . Требуется найти выпуклую оболочку таким образом, чтобы, после обработки точки pi имелась CH({p1, , pi}). Рассмотрим ВО1. То, что вершины многоугольника, являющегося выпуклой оболочкой, следуют в определенном порядке, указывает на связь с задачей сортировки. В самом деле, следующая теорема показывает то, что решение ВО1 должно быть в состоянии выполнить сортировку. Теорема 2. Задача сортировки за линейное время сводится к задаче построения выпуклой оболочки, и, следовательно, для нахождения упорядоченной выпуклой оболочки для точек на плоскости требуется время (( log ). Доказательство. Сведем задачу сортировки положительных действительных чисел x1,., x к задаче ВО1. Поставим в соответствие числу xi точку (xi, xi2) и присвоим ей номер i. Выпуклая оболочка этого множества, представленная в стандартном виде будет представлять собой упорядоченное относительно значения абсциссы множество всех точек из исходного. Из него за линейное время можно получить отсортированный список. Очевидно, что если мы можем решать ВО2, то мы можем решить и ВО1, по- этому задача ВО1 может быть сведена к ВО2 за линейное время. Следовательно, нижняя оценка для ВО2 не ниже (( log ). Предварительная разработка алгоритма построения выпуклой оболочки Для начала рассмотрим несколько малопродуктивных алгоритмов построения выпуклой оболочки. Определение 3. Точка p выпуклого множества S называется крайней, если не существует пары точек a, b ( S таких, что p лежит на открытом отрезке ab. Очевидно, что подмножество крайних точек E является наименьшим подмножеством S, выпуклая оболочка которого, является выпуклой оболочкой множества S, или co v(E)=co v(S). Поэтому нам необходимо для нахождения выпуклой оболочки выполнить два шага: Определить крайние точки. Упорядочить эти точки так, чтобы они образовали выпуклый многоугольник. Теорема 3. Точка p не является крайней точкой множества S только тогда когда она лежит в некотором треугольнике, вершинами которого принадлежат S, но сама она не является вершиной этого треугольника. Эта теорема дает возможность построить алгоритм проверки крайности точки. Если мы имеем дело с множеством S мощности , то можно построить O( 3) треугольников. Проверка принадлежности точки треугольнику выполняется за постоянное количество операций. Следовательно, за время O( 3) можно определить, является ли точка крайней, а за O( 4) и для всех точек. Следующая теорема показывает, – в каком порядке должны быть точки в конечном множестве. Теорема 4. Последовательные вершины выпуклого многоугольника располагаются в порядке, соответствующем изменению угла относительно любой внутренней точки.
Упорядочить крайние точки множества можно относительно их центроида. Центроид множества для точек вычисляется за время O( ) арифметических операций. Грэхем предложил использовать для этого только три любые неколлинеарные точки множества S. В худшем случае это требует время O( ), но почти всегда это первые три точки. Упорядочить их можно за время O( log ). Таким образом, мы решаем задачу ВО1 за время O( 4). Метод обхода Грэхема Приведенный выше алгоритм является неэффективным, поэтому необходим способ более быстрого построения выпуклой оболочки. Для этого нам необходим другой подход. Грэхэм в одной из первых своих работ сумел показать, как можно, предварительно отсортировав точки относительно полярного угла с центром в какой-нибудь внутренней точке, можно найти крайние точки за линейное время. Пусть центр координат в какой-нибудь внутренней точке. Упорядочим точки относительно полярного угла, а если таковые совпадают относительно расстояния от центра координат. Так как обе точки лежат на одной прямой проходящей через центр координат, то для сравнения нам нет необходимости вычислять расстояние, а можно сравнивать сумму абсолютных значений координат. Отсортированные точки следует поместить в двусвязный список. Так как внутренние точки принадлежат некоторому треугольнику (Opq), где p и q – соседние вершины точке выпуклой оболочки. Суть алгоритма в последовательном просмотре отсортированного списка и удалении внутренних вершин. Оставшиеся точки будут являться вершинами выпуклой оболочки. Просмотр начнем с точки являющейся вершиной ВО. Для этого можно взять точку с минимальной абсциссой, а если их несколько, то и минимальной ординатой и пометить как начальную. После чего, обходим список, начиная с нее, против часовой стрелки и проверяем внутренний угол для текущей точки. Если он больше либо равен (, то удаляем вершину, а иначе переходим к следующей. Так как за каждый просмотр мы или удаляем одну вершину, или переходим к следующей, а просмотр заканчиваем при достижении вершины начало, которая не удалится, то мы выполняем не более шагов. Рассмотренный метод называют методом обхода Грэхема. Теорема 5. Выпуклая оболочка точек на плоскости может быть найдена за время O( log ) при памяти O( ) с использованием только арифметических операций и сравнений. Доказательство. Из предыдущего алгоритма видно, что в нем используются только арифметические операции и сравнения. Для нахождения внутренней точки и обхода требуется линейное время, а на сортировку уходит O( log ). Для представления списка нам достаточно O( ) памяти. Так как выше было доказано, что нижняя оценка для алгоритма решающего эту задачу равна O( log ), то получаем, что обход Грэхема имеет оптимальное время выполнения. Но он является оптимальным в худшем случае, а поведение его в среднем мы не изучили. Этот алгоритм имеет несколько недостатков. В нем используются тригонометрические функции, а так как их вычисление связано с большими затратами по времени, то желательно от них избавиться. Эндрю предложил метод решения этой проблемы. Если на плоскости заданы точек, то существует самая левая и самая правая точки, и они являются вершинами выпуклой оболочки.
Фундаментальные каталоги Фундамента'льные катало'ги, звёздные каталоги , фиксирующие на небе с максимальной точностью фундаментальную систему небесных экваториальных координат — основу для изучения движений небесных светил и определения астрономических координат, времени и азимута для точек на поверхности Земли. Фундаментальная система координат задаётся совокупностью данных Ф. к., включающей для некоторого числа равномерно распределённых по небесной сфере звёзд средние экваториальные координаты (прямые восхождения и склонения) для выбранной начальной эпохи и изменения этих координат как вследствие прецессии, так и вследствие собственных движений звёзд. Это позволяет воспроизводить фундаментальную систему для любой эпохи, отличной от эпохи каталога. Ф. к. получаются в результате совместной обработки многих звёздных каталогов, результатов наблюдений на разных обсерваториях в разные эпохи. Сравнительный анализ исходных каталогов позволяет ослабить систематические и случайные ошибки данных, приводимых в Ф. к. Нульпункты фундаментальной системы (ориентация плоскости экватора и положения точки весеннего равноденствия) определяются по наблюдениям тел Солнечной системы
1. Построение решения задачи Гурса для телеграфного уравнения методом Римана
2. Организация, методы и программы селекции пчел
3. Решение задач на построение сечений в многогранниках методом следов
4. Методы и алгоритмы построения элементов систем статистического моделирования
5. Методы построения эмпирического знания в теории и методике физического воспитания
9. Новый подход к построению методов межпроцедурного анализа программ
10. Модификация метода построения тестов для конечных автоматов относительно неразделимости
11. Построение эвольвентных профилей зубьев колес методом обкатки
13. Принцип построения налога на добавленную стоимость
14. Структуры экономического дискурса во французском языке. Роль коннекторов в построении аргументации
15. Методы исследования литературы
16. Национальное самосознание - главный фактор в построении могущественной и процветающей России
17. Построение локальной компьютерной сети масштаба малого предприятия на основе сетевой ОС Linux
18. Построение сети передачи данных
19. Построение verilog-модели ber-тестера для проверки каналов связи телекоммуникационных систем
20. Телекоммуникационные компьютерные сети: эволюция и основные принципы построения
21. Построение систем распознавания образов
25. Построение функции предшествования по заданной КС-грамматике
26. Инсталляция Windows XP. Конфигурирование оболочки Windows XP, оптимизация работы
27. Структура исчисления предикатов построение логического вывода
28. История болезни - Сообщающаяся водянка оболочек правого яичка
29. Построение, разработка версий и планирование расследования
31. Теплопроводность через сферическую оболочку
34. Построение ГМССБ и развитие радиосвязи на морском флоте
35. Теплопроводность через сферическую оболочку
36. Проблемы построения теории сознания
37. Концепция построения системы управления Московского представительства японской корпорации
41. Основы построения телекоммуникационных систем
42. Особенности построения текстов Ремона Кено
44. Овалы Кассини и пузыри в моделировании мягких оболочек
46. Построение линии пересечения 2-х конусов и цилиндра
47. Воспалительные заболевания коньюнктивы и оболочек глаза
49. Литература - Педиатрия (Книга Методы УЗИ в невропатологии и нейрохирургии
50. Литература - Терапия (СОВРЕМЕННЫЕ МЕТОДЫ ОБСЛЕДОВАНИЯ ФУНКЦИИ ПОЧЕК)
51. Литература - Фармакология (методичка)
52. Слизистая оболочка полости рта при заболеваниях эндокринной системы
53. Построение управления в современном предприятии
57. Москва и Московская губерния в годы построения социализма
58. Основные черты построения налоговой системы Франции
59. Построение бетонной плотины
62. Речевые построения, выдающие ложь
64. Кольцевая регуляция и уровни построения движений
66. Цифровая первичная сеть - принципы построения и тенденции развития
67. К построению качественной регрессионной модели этнической идентичности
68. Построение новой железнодорожной линии
69. Построение эффективной системы управления персоналом организации
73. Влияние народного хозяйства на географическую оболочку
74. Банковская система. Особенности построения банковской системы в России
75. Бюджетная система России и принципы ее построения
76. Построение функции импорта Швеции
77. Построение дерева решений проекта
78. О возможности построения русской грамматики смыслов
79. Бухгалтерский баланс: назначение, принципы построения ,техника составления
80. Построение эффективных систем управления документами на предприятиях нефтегазовой отрасли
81. Построение геологической модели и прогнозного разреза
82. Построение моделей виртуальной реальности по цифровых моделям открытых горных работ
83. Строение газовой оболочки Земли
84. Геометрические построения на местности
85. Проблемы построения правового государства в России
89. Опыт построения обучающей среды, основанной на гипертексте
90. Построение циклических кодов
94. Примеры построения АСУ-СВЯЗЬ
95. Особенности построения корпоративных систем связи для крупных предприятий
96. ASP.NET: пример построения круговой диаграммы
97. Java: Средства построения отчётов для Java-приложений