提问"给定平面上N个点,找其中的一对点,使得在N 个点组成的所有点对中,该点对间的距离最小。"

youngster26 2004-03-14 06:18:08
这个问题如何处理。是用到了什么算法?我的算法不行。还望赐教。如果有代码就更好了。谢谢
...全文
1125 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngster26 2004-03-16
  • 打赏
  • 举报
回复
up again
morelittle 2004-03-16
  • 打赏
  • 举报
回复
分治法可以解。

Divide:
首先考虑各个点的x坐标,找出他们的中位数xd(可以看一看找中位数的算法,他可在线性时间内完成,前几天,有人问过这个算法,我有详细的解答),用xd将这些点分成两部分,对各个部分递归调用此算法。

Merge:
在merge阶段除了要比较在这两个部分得到的解(设两部分中较小的点对距离为d),还要比较x=xd这条线左右d范围内点的距离大小,其实,只用对x=xd左侧在|x-xd|<=d范围内的每一个点计算其到右侧相应范围内点的距离即可。我们可以证明,对左侧该范围内的一点,最多计算在其相近距离内6个点就能得到答案(用鸽巢原理)。这样,在比较它与d的大小,可得到答案。
pladene 2004-03-16
  • 打赏
  • 举报
回复
王晓东的《算法设计与分析》 电子工业出版社

《最近点对问题》有详细介绍
stephen85 2004-03-14
  • 打赏
  • 举报
回复
分治法
youngster26 2004-03-14
  • 打赏
  • 举报
回复
老兄能否给全部代码,或链接呀?
gnefuil 2004-03-14
  • 打赏
  • 举报
回复
Voronoi图

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧