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