Случайно заинтересовался Сentroidal Voronoi tessellation (
CVT) и обнаружил некоторые "темные пятна".
Вкратце, они делятся на устойчивые и неустойчивые.
Здесь дано точное определение.
Получается, что все итеративные алгоритмы, включая
Ллойда, сходятся только к устойчивым CVT.
Возникает сразу несколько вопросов.
1. Предположим, я прогоняю тысячи раз алгоритм Ллойда для разных начальных положений
центров.
Можно например начинать с распределений типа диска Пуассона, чтобы избежать заведомо неудачных.
И получаю
различных (с точностью до поворотов и отражений!) фигур.
Получается, что
- это
нижняя грань для числа устойчивых CVT при данном
.
Потому что это численный результат, и всегда есть вероятность, что найдется еще один вариант.
Интересно, а есть какие
точные результаты на эту тему? Может, попробовать предложить последовательность
на OEIS... Но нужны какие-то еще идеи.
2. Обратимся теперь к неустойчивым CVT. Во-первых, в заметке в Вики есть неточность. Фигура типа "вертикально-горизонтального" креста -
неустойчивое CVT. Поэтому надо либо другие такие включить в примеры, либо оставить только устойчивые. А таких для
всего
.
Как же вообще получать неустойчивые CVT?!
Ни один алгоритм к ним не сходится. С помощью интерактивных фишек Mathematica я получил несколько примеров,
которые явно удовлетворяют критерию CVT, но и алгоритм Ллойда, и минимизации энергии "уходит" от них.
Если кто-то интересовался подобными вещами, буду рад любым идеям.
Да, и конечно данный вопрос - не про оптимизацию CVT. Есть много статей, основная тема которых - поиск быстрых алгоритмов для больших
. Меня интересует как раз обратное - детально разобраться со всеми видами CVT для малых
.