Алгоритмы точного вычисления гиперобъема — различия между версиями
Joshik (обсуждение | вклад) м |
Joshik (обсуждение | вклад) м |
||
| Строка 33: | Строка 33: | ||
Обработка точек продолжается, пока все точки не будут обработаны. Таким образом, время работы алгоритмы напрямую зависит от количества порожденных точек. Легко заметить, что таких точек не более, чем <tex>n^d</tex>, поскольку каждая координата каждой порожденной точки равна соответствующей координате некоторой точки исходного множества <tex>X</tex>. | Обработка точек продолжается, пока все точки не будут обработаны. Таким образом, время работы алгоритмы напрямую зависит от количества порожденных точек. Легко заметить, что таких точек не более, чем <tex>n^d</tex>, поскольку каждая координата каждой порожденной точки равна соответствующей координате некоторой точки исходного множества <tex>X</tex>. | ||
| + | |||
| + | К сожалению, эта верхняя оценка является достижимой. Например, если исходное множество <tex>X</tex> имеет вид: <tex>(1, n, n, ..., n), (2, n - 1, n - 1, ..., n - 1), ..., (n, 1, 1, ..., 1)</tex>, и точки обрабатываются в этом порядке, то всего будет обработано <tex>n^{d-1}</tex> точка, что показано в [1]. Правда, если в этом примере точки обрабатываются в обратном порядке, то суммарное количество обработанных точек линейно зависит от <tex>n</tex> и <tex>d</tex>. Тем не менее, существуют примеры, для которых любой порядок обработки приводит к экспоненциальной зависимости числа порожденных точек от размерности пространства <tex>d</tex> и близок к <tex>n^d</tex> [1]. | ||
Версия 20:49, 17 июня 2012
Постановка задачи
- точка в -мерном пространстве.
Точка доминирует точку (), если .
- множество из точек в -мерном пространстве таких, что - никакая точка не доминируется другой точкой из этого множества.
- гиперобъем множества .
В частности, если , то .
Задача: найти точное значение гиперобъема множества из точек -мерного пространоства.
Алгоритм включения-исключения (Inclusion-Exclusion Algorithm, IEA)
Самый простой алгоритм нахождения гиперобъема базируется на идее комбинаторной формулы включения-искючения. Все множество представляется в виде объединения гиперкубов (), соответствующих отдельным точкам .
После этого объем всего множества вычисляется по формуле:Объем пересечения гиперкубов легко считается как произведение по каждой координате минимального значения этой координаты среди всех точек, которым соответствуют гиперкубы.
Таким образом, в этом алгоритме перебираются все подмножества точек множества , для каждого множества находится гиперобъем пересечения соответствующих гиперкубов и он прибавляется с соответствующим знаком к ответу. Время работы этого алгоритма составляет .
Алгоритм LebMeasure
Алгоритм LebMeasure обрабатывает точки множества по очереди. Для каждой очередной точки находится объем некоторого максимального по включению гиперкуба, доминируемого эксклюзивно только этой точкой и она заменяется на некоторое множество порожденных точек, которые доминируют оставшуюся область, доминировшуюся до этого точкой .
Например, если изначально было четыре точки в трехмерном пространствеОбработка точек продолжается, пока все точки не будут обработаны. Таким образом, время работы алгоритмы напрямую зависит от количества порожденных точек. Легко заметить, что таких точек не более, чем , поскольку каждая координата каждой порожденной точки равна соответствующей координате некоторой точки исходного множества .
К сожалению, эта верхняя оценка является достижимой. Например, если исходное множество имеет вид: , и точки обрабатываются в этом порядке, то всего будет обработано точка, что показано в [1]. Правда, если в этом примере точки обрабатываются в обратном порядке, то суммарное количество обработанных точек линейно зависит от и . Тем не менее, существуют примеры, для которых любой порядок обработки приводит к экспоненциальной зависимости числа порожденных точек от размерности пространства и близок к [1].