如何解决python的2D圆形范围搜索找到圆形中的所有点库?
所以问题如下:给定数据库中的 N 个点(编辑:暂时假设它是 2 个数组 x[] 和 y[]),每个数组的坐标为 (x[i],y[i])
,以及格式为 (X,Y,R)
的查询,列出圆心为 (X,Y)
,半径为 R
的所有点。
编辑 - 输入约束: x=[-180,180],y=[-180,180]
哪个 Python 库可以最快的方式解决这个问题?我正在寻找每个查询的 O(log(N) + K)
时间复杂度和 <= O(n * log(N)^2)
空间要求,其中 K
是输出长度。
解决方案 0: 循环N个点,用毕达哥拉斯检查。
-> 内存:O(N)
。每个查询的时间:O(N)
解决方案 0.1:
同上,但添加一些小东西,例如按 x
排序,并使用二分搜索开始仅搜索坐标为 x[i] >= X - R
的点。使用平方距离代替距离等
-> 每个查询的时间:仍然 O(N)
但更快
解决方案 1 四叉树。假设点以 (0,0) 为中心。树的根节点在 (0,0) 处,包含二维空间 (x=[-inf,inf],y=[-inf,inf])
。每个节点有 4 个孩子:每个孩子包含父亲的 1/4 象限。因此,每当我们下降一个级别时,搜索空间就会减少 75%。继续往下走,直到当前节点在查询圈之外,或者不包含数据点。
-> 记忆:也许O(n * log(N)^2)
? ,时间:~~O(log(N)^2)
他们是否有任何已经解决此问题的 Python 库?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。