返回信息流输入多组二维向量,如何求取任意两点间的最小距离?
这是一条镜像帖。来源:北邮人论坛 / python / #19262同步于 2017/9/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】小白求助!
stylekn
2017/9/11镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
先用 python 的 combination 生成 坐标对
然后 http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html 算距离
最后保存最小距离的?
AB各一点最小什么意思,二分是怎么分的呢
【 在 Flying07 的大作中提到: 】
: 没记错的话是二分。。。把点分成两个部分的,比如AB,求A里最近两点,B里最近两点,再加上AB各一点最小,三个取最小值
比如10个点,分两组,没组5个,那么最小值无外乎三种情况:前五个点中最近两点,后五个点中最近两点,以及两部分各取一个点时候最近的两个点,三种情况取最小值,大致就是这样
【 在 chenxiansf (影自南飞) 的大作中提到: 】
: AB各一点最小什么意思,二分是怎么分的呢
两部分各取一个点这个操作是遍历两个集合吗?那这操作还不是O(n^2)吗
【 在 Flying07 的大作中提到: 】
: 比如10个点,分两组,没组5个,那么最小值无外乎三种情况:前五个点中最近两点,后五个点中最近两点,以及两部分各取一个点时候最近的两个点,三种情况取最小值,大致就是这样
怎么可能全部遍历,那肯定时间长啊,你这样想,先把所有点排个序,当你求出了两个集合里的值之后如果这两个值中最小是a,那么第三种情况的点对是在一个a*2a的一个矩形里面,因为你是排了序的,想遍历就非常容易了,这个复杂度是O(nlogn),具体可以看下这个:https://zm12.sm-tc.cn/?src=l4uLj8XQ0IiIiNGWi5GQjJrRkZqL0Juai56Wk9DMz8nMz8zRl4uSkw==&uid=32764f5e6a03d19515d3a9ad1a81ebe7&hid=dbbd2f32a7bf3f6c1553f62af354ac89&pos=3&cid=9&time=1505784647137&from=click&restype=1&pagetype=0000004000000402&bu=news_natural&query=计算所有这些点中,距离最近的两个点间的最小距离&mode=&v=1&uc_param_str=dnntnwvepffrgibijbprsvdsdichei