\(\quad\)設無向圖 \(g=(v,e)\) ,其中 \(v\) 是點集,\(e\) 是邊集,\(n=|v|\) 表示圖中點的數量,\(m=|e|\) 表示圖中邊的數量。
hamilton 通路
\(\quad\)經過圖 g 中每個節點一次且僅一次的通路稱為 \(hamilton\) 通路
hamilton 迴路
\(\quad\)經過圖 g 中每個節點一次且僅一次的通路稱為 \(hamilton\) 迴路
\(\quad\)特點:包含圖 g 中所有頂點,迴路中,除了起點和終點相同外,回路上各點不重複。
hamilton 圖
\(\quad\)存在 \(hamilton\) 迴路的圖稱為 \(hamilton\) 圖
hamilton 通路問題轉化為 hamilton 迴路問題
\(\quad\)乙個可行的做法是列舉通路的起點和終點,新增一條邊,轉化為對應的 \(hamilton\) 迴路問題
\(\quad\)目前這類問題其實並沒有完美的解決(尤拉迴路已經完美的解決了),也就是還無法判斷圖中是否存在 \(hamilton\) 通路、迴路。我們只能對節點較少的圖憑經驗去判定,下面給出一些必要條件和充分條件以及相應的簡單證明。
\(\quad\)定理 1:設無向圖 \(g=(v,e)\) 是 \(hamilton\) 圖,v1 是 v 的任意非空子集,則 \(p(g-v1)\leq|v1|\) ( \(p(g-v1)\) 指的是從 g 中刪去 v1 後得到的圖的聯通分支的數量)
\(\quad\)推論 1.1 :設無向圖 \(g=(v,e)\) 存在 \(hamilton\) 通路,則對 v 的任意非空子集 v1 ,都有 \(p(g-v1)\leq|v1|+1\)
\(\quad\)上述定理/推論對於判斷是否存通路/迴路很有用
\(\quad\)定理 2:設 \(g=(v,e)\) 是具有 \(n\) 個節點的簡單無向圖,如果對於任意兩個不相鄰的節點均有 \(deg(u)+deg(v)\geq n-1\),則一定存在 \(hamilton\) 通路
\(\quad\)推論 2.1 :設 \(g=(v,e)\) 是具有 \(n\) 個節點的簡單無向圖,如果對於任意兩個不相鄰的節點均有 \(deg(u)+deg(v)\geq n\),則一定存在 \(hamilton\) 迴路
\(\quad\)推論 2.2 :設 \(g=(v,e)\) 是具有 \(n\) 個節點的簡單無向圖,\(n\geq 3\),如果對於任意節點均有 \(deg(v)\geq n/2\),則存在 \(hamilton\) 迴路
競賽圖
\(\quad\)任意兩個點之間都恰好有一條邊的有向圖
推論1
\(\quad n(n\geq2)\) 階 (n 個頂點) 競賽圖一定存在哈密頓通路
\(\quad\)證明:考慮數學歸納法,對於第 k+1 個節點,考慮和第 k 個節點之間的邊的方向,如果方向是 \(k\to k+1\) 答案顯然,反之列舉 \(k-1,k-2,\cdots,1\) 和這個節點的方向,然後隨便構造一下就可以了。
推論2
\(\quad\)強連通競賽圖一定存在哈密頓迴路。(兩個條件在一定條件下可以互推)(證明類似於上面的過程)
推論3
\(\quad\)
\(n\) 個點的競賽圖中哈密頓迴路的總數是 \((n-1)!2^-n}\) 條
\(\quad\)證明:考慮列舉哈密頓迴路的環,剩下的隨便取方向。
推論 4
\(\quad\)競賽圖縮點後呈現的是鏈狀,比如:
哈密頓迴路
圖類 include include include include includeusing namespace std template t為頂點的資料型別,e為圖中邊的權值的資料型別 class graph 返回最大頂點數 int numberofedges 返回當前邊數 t getvalue...
哈密頓迴路
哈密頓迴路好多,其實不是很難,但是看了一天了。看一會睡一會,什麼狀態啊。view code 題目 題目分析 有敵對關係的小朋友,不能坐在一起。最後圍成乙個圈,吃飯。將小朋友看成點,有敵對關係的看成沒有邊,最後構成乙個迴路。哈密頓迴路。小小總結 哈密頓迴路 充分條件 無向連通圖中任意2點度數之和大於等...
最小哈密頓迴路
老楊留的作業,折騰幾個小時加上參考別人的終於寫出來了,還是很弱啊。效率貌似還可以,強化了分支定界的條件之後計算n 20的情況只需要十幾秒。好好體會一下 include include include include using namespace std define n 15 int curlig...