Оценка сложности вычисления гиперобъема
Утверждается, что точное вычисление значения гиперобъема множества из точек -мерного пространства является #P-трудной задачей, однако допускает эффективную аппроксимацию, а именно может быть аппроксимировано за
- полином от количества параметров,
- полином от количества решений,
- полином от качества аппроксимации.
#P-трудность задачи вычисления гиперобъема
| Определение: | 
| Задача #MON-CNF (Satisfability problem for monotone boolean formulas) — задача вычисления количества удовлетворяющих подстановок для монотонной булевой формулы, записанной в КНФ , где все дизъюнкты | 
| Теорема: | 
| Задача вычисления гиперобъема принадлежит классу #P-трудных задач | 
| Доказательство: | 
| Суть доказательства состоит в сведении задачи #MON-CNF к задаче вычисления значения гиперобъема. Так как доказано [1] , что #MON-CNF является #P-трудной, то это докажет теорему. Количество удовлетворяющих подстановок функции меньше на количество удовлетворяющих подстановок ее отрицания . Для упрощения вычислений далее будем работать с . Для каждого конъюнкта построим соответствующий ему гиперпараллелепипед где . Рассмотрим теперь . Заметим, что так как все вершины гиперпараллелепипедов лежат в точках с целочисленными координатами 0,1 или 2, то и можно разбить на гиперкубы вида , где (то есть на гиперкубы со сторонами 1 с координатами ближайшей к началу координат вершины 0 или 1). Более того, из-за целочисленности вершин , каждый из этих гиперкубов лежит в хотя бы одном из 
 А значит из определения 
 удовлетворяет для некоторого удовлетворяет Заметим, что так как удовлетворяетТаким образом произвели сведение, в значит задача вычисления гиперобъема принадлежит классу #P | 
Эффективная аппроксимация нахождения значения гиперобъема
Приведем псевдокод алгоритма для аппроксимации гиперобъема объединения тел. В алгоритме, приведенном в [2] используются три оракула: PointQuery, VolumeQuery и SampleQuery, каждый из которых ошибается с вероятностью и соответственно.
Оракул
- PointQuery(x,B) возвращает true, если точка лежит внутри .
- VolumeQuery(B) возвращает объем заданного тела .
- SampleQuery(B) для заданного тела возвращает произвольную его точку .
Для данного алгоритма допускаются следующие ослабления этих оракулов:
- PointQuery(x,B) возвращает true для всех точек из некоторого тела
- VolumeQuery(B) возвращает значение
- SampleQuery(B) возвращает произвольную точку из тела
M := 0; C := 0; for all do compute := VolumeQuery() od while do choose with probability x := SampleQuery() repeat if (C > T) then return choose random uniformly C := C + 1 until PointQuery (x, ) M := M + 1 od return
Время работы алгоритма составляет
,
где , и это оценка времени работы оракулов VolumeQuery, SampleQuery и PointQuery, соответственно.
Выберем .
Если все используемые тела являются гиперпараллелепипедами, то время работы каждого из оракулов составляет в точности , таким образом алгоритм позволяет построить -аппроксимацию гиперобъема с вероятностью за время .
Источники
- ↑ Roth D. On the hardness of approximate reasoning, Artif. Intell., 82: 273–302, 1996, http://cogcomp.cs.illinois.edu/papers/hardJ.pdf
- ↑ Bringmann K., Friedrich T. Approximating the volume of unions and intersections of high-dimensional geometric objects, ISAAC'2008, http://www.mpi-inf.mpg.de/~kbringma/paper/2008ISAAC_Volume.pdf
