Выпуклая оболочка в n-мерном пространстве
Версия от 11:25, 17 января 2014; Katyatitkova (обсуждение | вклад)
Конспект написан не до конца, но основные вещи уже есть. |
Рассмотрим трёхмерный случай.
-мерный сводится к трёхмерному.Суть алгоритма
Выберем любые две точки
и . Далее из оставшихся выберем точку , которая не лежит на прямой, образованной точками и . После этого выберем точку , которая не лежит на плоскости, образованной точками и . Если этого сделать не получилось, то запустим алгоритм для поиска выпуклой оболочки на плоскости.Так мы получили тетраэдр
, который является выпуклой оболочкой этих четырёх точек. Сделаем random shuffle оставшихся точек и будем добавлять их по одной в выпуклую оболочку. Если внутри или на границах выпуклой оболочки, то выпуклая оболочка не меняется на этом шаге. Иначе из имеющейся выпуклой оболочки надо удалить все видимые из данной точки грани и добавить новые — из точки до каждого ребра, образующего horizon (см. картинки). После этого нужно смержить соседние грани, которые получились копланарными.