社区
数据结构与算法
帖子详情
计算几何, 算法分析
HOVERKSY
2010-04-14 02:08:35
简单多边形 p被称做星形多边形(star-shaped), 如果其中存在某个点q,使得对于该多边形内的任何点P, 线段pq完全落在p内. 给出一个算法,判断任何给定的简单多边形是否为一个星形多边形. 该算法的期望运行时间必须是线性的.
...全文
232
18
打赏
收藏
计算几何, 算法分析
简单多边形 p被称做星形多边形(star-shaped), 如果其中存在某个点q,使得对于该多边形内的任何点P, 线段pq完全落在p内. 给出一个算法,判断任何给定的简单多边形是否为一个星形多边形. 该算法的期望运行时间必须是线性的.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liukehua123
2010-04-16
打赏
举报
回复
经典问题,UP……
knate
2010-04-15
打赏
举报
回复
楼上的能不能给我解释一下,
这两个图形,你是怎么划分的,实在看不懂你写的术语
超级大笨狼
2010-04-15
打赏
举报
回复
半平面判断是否和凸包相交,取凸包最靠(左/右)的顶点就可以,不需要判断所有顶点,所以是T(n
超级大笨狼
2010-04-15
打赏
举报
回复
所以才建议你买书啊
http://academic.research.microsoft.com/Paper/271274.aspx?query=star-shaped
这篇文章你可以看看,是把一个空心汉字"至"字分解成星形多边形的.
超级大笨狼
2010-04-15
打赏
举报
回复
三角化,同时可以找到所有耳
找到凸包最左或者最右的点Max,这一切都在 O(n)内完成。
再用m个耳的延长线形成的半平面去检测Max,注意:只有一个Max,循环的是m,所以Q(m)
总体复杂度是O(n)+Q(m) 其中m是耳的 数量,m<=n
所以是线性的
超级大笨狼
2010-04-15
打赏
举报
回复
要对O(n)条线判断是否和凸包相交,是O(n)
因为,你找到凸包最左或者最右的点,需要O(n)时间。
然后循环判断N个射线,都是拿这个点就可以了 。
判断这点是在两条射线区域的左还是右就可以了。需要Q(1)时间忽略不计。
情况1: 。/\
情况2: /。\
情况3: /\。
从点向x轴最大方向引抽象射线,就可以知道这点在线段的左还是右。就知道是否相交,不需要求交点。
GCCFeli
2010-04-15
打赏
举报
回复
[Quote=引用 10 楼 superdullwolf 的回复:]
这个问题其实是求“凸包”和“半平面”是否相交的问题。
首先要明确:“凸包”是“星形”的,而且“核”就是本身。
对于任意“简单多边形”,可以“三角化”去掉“耳”,就是从一点出发,遇到角大于180的就不管,遇到小于180,就去掉这个三角,回到出发点,得到一个凸包。复杂度O(n)
然后,对每个“凸点”的延长线构成的半平面判断是否和凸包相交。
判断“相交”比求“交点”容易多了,只要取……
[/Quote]
大哥,你说的这个“耳”是什么意思呢?而且,你没说从一个点出发是顺时针走还是逆时针走……你说的去“耳”完毕之后得到一个凸包,这个凸包的点数是O(n)的吧,要对O(n)条线判断是否和凸包相交,要O(n^2)吧?怎么是O(n)的呢?
超级大笨狼
2010-04-14
打赏
举报
回复
这个问题其实是求“凸包”和“半平面”是否相交的问题。
首先要明确:“凸包”是“星形”的,而且“核”就是本身。
对于任意“简单多边形”,可以“三角化”去掉“耳”,就是从一点出发,遇到角大于180的就不管,遇到小于180,就去掉这个三角,回到出发点,得到一个凸包。复杂度O(n)
然后,对每个“凸点”的延长线构成的半平面判断是否和凸包相交。
判断“相交”比求“交点”容易多了,只要取凸包的顶点向x轴引射线,有单数个交点就是在里边,偶数就穿出去了。
所以以上总体复杂度是O(n)+T(n)线性的。
建议买本《计算几何》或者也叫《算法几何》看看,北理工周培德老师的不错,就是有点难。
上边所有带引号的,都是计算几何的概念或术语,请自行查找。
jakiejiajia
2010-04-14
打赏
举报
回复
先占个位置,明天再说
sosidami
2010-04-14
打赏
举报
回复
半平面求交的方法可以过,但好像不是线性的吧!
jeromeyu
2010-04-14
打赏
举报
回复
顶一个,高手来解析一下!
GCCFeli
2010-04-14
打赏
举报
回复
我觉得用随机化的半平面交,期望应该是线性的。
GCCFeli
2010-04-14
打赏
举报
回复
这个问题很经典,我有个做法是nlogn的,就是把多边形的每条边看作半平面,求半平面交,如果交出来的面积>0那么就是星形多边形。线性做法我还要想想
yaoweijq
2010-04-14
打赏
举报
回复
判定方法是先将所有边两两求出交点,然后依次判断这些交点是不是中点,只要有一个是,多边形就是星形多边形,否则就不是。因为可以证明,只要是星形多边形,这些交点中至少有一个一定是其中点。
判断P点是否是中点的方法是:所有顶点与P点之间连一条线,若有连线不全在多变形内,则不是中点。这个问题又可以转化为按一定的顺序(顺时针或逆时针)遍历每条边,看P点是否在所有边的同一侧(右侧或左侧),是的话,P就是中点
学习中。。。
HOVERKSY
2010-04-14
打赏
举报
回复
楼上大哥能给出具体算法吗?
超级大笨狼
2010-04-14
打赏
举报
回复
其实就是在里边可以放个灯泡照亮所有角落.
算法
设计技巧与
分析
《
算法
设计技巧与
分析
》是国际著名
算法
专家李德财教授主编的系列丛书Lecture Notes Series on Computing中的一本。《
算法
设计技巧与
分析
》涵盖了绝大多数
算法
设计中的一般技术,在表达每一种技术时,阐述它的应用背景,注意用与其他技术比较的方法说明它的特征,并提供大量实际问题的例子。《
算法
设计技巧与
分析
》同时也强调了对每一种
算法
的详细的复杂性
分析
。全书分七部分19章,从
算法
设计和
算法
分析
的基本概念和方法入手,先后介绍了递归技术、分治、动态规划、贪心
算法
、图的遍历等技术,对NP完全问题进行了基本但清楚的讨论。对概率
算法
、近似
算法
和
计算几何
这些近年来发展迅猛的领域也用一定的篇幅讲述了基本内容。书中每章后都附有大量的练习题,有利于读者对书中内容的理解和应用。, 《
算法
设计技巧与
分析
》结构简明,内容丰富,适合于作为计算机学科及相关学科
算法
课程的教材和参考书,尤其适宜于学过数据结构和离散数学课程之后的
算法
课程教材。同时也可作为从事
算法
研究的一本好的入门书。
C++
算法
大全 PDF
C++ 经典
算法
大全。内容详细,
算法
经典。很值得一看。
结构之法
算法
之道全部博文集锦第三期CHM文件
此份CHM文件是从2010年10月11日至2011年7月8日,结构之法
算法
之道- CSDN博客内全部博文集锦的第三期CHM文件。
计算几何
——
算法
分析
与设计:开启几何世界的大门
计算几何
——
算法
分析
与设计:开启几何世界的大门 去发现同类优质开源项目:https://gitcode.com/ 在计算机科学和数学领域,
计算几何
算法
分析
与设计一直是一个关键且充满挑战的课题。下面,我们将深入探讨一个名为“
计算几何
——
算法
分析
与设计”的开源项目,了解它的核心功能、技术
分析
、应用场景以及项目特点。 项目介绍 “
计算几何
——
算法
分析
与设计”项目为我们带来了《
计算几何
——
算法
分析
与设计》...
探索
计算几何
的魅力:开源书籍《
计算几何
算法
与应用》pdf下载指南
探索
计算几何
的魅力:开源书籍《
计算几何
算法
与应用》pdf下载指南 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 提供经典
计算几何
书籍《
计算几何
算法
与应用》的pdf下载,助力学术研究。 项目介绍 在计算机科学和数学领域中,
计算几何
是一个极为重要的分支。它不仅涉及几何形状的基本理论,还包括如何设计和
分析
算法
来处理几何问题。今天,我们要介绍的是一个开源项目,它提供...
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章