社区
数据结构与算法
帖子详情
100分求解 快速找到包围点的最小三角形。
maoning
2008-07-11 02:53:00
一张平面图上有一堆随机分布的点(10万个左右),都有x y坐标
任意给定一个点A ,在这10W个点中 快速地找出三个点,它们构成的三角形 正好包围这个点A。
这10W个点可以做预处理。
笨办法肯定能实现,只不过速度太慢了。各位大虾有什么好的思路吗?
...全文
364
19
打赏
收藏
100分求解 快速找到包围点的最小三角形。
一张平面图上有一堆随机分布的点(10万个左右),都有x y坐标 任意给定一个点A ,在这10W个点中 快速地找出三个点,它们构成的三角形 正好包围这个点A。 这10W个点可以做预处理。 笨办法肯定能实现,只不过速度太慢了。各位大虾有什么好的思路吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lisa22722934
2008-07-29
打赏
举报
回复
[Quote=引用 8 楼 shanshuigulang 的回复:]
我想的是直接用A为圆心作圆,半径r为尽可能围住少的点,在这些点里面找你想要的。r 的步长应该可以很容易搞定的吧》?
[/Quote]
我觉得这个方法可行吧~~在一个随机的的小r为半径的圆中,用人工蚂蚁从A出发对圆内所有点只设置一步觅食(蚂蚁随机的只选择一个目标点进行移动),存储距离圆心最小的且没有重复路径的点,即假如此路径被走过,并且更新为当前最小值,就将这条路径上的信息素重新设置为0,后面的蚂蚁就不会再选择此路径。
不知道可行不~~~
八哥
2008-07-18
打赏
举报
回复
最小四边形或园都有方法
再多的点,只有构成凸多边形的顶点才是有效点,先遍历一次,找到凸多边形的顶点,
在顶点中找出距离最大的两个点AB,
求园的话 园心就是AB的中心点,半径为AB/2
求四边形的话,这两点就是四边形的对角线,然后分别从A点和B点延长多边形的四条边,相交后就得到一四边形。两边各组成一个三角形(共用AB边),
如果是三角形,下面是我的猜想: 找到边长最长的三条边延长后得到的三角形和最小三角形,只是猜想,没法证明
mathe
2008-07-14
打赏
举报
回复
而9楼中的算法,如果各个点的分布是足够随机的,从概率上来说,这个算法不会太慢(除非遇上很特殊的情况),很可能你算法的实现有问题.
但是需要说明的是9楼找到的不是面积最小的三角形
mathe
2008-07-14
打赏
举报
回复
可是你4楼说的不是求面积最小.
所以弄不清楚你最小的标准到底是什么?
maoning
2008-07-14
打赏
举报
回复
[Quote=引用 9 楼 mathe 的回复:]
题目还是描述得不清楚。
假设LZ要找的是一个能够包含A点,而三个顶点到A点最大距离最小的三角形(有可能不唯一,这时可以依次要求次大距离的和最小距离的点的距离尽量小)。
我们可以讲所有点按照到A点的距离进行排序。
然后依次可以事先取出所有到A点距离最近的K个点(比如选择K=3,4,5,...),
连接第K近距离的点B和A,判断前面K-1个点关于这条连线的分布(计算向量叉乘可以判断方向),如果全部在直线一侧,那么说明不存在…
[/Quote]
能包住点A的面积最小的三角形。这个三角形的三个定点在这10W个点里。您说的这个方法就是我现在用的方法,可是实践中速度很慢。
wincar
2008-07-14
打赏
举报
回复
如果10w个点分布不够随机,有的地方很密,有的地方没有。 可能就要做成树形层次结构的划分了,总之把计算限到小局部,再穷举也不怕
wincar
2008-07-14
打赏
举报
回复
同意11楼, 先把10w点按平面空间hash(相当于划成很多小格子), 这样就只要在以该点所在格子为中心的9个格子里寻找了。
caimps
2008-07-12
打赏
举报
回复
错别字:预处理
caimps
2008-07-12
打赏
举报
回复
既然可以与处理,先将10w点用聚类的方法分成若干组,并且定位置关系
给出随机点后先在其所属组内找,没有结果再在相邻组里找,必然有解,也避免了狭长三角形的可能性
mathe
2008-07-12
打赏
举报
回复
题目还是描述得不清楚。
假设LZ要找的是一个能够包含A点,而三个顶点到A点最大距离最小的三角形(有可能不唯一,这时可以依次要求次大距离的和最小距离的点的距离尽量小)。
我们可以讲所有点按照到A点的距离进行排序。
然后依次可以事先取出所有到A点距离最近的K个点(比如选择K=3,4,5,...),
连接第K近距离的点B和A,判断前面K-1个点关于这条连线的分布(计算向量叉乘可以判断方向),如果全部在直线一侧,那么说明不存在以B为最大距离端点的三角形包含A.我们需要选择下一个K,不然我们只要在连线两边各选择一个点就可以了。
山水孤狼
2008-07-12
打赏
举报
回复
昨天的想法有错误,抱歉。考虑到如下情况:三角形面积为 S=0.5*l*h。包含A点的三角形,如果出现h很大的情况下那么不可能出现在A点的附近。因此,应该从 l 或者 h 入手。如果从s入手,即,寻找距离最短的两点,连成线,另外找一点,看它们组成的三角形能否包含A点。可惜贴图不方便,要不然的话直观点。
山水孤狼
2008-07-11
打赏
举报
回复
我想的是直接用A为圆心作圆,半径r为尽可能围住少的点,在这些点里面找你想要的。r 的步长应该可以很容易搞定的吧》?
大王派我去巡山
2008-07-11
打赏
举报
回复
离A最近的三个点构成的三角形不一定能把A包住,你还是都有一个衡量“最小”的标准。
qingyaoli
2008-07-11
打赏
举报
回复
[Quote=引用 5 楼 youxia000 的回复:]
我想要遍历1次,把 街区距离最小的三个存下来就是了
不知道这个算不算是笨办法
期待
[/Quote]
这个不行吧,万一三个点在一条直线上?
youxia000
2008-07-11
打赏
举报
回复
我想要遍历1次,把 街区距离最小的三个存下来就是了
不知道这个算不算是笨办法
期待
maoning
2008-07-11
打赏
举报
回复
[Quote=引用 1 楼 dlyme 的回复:]
何谓最小?面积?
[/Quote]
就是离点A最近的三个点组成的三角形
hagangqiou
2008-07-11
打赏
举报
回复
10万个点最多能够作出C3-10的5次方个组合的三角形,但是有绝大部分三角形是在点A外面。可以先排除那些在点外面的三角形。缩小搜索范围
zhaolinger2
2008-07-11
打赏
举报
回复
更快的方法……好像一时想不到……因为三角形的面积和这个点到三个顶点的距离好像没有什么特定关系,所以很难保证不出现这样一个面积最小的三角形,它的一个顶点离A很近,但是另外两个顶点却在“千里之外”。
大王派我去巡山
2008-07-11
打赏
举报
回复
何谓最小?面积?
matlab
最小
体积
包围
多项式曲线的单纯形.zip
在MATLAB编程环境中,我们经常需要处理各种数学问题,其中包括
找到
最小
体积
包围
多项式曲线的单纯形。这个任务是计算几何和数值
分
析的一个重要部
分
,它涉及到如何用一个简单的几何形状,如多面体,来尽可能精确地覆盖...
matlab开发-
最小
绑定对象的度量
接着,“
最小
边界
三角形
”(Minimum Bounding Triangle,MBT)则是用于
包围
数据
点
的
最小
面积
三角形
。虽然不如矩形常见,但在某些特定的几何问题和图形学应用中,它可能是更优的选择。MATLAB可能利用动态规划或
三角形
...
ACM 计算几何模板
这些内容涉及到在给定
点
集中
找到
具有特定几何性质的
点
对或区域,如最远的曼哈顿距离,最近的
点
对,以及
包围
所有
点
的
最小
圆。 9. 两圆交
点
、
三角形
外接圆、凸包 这里探讨了如何
找到
两个圆的交
点
,计算
三角形
的外接圆...
计算几何求凸包
在机器学习中,凸包可以用于数据降维,
找到
数据
点
的
最小
包围
区域;在图像处理中,求取物体轮廓的凸包有助于识别和
分
割。 总的来说,计算几何中的凸包问题是一个基础但关键的问题,掌握
求解
凸包的方法对于深入理解...
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章