知识贴<大规模点列重复点剔除>算法

alphapaopao 2004-05-01 10:03:47
一组点剔除其中的重复点,使其成为一个点的集合。重复点定义为距离小于ε的点。ε一般是图形系统中定义的系统精度,比如 10-8。最容易想到的办法自然是挨个儿比较,算法的时间复杂度是 O(n2)。本文将要介绍一种时间复杂度几乎是线性的重复点剔除算法,并且对算法进行详细的分析。

http://alphasun.icpcn.com/alphasun/techarticle/cullpoints/cullpoints.htm
...全文
39 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn3141 2004-05-02
  • 打赏
  • 举报
回复
思路不错,不过有实际意义吗?
csdn3141 2004-05-02
  • 打赏
  • 举报
回复
我想错了,双索引的确不适合你这种精度要求
alphapaopao 2004-05-02
  • 打赏
  • 举报
回复
x,y同时排序,就是双关键字排序。我的算法在x轴上排序的目的,是让重合点尽量集中在数组局部。然而x,y同时排序并不会让重合点更集中。因为我这里重合点定义是:
“距离小于epsilon的两点即为重合点”。

a(1.10, 2.10), b(1.15, 10.21), c(1.15, 20.21), d(1.20, 2.10)

这四点按照x排序,如果x相同,则按照y排序。系统精度为0.1

但是a, d 才是重合点。a、b 和 a、c 和 b、c 和 c、d 等等都不是重合点。
如果仅仅按照x排序,形成的效果是相同的。

要想让重合点都集中在一起,中间不参杂其他不重合的点,这恐怕是很难做到的(当然要求排序算法的时间复杂度不能是O(n^2),应该几乎是线性的复杂度)。至少我没想出好办法。所以我只能按照x排序,让重合的点尽量集中。
csdn3141 2004-05-02
  • 打赏
  • 举报
回复
我的意思是用2d索引,不光x轴,y轴也用,岂不更快
alphapaopao 2004-05-02
  • 打赏
  • 举报
回复
求教你的思路,请不吝赐教。

我这个算法用于形成曲线之间的拓扑关系。输入数据是曲线的几何信息,需要在几何信息上建立拓扑信息。
csdn3141 2004-05-02
  • 打赏
  • 举报
回复
什么背景,我的思路比你的还要好
alphapaopao 2004-05-02
  • 打赏
  • 举报
回复
本算法有应用背景的

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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