提升多边形库布尔函数计算时间

时间:2012-12-23 05:23:54

标签: c++ performance boost polygon boost-polygon

有没有人使用Boost多边形库的布尔函数? Boost polygon library

它表示该算法的时间复杂度为O(nlogn),n = #points

我输入了200000个随机生成的多边形(5~8个potins)

但OR和XOR函数花费大约半小时(是的,只需调用它的函数)

虽然结果是正确的,但耗费时间很可怕

有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:0)

尽管发布展示所述行为的代码总是有帮助的,但我假设每个i = 1..n多边形与前面的每一个都有一些(唯一的)交叉..(i-1)多边形,这意味着对第一个n-1多边形进行异或运算产生的点数在n中是二次的,所以你要求n次操作O(#Points * log(#Points))其中#Points是O(n ^ 2),因此总复杂度为O(n ^ 2 * log(n))。