【问题标题】:Boost polygon library Boolean function computation timeBoost多边形库布尔函数计算时间
【发布时间】:2012-12-23 05:23:53
【问题描述】:

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

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

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

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

虽然结果是正确的,但是耗时太可怕了

有人遇到过这个问题吗?

【问题讨论】:

  • 您使用的是浮点(不是整数)坐标吗? (这是这个库的一个常见错误)。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2011-03-21
    相关资源
    最近更新 更多