1. 程式人生 > 實用技巧 >圖的著色問題

圖的著色問題

問題:

 給定無向連通圖G和m種不同的顏色。用這些顏色為圖G的各頂點著色,
每個頂點著一種顏色。是否有一種著色法使G中每條邊的2個頂點著不
同顏色。這個問題是圖的m可著色判定問題。若一個圖最少需要m種
顏色才能使圖中每條邊連線的2個頂點著不同顏色,則稱這個數m為
該圖的色數。求一個圖的色數m的問題稱為圖的m可著色優化問題。
分析:
  1、問題的核心是保證每條邊的兩個頂點著色不同
  2、解決問題的核心思路是深度優先遍歷+回溯。從任意頂點開始著色(第一個頂點一定滿足條件),然後從相鄰頂點開始下一步著色,並且保證遵守著色規則。根據深度遍歷規則一直對頂點著色。
 當相鄰頂點著色失敗時,進行回溯,即當前頂點換一種顏色,直至著色失敗。
  3、遞迴結束條件:所有頂點著色成功;某一個頂點嘗試所有顏色後著色失敗。
  4、演算法目標;找到一種著色方案成功即可。

code: