- •Вычислительная геометрия
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
- •Вычислительная геометрия - Л4
Вычислительная геометрия
Лекция 4
1.Алгоритм Чена построения ВО
2.Рандомизированный алгоритм
3.Аппроксимация ВО
4.Приложения ВО
•Выпуклая оболочка простого многоугольника
•Диаметр множества
Вычислительная геометрия - Л4 |
2 |
Алгоритм Чена построения ВО
(Т.M. Chan)
Алгоритм Джарвиса – О(nh) Алгоритм Киркпатрика-Зайделя – O(n log h)
Идеи: заворачивание подарка + группировка
Параметр m: 1 m n
1 этап: Разделение множества P = {p1, p2,…,pn } на n/m непересекающихся подмножеств Pi, каждое из которых
содержит не более m точек – O(n).
2 этап: Построение выпуклых оболочек CH(Pi) любым из оптимальных алгоритмов (например, алгоритмом Грэхема) – O( n/m m log2 m) = O(n log2 m) .
3этап: Найдем крайнюю точку pstart выпуклой оболочки CH(P)
–O(n).
4 этап: см. далее
Вычислительная геометрия - Л4 |
3 |
pk
pk+1
Алгоритм Чена построения ВО
pstart |
Правые опорные |
|
pk-1 |
прямые и опорные |
|
точки выпуклых |
||
|
||
|
оболочек CH(Pi) |
|
|
относительно точки pk |
за O( n/m log2 m)
Всего
O( n/m h log2 m)
Очередной шаг на 4 этапе
Вычислительная геометрия - Л4 |
4 |
Алгоритм Чена построения ВО
Суммарная сложность: O(n log2m) + O( n/m h log2m) При m = h имеем O(n log2h)
Подбор m (итеративно):
for t := 1, 2, 3, … do t m := min (n, 22 );
Выполнить для P итерацию описанного алгоритма с параметром m (останов. после m шагов заворачивания);
if CH(P) построена then EXIT;
od
Вычислительная геометрия - Л4 |
5 |
Алгоритм Чена построения ВО
Завершение при m h, т.е. при t log log h . При фиксированном t время работы O n2t .
Таким образом, общее время работы до завершения
log log h |
|
|
O n2 |
log log h 1 |
O nlog h |
|
|
|
n2 |
i |
|||
O |
|
|
||||
|
i 1 |
|
|
|
|
|
4, 16, 256, 32768, 10 73 741 824, …
Вычислительная геометрия - Л4 |
6 |
Рандомизированный алгоритм построения ВО
См. отдельный файл (презентация MPP: «ЛекцияРандомАлгоритм»)
Вычислительная геометрия - Л4 |
7 |
Аппроксимация ВО
См. папку «3Аппроксимация выпуклой оболочки»
Вычислительная геометрия - Л4 |
8 |
Приложения ВО
•Выпуклая оболочка простого многоугольника (см. папку «4Алгоритм Ли»)
•Диаметр множества
Вычислительная геометрия - Л4 |
9 |
Диаметр множества |
|
Множество точек – множество точек на плоскости |
S |
= {р1, р2,…,рn}, |
|
где рi – точка на плоскости с координатами (xi,yi), |
|
где i –индекс точки множества, |
|
n – количество точек в множестве; |
|
Диаметр множества – максимальное расстояние |
|
между двумя точками множества |
|
D = max [d(pi,pj) i, j 1..n],
где точки pi,pj S, а d(pi,pj) – расстояние между двумя точками на плоскости, d(pi,pj) = ((xj - xi)2 + (yj - yi)2);
Вычислительная геометрия - Л4 |
10 |
Диаметр множества
Тривиально можно решить задачу при помощи перебора всех пар точек, при этом время решения составляет O(n2).
•Имеются ли способы, позволяющие решить задачу нахождения диаметра множества за меньшее время?
• Какова сложность задачи? (Какова нижняя оценка?)