關於二分圖染色的幾點總結
阿新 • • 發佈:2018-11-19
二分圖染色的概念:
- 二分圖染色是一種用來判斷給定圖(有向圖或無向圖)是否是二分圖的演算法。
- 在圖上不斷進行BFS或DFS,並在執行過程中不斷對結點進行"染色","染色"保證相鄰結點的顏色必然不同。如果無法保證,則這個圖就是二分圖.
二分圖染色時的注意事項:
二分圖染色的例題(難度由低到高):
- CF862B Mahmoud and Ehab and the bipartiteness(普及 提高-)
- P1330 封鎖陽光大學(普及+ 提高)
- P1525 關押罪犯(普及+ 提高)
- P1155 雙棧排序(提高+ 省選-)
二分圖染色的適用範圍:
- 只要是圖即可.
判斷一個圖是二分圖的充分條件:
- 圖上沒有邊數為奇數的環.
關於二分圖染色的總結:
- 染色性:在演算法的執行的過程中,會不斷對結點進行標記,也就是染色。在二分圖染色演算法中,結點往往只會被染成兩種染色,在這種情況下,我們往往可以使用兩個特定的數字,如:1或0來進行染色(因為可以直接使用^運算子,儲存資料的陣列初始化為-1即可).
- 遍歷性:在二分圖染色的過程中,會經過圖上的每一個點。在這一點上,她和其他圖上演算法是有著較大的相似性的(如:
- 簡單性:在二分圖染色的常見實現中,最常見的實現方法往往就是DFS或BFS染色的方法了。也因為她"易於實現"的特性,在實際實踐中,二分圖染色可能是比較容易想到的一部分,但也是比較重要的一部分.
- 數學性質:由於判斷一個圖是否為二分圖的充分條件中,我們的判斷依據與邊的"數量"有關,因此,在一些情況下,我們應該是可以通過圖上的邊數或邊的特性來推理這個圖是否為二分圖(如:DAG必然為二分圖).
- 二分性:在遇到一些需要將一些物件分成兩個不同的部分的情況時,可以考慮使用二分圖染色判斷是否為二分圖,就能得到一個與解相關的結論:該問題是否可解.