Алгоритмы точного вычисления гиперобъема
Постановка задачи
- точка в -мерном пространстве.
Точка доминирует точку (), если .
- множество из точек в -мерном пространстве таких, что - никакая точка не доминируется другой точкой из этого множества.
- гиперобъем множества .
В частности, если , то .
Задача: найти точное значение гиперобъема множества из точек -мерного пространоства.
Алгоритм включения-исключения (Inclusion-Exclusion Algorithm, IEA)
Самый простой алгоритм нахождения гиперобъема базируется на идее комбинаторной формулы включения-искючения. Все множество представляется в виде объединения гиперкубов (), соответствующих отдельным точкам .
После этого объем всего множества вычисляется по формуле:Объем пересечения гиперкубов легко считается как произведение по каждой координате минимального значения этой координаты среди всех точек, которым соответствуют гиперкубы.
Таким образом, в этом алгоритме перебираются все подмножества точек множества , для каждого множества находится гиперобъем пересечения соответствующих гиперкубов и он прибавляется с соответствующим знаком к ответу. Время работы этого алгоритма составляет .
Алгоритм LebMeasure
Алгоритм LebMeasure обрабатывает точки множества по очереди. Для каждой очередной точки находится объем некоторого максимального по включению гиперкуба, доминируемого эксклюзивно только этой точкой и она заменяется на некоторое множество порожденных точек, которые доминируют оставшуюся область, доминировшуюся до этого точкой .
Например, если изначально было четыре точки в трехмерном пространствеОбработка точек продолжается, пока все точки не будут обработаны. Таким образом, время работы алгоритмы напрямую зависит от количества порожденных точек. Легко заметить, что таких точек не более, чем , поскольку каждая координата каждой порожденной точки равна соответствующей координате некоторой точки исходного множества .
К сожалению, эта верхняя оценка является достижимой. Например, если исходное множество имеет вид: , и точки обрабатываются в этом порядке, то всего будет обработано точка, что показано в [1]. Правда, если в этом примере точки обрабатываются в обратном порядке, то суммарное количество обработанных точек линейно зависит от и . Тем не менее, существуют примеры, для которых любой порядок обработки приводит к экспоненциальной зависимости числа порожденных точек от размерности пространства и близок к [1].