Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >查找二维平面上距离最小点对的O(n)算法原理与Python实现

查找二维平面上距离最小点对的O(n)算法原理与Python实现

作者头像
Python小屋屋主
发布于 2024-01-23 04:58:42
发布于 2024-01-23 04:58:42
5300
举报
文章被收录于专栏:Python小屋Python小屋

==============

版权声明:由于公众号后台规则问题,本文暂时无法设置原创标记,但仍属原创内容。

============

问题描述:

给定二维平面上的若干个点,从中查找距离最小的两个。

问题分析:

要解决这个问题,最直接的想法是把给定的点进行两两组合,计算每个组合中两个点的距离,从中找出距离最小的一对。这个算法的计算量非常大,没有任何优化的痕迹,时间复杂度妥妥的O(n^2),即使充分发挥Python语言函数式编程技巧和标准库对象的优势也无法弥补算法本身效率低下的问题。

上面的代码之所以效率低,主要是做了很多不必要的计算。认识到这一点,可以采用一点技巧来减少计算量,例如根据三角形两边长之和大于第三边可知,如果某两个点之间的水平距离或垂直距离已经大于目前已知的最小距离,那么这两个点的距离不可能更小。引入一点减法运算从而避免一些幂运算还是合算的,可以适当提高速度。但这样的改进不属于算法级的优化,虽然有些效果,但效率不会有特别的提升。细心的读者会发现,下面代码中的开方运算并不是必须的,删除可以进一步加快速度把时间再缩短几秒钟,但与我们的目标还有很大距离。

最初的穷举法是仔细检查每个组合是否满足要求,上面的改进是先稍微看一眼每个组合,如果有希望符合要求就再仔细看看,如果第一眼发现不可能符合要求就看完第一眼不再管它了。如果能够减少一些不必要的组合,缩小搜索的范围,把“稍微看一眼”的时间也省下来,应该可以大幅度提高效率。

接下来我们考虑采用分治法,时间复杂度可以达到O(nlogn),核心思路为:1)对所有点按x坐标升序排列,x坐标相同的按y坐标升序排列;2)按x坐标把原始点集左右等分为两个子集,分别寻找两个子集内部距离最小的点对,取二者中最小的一个;3)检查左右两个点集之间的点是否有距离更小的,也就是一个点属于左侧点集另一个点属于右侧点集,但二者之间距离更小;4)对左右两个子集重复上面的操作。

下面的代码在实现算法时又进行了一些优化,例如计算左右点集之间的最小距离时,只考虑了有可能构成更短距离的点,也就是左右两个子集边界附近的点。

虽然代码看上去复杂了很多,但执行速度快了几百倍,点越多效率提高越明显。那么,算法还有改进空间吗?

让我们再回过头来深入分析一下这个问题的枚举法求解过程,如果有一个点B与当前点A的距离最小,那么B点一定在A点的邻域内,如果我们只计算A点与很小邻域内的其他点的距离,而不用计算A点与整个点集中所有点的距离,无疑可以减少大量计算。这样的话问题还有两个关键需要解决,一是邻域半径如何确定,二是如何实现只搜索邻域内的点。对于第一个问题,可以使用目前已知的最小距离作为邻域半径,并且随着计算的推进不断地缩小邻域。对于第二个问题,可以借助于字典来实现。通过这样的改进,甚至可以使得时间复杂度接近于O(n),也会深刻理解一个问题,数据结构是算法的基础,脱离了数据结构的支撑,算法就是空中楼阁。

最后,填写几行代码来测试和比较一下几种方法的效率。

运行结果如下,

注释掉几个函数中检测到距离为0提前结束的代码,重新运行程序,结果如下,

可以看到,只搜索邻域的枚举法具有最好的执行速度,这也符合预期。可能会有读者疑惑,为了确定合适的初始最小距离,代码中先对所有点进行了排序,这是否会引入额外的工作量呢,又是否可以消除呢?需要明确的是,确实会引入一点额外的计算量,但是Python内置函数sorted()已经把排序算法优化到了极致,开销很小。如果不这样做的话,也可以随机选择几个点并计算最小距离作为初始值,这样的话会导致算法不稳定,有时快有时慢,如果随机选择的点距离比较远的话,整个算法的收敛速度会很慢。即使是随机选择的点合适的时候,效率的提升也不明显,几乎可以忽略。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
黄仁勋:AI正在吃掉软件行业,未来每家房子都有深度学习能力
若朴 李林 编译整理 量子位 报道 | 公众号 QbitAI 很少有CEO可以领导同一家公司超过20年,黄仁勋做到了。1993年,30岁的黄仁勋和伙伴一起创立了英伟达(Nvidia),并从那时开始掌管
量子位
2018/03/30
7120
黄仁勋:AI正在吃掉软件行业,未来每家房子都有深度学习能力
黄仁勋GTC主旨演讲:从摩尔定律的尽头到深度学习大爆炸,发布新一代GPU,市值突破700亿美元( PPT)
【新智元导读】英伟达CEO黄仁勋一年一度的GTC主旨演讲凌晨结束,新智元第一时间带来了深度报道(带PPT的)。本次大会最受关注的是,英伟达发布了新一代的GPU,涉及不少新的技术,比如tensor。此外, 还有“面向TensorFlow 的TensorRT”、“英伟达GPU云”“AI 研究基础设施DGX-1和DGX Station”、“开源 Xavier DLA ” 等等。黄仁勋从摩尔定律走向消亡谈起,一直说到深度学习的大爆炸。一起来看看股票涨幅“不可阻挡”的英伟达都有哪些布局。 5月11日凌晨,英伟达CEO
新智元
2018/03/28
1.1K0
黄仁勋GTC主旨演讲:从摩尔定律的尽头到深度学习大爆炸,发布新一代GPU,市值突破700亿美元( PPT)
CES 2017 | Nvidia黄仁勋领衔:从云上的游戏电脑 到与奥迪合作真正AI车(完整视频)
大数据文摘作品,转载要求见文末 作者 | Aileen,Yawei Xia,魏子敏 英伟达CEO黄仁勋在CES2017大会发表展前主题演讲 如果有人说科技圈给人的刻板印象是nerd(书呆子),那他一定没有见识过CES。每年1月召开,这场已经连续举办了50年的国际消费类电子产品展览会(CES)的规模和受到的关注度不亚于各类时尚大秀。而近几年,城会玩儿的科技咖们更是把科技发布会移到了拉斯维加斯这座party之城。 今年,汽车科技厂商占据了CES的重头戏。为此,CES还专门开辟了自动驾驶演示场地。大会5日开幕
大数据文摘
2018/05/24
5310
黄仁勋预测:5年内或能实现AGI!全力满足中国需求,美国距「供应链独立」还有10年
最近,在《纽约时报》的年度DealBook峰会上,黄仁勋表示,如果把通用人工智能(AGI)定义为能以「相当有竞争力」的方式完成人类智能测试的计算机,那么在未来五年内,我们将看到AGI。
新智元
2023/12/05
2690
黄仁勋预测:5年内或能实现AGI!全力满足中国需求,美国距「供应链独立」还有10年
黄仁勋谈 GPU 大战:每年都有“英伟达杀手”跳出来,但无人成功
作者 | Timothy Prickett Morgan  译者 | 核子可乐,刘燕   伟大的技术人员总是着眼于未来,在无数工程师的协同努力下把前景转化为现实。也正是这种从愿景到规范、由规范到现实、再由现实到收益的重复循环,推动世界不断进步。 过去十五年来,英伟达就一直身处这种从创造到扩张的良性循环当中。近日,The Next Platform 记者 Timothy Prickett Morgan 专访了英伟达联合创始人兼 CEO 黄仁勋,探讨了数据中心的后续发展,以及 Omniverse 这一融合了模拟
深度学习与Python
2023/04/01
3480
黄仁勋谈 GPU 大战:每年都有“英伟达杀手”跳出来,但无人成功
奔跑吧,年轻人:黄仁勋台大对毕业生演讲
机器之心报道 编辑:李泽南、蛋酱 处于 AI 时代的你,将要创造什么? “You are running for food, or you are running from becoming food. And often times, you can’t tell which. Either way, run.” 「为了食物而奔跑,或者为了避免成为食物而奔跑,很多时候,你无法分辨是哪一种情况。不管是哪一种,都要奔跑。 5月27日,在台湾大学的毕业典礼上,黄仁勋以致辞嘉宾的身份发表了一段长达23分钟的演
机器之心
2023/05/31
5190
奔跑吧,年轻人:黄仁勋台大对毕业生演讲
黄仁勋:Nvidia不是游戏公司,我们希望推动下一个人工智能大爆炸
黄仁勋,标志性的黑色皮夹克,为母校斯坦福捐了一座用自己名字命名的工程大楼,位置就在另一位斯坦福华裔校友,雅虎总裁杨致远捐赠的工程楼旁边。
新智元
2020/07/09
8340
黄仁勋:Nvidia不是游戏公司,我们希望推动下一个人工智能大爆炸
黄仁勋亲自给OpenAI送货,全球首台DGX H200开箱了
OpenAI 联合创始人、总裁 Greg Brockman 发推,晒出了自己、OpenAI CEO 奥特曼与英伟达创始人兼 CEO 黄仁勋的合照。
机器之心
2024/04/26
1910
黄仁勋最新2万字演讲实录:将打破摩尔定律发布新产品,机器人时代已经到来
腾讯科技讯 6月2日,英伟达联合创始人兼首席执行官黄仁勋在Computex 2024(2024台北国际电脑展)上发表主题演讲,分享了人工智能时代如何助推全球新产业革命。
小腾资讯君
2024/06/05
3580
黄仁勋最新2万字演讲实录:将打破摩尔定律发布新产品,机器人时代已经到来
黄仁勋5000亿豪赌:AI超算首次Made in USA!
未来四年内,英伟达将通过与台积电、富士康、纬创资通、安靠(Amkor)和矽品(SPIL)的合作,在美国打造出价值5000亿美元的AI基础设施。
新智元
2025/04/16
1090
黄仁勋5000亿豪赌:AI超算首次Made in USA!
黄仁勋最新对话:未来互联网流量将大幅减少,计算将更多即时生成
① 黄仁勋强调生成式AI正以指数速度增长,企业需要迅速适应并利用这一技术,而不是观望,以免落后于技术发展的步伐。
小腾资讯君
2024/06/18
3690
黄仁勋最新对话:未来互联网流量将大幅减少,计算将更多即时生成
黄仁勋最新访谈:自曝每天使用ChatGPT,每次演讲都硬着头皮上
在Arm携手美国全国公共媒体(NPM)精心打造的定制化播客系列《Tech Unheard》的首秀中,英伟达首席执行官黄仁勋作为特邀嘉宾接受了Arm首席执行官雷内·哈斯(Rene Haas)的独家专访。哈斯对黄仁勋赞誉有加,认为他是一位名副其实的远见卓识者。
小腾资讯君
2024/10/15
2410
英伟达颠覆CPU!长发黄仁勋杀入英特尔地盘,Arm架构CPU性能高10倍
今年,「GPU大哥」英伟达居然「不讲武德」,发布一个基于Arm架构的新数据中心CPU Nvidia Grace,它将直接挑战英特尔在服务器和数据中心计算领域的主导地位。
新智元
2021/04/15
4840
黄仁勋打响CES第一枪:全球最强芯DRIVE Xavier武装自动驾驶
新智元编辑部 【新智元导读】英伟达CES发布会,黄仁勋全力投入自动驾驶市场,发布了四大关键产品和平台,从各个方面提升驾驶体验。英伟达的自动驾驶平台合作伙伴,也已经增长到320+家。 老黄说,每年新年初始开启CES都让他很激动万分。 或许是太过激动,以及时间上的原因(晚上8点的主旨演讲),虽然经过了2次演习,但还是在现场一度说不出话来。上气不接下气,“CEO的工作不应该如此rigid。”黄在台上说。 但是,凭借强大的控场能力,黄仁勋在说笑中继续,并发布了围绕自动驾驶相关的4大关键产品和平台。 瞄准千亿美元自动
新智元
2018/03/20
1K0
黄仁勋打响CES第一枪:全球最强芯DRIVE Xavier武装自动驾驶
用20块GPU装下整个互联网!本次GTC大会,黄仁勋继续大秀「AI肌肉」
点击图片报名 老黄:不装了,我就是AI。 作者 | 来自镁客星球的家衡 就在今天凌晨,英伟达CEO黄仁勋带来了名为“I AM AI”的GTC 2022线上主题演讲! 即便告别了我们熟悉的厨房,但黄仁勋照样能给我们端上多道“硬核大菜”。 先是搭载全新Hopper架构的H100 GPU,接着是Grace超级芯片,然后依次谈到了机器人、自动汽车以及其他软件更新。 总的来看,英伟达再度将GPU的算力推向了极致,借此加强自身在AI、汽车等领域的实力。同时,英伟达已经为下一波AI浪潮以及无限幻想的元宇宙做好了准备。
镁客网
2022/03/25
5020
英伟达CPU面世!基于Arm,性能超过英特尔为核心的自家系统10倍,连客户都找好了
这次的演讲和之前有所不同,可以从下图明显看到,黄教主的脸逐渐圆润、头发也越留越长了。
大数据文摘
2021/04/15
5320
【黄仁勋苏州GTC演讲】摩尔定律已终结,计算的未来离不开GPU
2018年一度被传要“泡汤”的最后一场GTC,今天如期在苏州举行,现场气氛火爆,参与人数可能又创下了历史新高。
新智元
2018/12/18
7410
【黄仁勋苏州GTC演讲】摩尔定律已终结,计算的未来离不开GPU
黄仁勋定律是新的摩尔定律!这就是黄教主收购Arm的原因
华尔街日报报道称,摩尔定律正在放缓,但有一项新定律,可能对计算下半个世纪同样重要。
新智元
2020/09/25
1.1K0
黄仁勋定律是新的摩尔定律!这就是黄教主收购Arm的原因
回放订阅 | NVIDIA CEO 黄仁勋 GTC CHINA 2019 主题演讲
Orin是英伟达花费4年时间投入数十亿美元打造,性能比最新一代Xavier提升7倍,算力最高可达200TOPS。
AI研习社
2019/12/23
7000
回放订阅 | NVIDIA CEO 黄仁勋 GTC CHINA 2019 主题演讲
英伟达CEO黄仁勋专访 | All IN深度学习自动驾驶,打响芯片热战
【新智元导读】英伟达2016年Q2财报大好,股价创历史新高,从CEO黄仁勋投资人会议发言可以看出,英伟达接下来有向数据中心和自动驾驶发力的迹象,这两者核心还是深度学习。日前英特尔宣布收购初创公司Nervana,CPU巨头终于在深度学习芯片市场与英伟达短兵相交。本文后附华盛顿大学英伟达技术产品报告,用数据告诉你GPU巨头如何深耕深度学习。 上周四,英伟达2016年Q2财报公布,表现超出预期,英伟达股价随后也创下历史新高,不仅如此,市场对英伟达Q3的预期也比原来增加了2亿美元。 英伟达Q2销售额共计14.3亿美
新智元
2018/03/23
9100
英伟达CEO黄仁勋专访 | All IN深度学习自动驾驶,打响芯片热战
推荐阅读
黄仁勋:AI正在吃掉软件行业,未来每家房子都有深度学习能力
7120
黄仁勋GTC主旨演讲:从摩尔定律的尽头到深度学习大爆炸,发布新一代GPU,市值突破700亿美元( PPT)
1.1K0
CES 2017 | Nvidia黄仁勋领衔:从云上的游戏电脑 到与奥迪合作真正AI车(完整视频)
5310
黄仁勋预测:5年内或能实现AGI!全力满足中国需求,美国距「供应链独立」还有10年
2690
黄仁勋谈 GPU 大战:每年都有“英伟达杀手”跳出来,但无人成功
3480
奔跑吧,年轻人:黄仁勋台大对毕业生演讲
5190
黄仁勋:Nvidia不是游戏公司,我们希望推动下一个人工智能大爆炸
8340
黄仁勋亲自给OpenAI送货,全球首台DGX H200开箱了
1910
黄仁勋最新2万字演讲实录:将打破摩尔定律发布新产品,机器人时代已经到来
3580
黄仁勋5000亿豪赌:AI超算首次Made in USA!
1090
黄仁勋最新对话:未来互联网流量将大幅减少,计算将更多即时生成
3690
黄仁勋最新访谈:自曝每天使用ChatGPT,每次演讲都硬着头皮上
2410
英伟达颠覆CPU!长发黄仁勋杀入英特尔地盘,Arm架构CPU性能高10倍
4840
黄仁勋打响CES第一枪:全球最强芯DRIVE Xavier武装自动驾驶
1K0
用20块GPU装下整个互联网!本次GTC大会,黄仁勋继续大秀「AI肌肉」
5020
英伟达CPU面世!基于Arm,性能超过英特尔为核心的自家系统10倍,连客户都找好了
5320
【黄仁勋苏州GTC演讲】摩尔定律已终结,计算的未来离不开GPU
7410
黄仁勋定律是新的摩尔定律!这就是黄教主收购Arm的原因
1.1K0
回放订阅 | NVIDIA CEO 黄仁勋 GTC CHINA 2019 主题演讲
7000
英伟达CEO黄仁勋专访 | All IN深度学习自动驾驶,打响芯片热战
9100
相关推荐
黄仁勋:AI正在吃掉软件行业,未来每家房子都有深度学习能力
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档