原创 分治法最近點對問題

在二維平面上的n個點中,如何快速的找出最近的一對點,就是最近點對問題。     一種簡單的想法是暴力枚舉每兩個點,記錄最小距離,顯然,時間複雜度爲O(n^2)。     在這裏介紹一種時間複雜度爲O(nlognlogn)的算法。其實,

原创 凸多邊形矢量和

給定平面上兩個凸多邊形 P 和 Q , P 和 Q 的矢量和, 記爲 P + Q 定義如下: P + Q = { p + q } 所有的分別屬於 P 和 Q 的 p 和 q 。 多邊形矢量和在 motion planning 中也

原创 洋蔥三角剖分

給定一個平面上的點集, 目標是構造一個點集的三角剖分。  從Lennes 1911年二次時間複雜度的源算法到Chazelle 1991線性時間複雜度的算法, 前人已經做了許多關於提高三角剖分算法效率的研究。  這裏的焦點是關於一種特

原创 找公切線

公切線是同時與多邊形相切的簡單直線, 並且兩個多邊形都位於線的同一側。 換句話說, 一條公切線是一條與兩個多邊形都相切的線。 一個例子如下圖所示:  兩個不相交的凸多邊形和一條他們的公切線 事實上, 公切線可以通過多邊形間的一

原创 多邊形間並踵點對

有向切線 一個有向切線就如同其名字所闡述的。 有向切線在區分平行切線同向與反向時候是十分必要的。 進一步假設多邊形是順時針序的(當頂點順序排布時候是順時針的)並且多邊形的切線當多邊形在線的右側時候是正向的。 相反的, 當多邊形在切線

原创 最薄橫截帶

考慮下述設備放置問題:一個“消費羣體羣”的集合是以個體呈現爲平面上凸多邊形的一個家庭 F 給出的。 我們的目標是找到一個“設備”, 一條平面上的直線, 使得線到消費者的最大距離最小。 最後一點需要澄清。 直線與任何一個多邊形的距離都

原创 凸多邊形間對踵點對

有向切線 一個有向切線就如同其名字所闡述的。 有向切線在區分平行切線同向與反向時候是十分必要的。 進一步假設多邊形是順時針序的(當頂點順序排布時候是順時針的)並且多邊形的切線當多邊形在線的右側時候是正向的。 相反的, 當多邊形在切線

原创 凸多邊形交

給定兩個多邊形, 我們第一個需要討論的問題應該是:“他們相交嗎?”。 Chazelle 和 Dobkin 1980年在他們的一篇叫做“Detection is easier than computation”的論文中發表了一個對數時間

原创 題目列表(圖論)

=============================以下是最小生成樹+並查集====================================== 【HDU】 1213 How Many Tables 基礎並查集★ 1

原创 字典樹

轉載自http://www.wutianqi.com/?p=1359 又稱單詞查找樹,Trie樹,是一種樹形結構,是一種哈希樹的變種。典型應用是用於統計,排序和保存大量的字符串(但不僅限於字符串),所以經常被搜索引擎系統用於文本詞頻統計。

原创 對踵點對

切線 給定一個凸多邊形 P, 切線 l 是一條與 P 相交併且 P 的內部在 l 的一側的線。 這個概念與正交切線相似。  對踵點對 如果兩個點 p 和 q (屬於 P) 在兩條平行切線上, 那麼他們就形成了一個對踵點對。 兩條

原创 凸多邊形間最小距離

給定兩個非連接(比如不相交)的凸多邊形 P 和 Q, 目標是找到擁有最小距離的點對 (p,q) (p 屬於 P 且 q 屬於Q)。  事實上, 多邊形非連接十分重要, 因爲我們所說的多邊形包含其內部。 如果多邊形相交, 那麼最小距離就

原创 旋轉卡殼——凸多邊形的寬度

  凸多邊形的寬度定義爲平行切線間的最小距離。 這個定義從寬度這個詞中已經略有體現。 雖然凸多邊形的切線有不同的方向, 並且每個方向上的寬度(通常)是不同的。 但幸運的是, 不是每個方向上都必須被檢測。     我們假設存在一個線段 [a

原创 臨界切線

兩個凸多邊形間的臨界切線(一般被叫做CS線)是使得兩個多邊形分居線不同側的切線。 換句話說, 他們分隔了多邊形。CS線可以應用於motion planning, visibility 和 range fitting。 下圖是關於兩個多

原创 合併凸包

考慮如下問題: 給定兩個凸多邊形, 包含他們並的最小凸多邊形是怎樣的? 答案即合併凸包後得到的凸多邊形。 合併凸包可以通過一個低效的方式實現: 給定兩個多邊形的所有頂點, 計算這些點對應的凸包。 更高效的方法是存在的, 他依賴於多邊形