Предположим, у меня есть коллекция из N выровненных по оси гиперкубоидов в измерениях D.
Каждый гиперкубоид имеет одну вершину в начале координат и одну вершину в положительном ортанте (т. Е. Все координаты строго положительны). Эта последняя вершина определяет гиперкуб, поэтому набор гиперкубоидов может быть задан набором вершин, по одной на гиперкубоид.
Вы можете предположить, что я уже удалил из списка гиперкубоидов любые гиперкубоиды, которые строго содержатся внутри другого. (В настоящее время я делаю это с помощью наивного алгоритма O (N ^ 2 * D). Дополнительный вопрос: могу ли я сделать лучше?)
Мне нужно найти вершины объединения всех гиперкубов, исключая любые вершины с одной или несколькими нулевыми координатами.
В двух измерениях существует N-1 таких вершин, и их можно эффективно найти, отсортировав вершины по одной (произвольной) координате, т. Е. В O (N log (N)).
Сколько таких вершин в D измерениях? (С двумя кубами, кажется, есть только одна новая вершина, так что, возможно, все еще N-1?) Как я могу эффективно найти эти вершины?