拥有路径,例如:
由一组点'p'组成
我有一组随机放置的点,包括内部和外部。叫'n'
因此,将内部所有点与随机点路径上的点进行比较,可能会呈指数级复杂。像 O(n)= n ^ p,如果我没有弄错的话这是O(n)= n * p
因此,为了解决这个问题,我认为你可以将路径细分为完全在外面的最小区域,以及完全在内部的其他区域。如图所示
绿色集合将在内部,黑色外部和橙色将再次迭代几次
这是否可行,更重要的是,它是否有效?
答案 0 :(得分:4)
考虑一下多边形点测试文献。
有了这么多的分数,我可以想象一个明智的方法是明智和有效的。远远超过你想要做的迭代事情。
答案 1 :(得分:0)
当然,它可能。但是不知道找到这些区域的成本是多少,也不知道将点划分为内部和外部的成本是多少。在外面,没有办法评估它的效率。
答案 2 :(得分:0)
基于抽样的方法可能是您最好的选择。不是粒子滤波器,而是同样的想法。顺序蒙特卡罗方法也值得研究
http://en.wikipedia.org/wiki/Particle_filter
http://en.wikipedia.org/wiki/Monte_Carlo_method
本质上,对点进行随机抽样,并测试它们是在内部还是外部以构建地图。重复几次采样方法,直到你有足够好的地图。您可以调整样本数和重复次数,以平衡效率和结果。
答案 3 :(得分:0)
类似(即几何而非空间)的方法可能是首先使用凸包来排除明确在路径之外的点。
然后,递归地将路径分解为不在船体上的子路径(称为“凹陷”),并对它们应用相同的凸包方法。你将得到一个区域树(每个区域由其根部的凸包边界),这样所有的子项都将从其父级定义的凸边界中减去。
不幸的是,仅凭这一点并不能保证有效的查询(因为特定节点的子节点的深度或数量没有上限;还要注意,即使路径没有,子节点也可以重叠。 )。你仍然需要某种形式的加速结构 - 但是现在你的区域是凸起的,这应该会更加容易。
答案 4 :(得分:0)
您的路径的原始表示是什么?隐函数?参数?位图?折线?......答案因此而异: