Предположим, что вам дан набор из n точек на плоскости, и вы хотите проверить, образуют ли они выпуклый n-многоугольник, т. Е. Лежат ли все они на выпуклой оболочке. Мне было интересно, если кто-нибудь знает, как это сделать за время (nlogn), т. Е. Без вычисления CH.
cg.comp-geom
Бабис Цуракакис
источник
источник
Ответы:
Это кажется маловероятным, по крайней мере, в моделях сравнения / алгебраического дерева. Определение первое:
Точка множество находится в выпуклом положении , если ни одна точка P не может быть записана в виде выпуклой комбинации остальных точек P .P P P
Теперь, чтобы решить, все ли числа из чисел различны, требуется время Ω ( n log n ) (это называется УНИКАЛЬНОСТЬЮ). Учитывая такой набор из n чисел X , сопоставьте их множеству точек P = { ( x , x 2 ) | x ∈ X } . Если повторного числа нет, то точки находятся в выпуклом положении.n Ω(nlogn) n X
Если существует повторяющееся число, то это повторяющееся число соответствует точке, которая может быть записана как выпуклая комбинация оставшихся точек. А именно, точки не находятся в выпуклом положении.
А именно, решить, находится ли набор точек в выпуклом положении, так же сложно, как и УНИКАЛЬНОСТЬ.
источник
Как только вы узнаете порядок точек, угол между каждой точкой и следующей точкой в последовательности должен быть монотонным. Это создает необходимое условие и, я думаю, достаточное.
Получение внутренней точки зрения оставлено в качестве упражнения для читателя.
источник