設計分析
源**圖的m著色問題。給定無向連通圖g和m種顏色,用這些顏色給圖的頂點著色,每個頂點一種顏色。如果要求g的每條邊的兩個頂點著不同顏色。給出所有可能的著色方案;如果不存在,則回答「no」。
考慮所有的圖,討論在至多使用m種顏色的情況下,可對一給定的圖著色的所有不同方法。通過回溯的方法,不斷的為每乙個節點著色,在前面n-1個節點都合法的著色之後,開始對第n個節點進行著色,這時候列舉可用的m個顏色,通過和第n個節點相鄰的節點的顏色,來判斷這個顏色是否合法,如果找到那麼一種顏色使得第n個節點能夠著色,那麼說明m種顏色的方案是可行的。
在用回溯法搜尋解空間樹時,通常採用兩種策略來避免無效搜尋,提高回溯法的搜尋效率。其一是用約束函式在擴充套件結點處剪去不滿足約束的子樹;其二是用限界函式剪去不能得到最優解得子樹。這兩類函式統稱剪枝函式。
運用回溯法解題通常包含以下三個步驟:
(1)針對所給問題,定義問題的解空間
(2)確定易於搜尋的空間結構
(3)以深度優先的方式搜尋解空間,並且在搜尋過程中用剪枝函式避免無效搜尋。
時間複雜度為o(n
mn)o(nm^)
o(nmn)
github源**
阿里 著色問題
寫出圖著色問題程式 乙個圓餅,被從中點畫半徑分成n等分,有k種顏色,每個區域不能和兩邊顏色相同.include include include include include 將乙個圓形等分城n個小扇形,將這些扇形標記為1,2,3,n。現在使用m種顏色對每個扇形進行塗色,每個扇形塗一種顏色,且相鄰的...
線段樹著色問題
線段樹節點記錄區間左右座標和區間顏色 如果父節點i表示 left,right 那麼父節點的左節點i 2表示區間 left,mid 有節點表示 mid 1,right 其中mid為left和right的中點 所有的節點存在tree陣列裡面 葉節點表示乙個點,即區間左右座標是一樣的 根節點代表區間 1,...
Polya 原理 著色問題
關於polya原理的應用經典例項 問題 用兩種顏色去染排成乙個圈的6個棋子,如果通過旋轉得到只算作一種。問有多少種染色狀態。解 先將棋子表上號 16 2 5 3 4那麼把所有通過旋轉m m大於等於0小於等於5 步的寫出來 1 6 5 6 2 5 1 4 6 5 3 4 2 3 1 4 3 2 m 0...