Re: [问题] 计算几何 - stabbing line

楼主: Leon (Achilles)   2013-12-04 15:35:48
※ 引述《DJWS (...)》之铭言:
: ※ 引述《FRAXIS (喔喔)》之铭言:
: : 我在网络上看到一个问题:
: : 给定n条垂直的线段,设计一个线性的算法找出是否存在一条直线,
: : 使得此直线与此n条线段都相交。
: : 我的解法是基于二维线性规划,感觉是比较不直接的方法。
: : 有没有比较直接的方法呢?
: : 原文如下:
: : You are given a set of n vertical line segments in the plane.
: : Present an O(n) efficient algorithm to determine whether
: : there exists a line that intersects all of these segments.
: 重发一篇...
: 假设这些垂直线段已经由左到右排列好
: 线段有上端点和下端点
: 所有线段上端点,找往朝下凸包 O(N) (monotone chain)
: 所有线段下端点,找到朝上凸包 O(N)
: 朝下凸包和朝上凸包之间的区域,就是直线可能存在的区域
: 如果两个凸包有内公切线,就存在一条直线穿过所有线段
: 如果两个凸包不相交(交集的面积是零),就有内公切线,就存在一条直线穿过所有线段
: 要判断两个凸包是否相交是O(N)
嗯, 抱歉我看不懂你想说折么.
你的朝上凹包 是 convex polygen 吗?
朝下凹包是什么? concave polygen ?
要是只有三条线, 你永远会找到 convext polygen
你的算法怎么办?
作者: ZanFu5566 (仁甫56 优质56 清新56)   2013-02-04 18:50:00
what if lines are not sorted at start?
作者: neutrino (十年一梦)   2013-02-04 19:17:00
我想他说的是 找上端点们的lower hull, 下端点们的upperhull如此理解的话, 他的方法好像会对
作者: DJWS (...)   2013-02-04 19:34:00
我的意思如楼上所言 朝下凸包lower hull 朝上凸包upper hull英翻中翻译的不好请多见谅再来回复一楼 如果一开始没排序,那么我也不知道怎么做
作者: FRAXIS (喔喔)   2013-02-04 20:49:00
LEON的解法应该不用排序吧 因为可以用O(n)的时间找出u_1不过我有点怀疑正确性.. 为什么只要判断u_1?
作者: seanwu (海恩)   2013-02-04 22:00:00
原po应该是假定会过u_1所以这样做吧...不过当然不一定会再说,就算是要求过u_1的直线也不对,例如垂直线 (0,2)-(0,5), (1,1)-(1,4), (3,0)-(3,3)这样只会看到 (0,5)-(3,3) 和 (0,5)-(1,1)应该要以u_1为中心照角度排,不是y座标
作者: scwg ( )   2013-02-04 22:26:00
莫明其妙. DJWS 的做法解释简单明了也被你嫌. 你的做法最左边那条延长到正负无限大才不知道要怎么办咧
作者: yoco315 (眠月)   2013-02-06 10:44:00
的确是简单明了,不能理解以 Leon 的程度怎么可能会看不懂

Links booklink

Contact Us: admin [ a t ] ucptt.com