acm.sgu.ru/problem.php?contest=0&problem=122
1959 年 william rowan hamilton 發明了乙個小玩具,這個玩具是乙個木刻的正十二面體,每面系正五角形,三面交於一角,共 20 個角,沒每個角上標有世界上乙個重要城市。他提出乙個問題:要求沿著正十二面體的邊尋找一條路,通過 20 個城市,而每個城市只通過一次,最後返回原地。hamilton 將此問題稱為周遊世界問題,並且坐了肯定的回答。
上面提到的問題就是經典的 hamilton 迴路問題。當然,還有另乙個著名的迴路問題——尤拉迴路問題,不同於 hamilton 迴路問題,尤拉問題已經得到了圓滿解決
設無向圖 g=(v, e),其中 v 是點集,e 是邊集, n=|v| 表示圖中點的數量,m=|e| 表示圖中邊的數量
hamilton 通路:經過圖 g 中每個節點一次且僅一次的通路稱為 hamilton 通路
hamilton 迴路:經過圖 g 中每個節點一次且僅一次的迴路稱為 hamilton 迴路
hamilton 圖:存在 hamilton 迴路的圖稱為 hamilton 圖
hamilton 通路問題轉化為 hamilton 迴路問題:
乙個可行的做法是列舉通路的起點和終點,新增一條邊,轉化為對應 hamilton 迴路問題
np經典問題,沒有完美的演算法。
充分條件:
定理:設 g=(v, e) 是具有 n 個節點的簡單無向圖(|v|=n),如果對於任意的兩個不相鄰的節點 u, v∈v,均有 deg(u)+deg(v)≥n-1,則 g 中一定存在 hamilton 通路。
證明:
首先證明滿足上述條件的圖是乙個聯通圖,然後用「延長通路法」找出一條 hamilton 通路
(1)、反證法證明滿足上述條件的圖是乙個連通圖:
假設 g 有兩個或者更多聯通分支。設乙個聯通分支有 n1 個節點,另乙個聯通分支有 n2 個節點。這兩個聯通分支中分別有節點 v1 和節點 v2。顯然:deg(v1)≤n1-1,deg(v2)≤n2-1。從而:deg(v1)+deg(v2)≤n1+n2-2≤n-2,與已知條件"對於任意的兩個不相鄰的節點 u, v∈v,均有 deg(u)+deg(v)≥n-1"矛盾,故 g 是聯通的
(2)、證明 g 中存在 hamilton 通路
設 p=v1v2...vk 為 g 中用「延長通路法」得到的「極大基本通路」,即 p 中的始點 v1 和終點 vk 不與 p 外的節點相鄰,顯然 k≤n
(ⅰ)、若 k=n,則 p 為 g 中經過所有節點的通路,即為 hamilton 通路
(ⅱ)、若 k
(a)、若在 p 上 v1 與 vk 相鄰,則 v1v2...vkv1 為僅經過 p 上所有節點的基本迴路
(b)、若在 p 上 v1 不與 vk 相鄰,假設 v1 在 p 上與 vi=v2,vi2,vi3,...,vij 相鄰(j 必然大於等於 2,否則 deg(v1)+deg(vk
)≤1+k-2
設 vk 與 vir-1(2≤r≤j) 相鄰,如下圖所示:在 p 中新增邊 (v1, vir),(vk, vir-1),刪除邊 (vir-1, vir) 得到基本迴路:
(ⅲ)、證明存在比 p 更長的通路
因為 k
對 p『 重複 (ⅰ)~(ⅲ),得到 g 中 hamilton 通路或比 p』 更長的基本通路,由於 g 中節點數目有限,故在有限步內一定能得到 g 中一條 hamilton 通路。
推論2.1:設 g=(v, e) 是具有 n 個節點的簡單無向圖,如果對於任意兩個不相鄰的節點 u, v∈v,均有 deg(u)+deg(v)≥n,則 g 中一定存在 hamilton 迴路
需要指出的是,推論2.1就是著名的 ore 定理
推論2.2:設 g=(v, e) 是具有 n 個節點的簡單無向圖,n≥3,如果對於任意的 u∈v,均有 deg(v)≥n/2,則 g 是 hamilton 圖。
曼哈頓距離
切雪兒距離距離是什麼?走過象棋的人就知道。這個距離其實就是max x i x j y i y j 就是兩個點之間的垂直距離和水平距離之間的最大的那個 這個就是象棋裡邊的國王和王后走的最短路 還有乙個歐式距離,別人稱之為歐幾里得距離,也就是我們初中高中學習的兩點之間的直線距離,sqrt x1 y1 2...
曼哈頓距離
題目 description 給出n個d維空間的點。求出曼哈頓距離最大的兩個點的曼哈頓距離。兩個點 x1,x2,xd x1,x2,xd 的曼哈頓距離為 x1 x1 x2 x2 xd xd input 第一行兩個整數n,d 1output 曼哈頓距離最大的兩個點的曼哈頓距離。dfs 位運算 公式推導 ...
曼哈頓交易 題解
眾所周知,這是一道莫隊題 雖然可以用主席樹 1e5 的區間且不易用線段樹維護的題可以用莫隊,已經有了 o n sqrt 的複雜度,這時再寫各種樹維護會達到 o n sqrt log 的複雜度,畢竟不是所有人都是wys。事實上多加入 刪除乙個點,就是單點修改,區間查詢的問題,單點分塊即可做到 o 1 ...