Алгоритмы точного вычисления гиперобъема — различия между версиями
Joshik (обсуждение | вклад) |
Joshik (обсуждение | вклад) м |
||
| Строка 25: | Строка 25: | ||
Таким образом, в этом алгоритме перебираются все подмножества точек множества <tex>X</tex>, для каждого множества находится гиперобъем пересечения соответствующих гиперкубов и он прибавляется с соответствующим знаком к ответу. | Таким образом, в этом алгоритме перебираются все подмножества точек множества <tex>X</tex>, для каждого множества находится гиперобъем пересечения соответствующих гиперкубов и он прибавляется с соответствующим знаком к ответу. | ||
Время работы этого алгоритма составляет <tex>O(n 2^n)</tex>. | Время работы этого алгоритма составляет <tex>O(n 2^n)</tex>. | ||
| + | |||
| + | == Алгоритм LebMeasure == | ||
| + | |||
| + | Алгоритм LebMeasure обрабатывает точки множества <tex>X</tex> по очереди. Для каждой очередной точки <tex>x</tex> находится объем некоторого максимального по включению гиперкуба, доминируемого эксклюзивно только этой точкой <tex>x</tex> и она заменяется на некоторое множество ''порожденных'' точек, которые доминируют оставшуюся область, доминировшуюся до этого точкой <tex>x</tex>. | ||
| + | |||
| + | Например, если изначально было четыре точки в трехмерном пространстве <center><tex>(6, 7, 4), (9, 5, 5), (1, 9, 3), (4, 1, 9)</tex>, </center> то точка <tex>(6, 7, 4)</tex> эксклюзивно доминирует куб с одним концов в <tex>(6, 7, 4)</tex>, а другим - в <tex>(4, 5, 3)</tex>. После добавления объема этого куба в ответу, точка <tex>(6, 7, 4)</tex> порождает три точки: <center><tex>(4, 7, 4), (6, 5, 3), (6, 7, 3)</tex>.</center>При этом, точка <tex>(6, 5, 4)</tex> доминируется точкой <tex>(9, 5, 5)</tex> и сразу удаляется из множества <tex>X</tex>. | ||
| + | |||
| + | Обработка точек продолжается, пока все точки не будут обработаны. Таким образом, время работы алгоритмы напрямую зависит от количества порожденных точек. Легко заметить, что таких точек не более, чем <tex>n^d</tex>, поскольку каждая координата каждой порожденной точки равна соответствующей координате некоторой точки исходного множества <tex>X</tex>. | ||
Версия 20:40, 17 июня 2012
Постановка задачи
- точка в -мерном пространстве.
Точка доминирует точку (), если .
- множество из точек в -мерном пространстве таких, что - никакая точка не доминируется другой точкой из этого множества.
- гиперобъем множества .
В частности, если , то .
Задача: найти точное значение гиперобъема множества из точек -мерного пространоства.
Алгоритм включения-исключения (Inclusion-Exclusion Algorithm, IEA)
Самый простой алгоритм нахождения гиперобъема базируется на идее комбинаторной формулы включения-искючения. Все множество представляется в виде объединения гиперкубов (), соответствующих отдельным точкам .
После этого объем всего множества вычисляется по формуле:Объем пересечения гиперкубов легко считается как произведение по каждой координате минимального значения этой координаты среди всех точек, которым соответствуют гиперкубы.
Таким образом, в этом алгоритме перебираются все подмножества точек множества , для каждого множества находится гиперобъем пересечения соответствующих гиперкубов и он прибавляется с соответствующим знаком к ответу. Время работы этого алгоритма составляет .
Алгоритм LebMeasure
Алгоритм LebMeasure обрабатывает точки множества по очереди. Для каждой очередной точки находится объем некоторого максимального по включению гиперкуба, доминируемого эксклюзивно только этой точкой и она заменяется на некоторое множество порожденных точек, которые доминируют оставшуюся область, доминировшуюся до этого точкой .
Например, если изначально было четыре точки в трехмерном пространствеОбработка точек продолжается, пока все точки не будут обработаны. Таким образом, время работы алгоритмы напрямую зависит от количества порожденных точек. Легко заметить, что таких точек не более, чем , поскольку каждая координата каждой порожденной точки равна соответствующей координате некоторой точки исходного множества .