1. 程式人生 > >關於弦圖一些問題的解法

關於弦圖一些問題的解法

preview review frame mathjax color 鏈表 ssis ++ 當前

完美消除序列($MCS$算法):

每個點記錄一個勢,表示與它相鄰的已經在完美消除序列的點的個數。

先把$n$號點弄出來,然後每次把勢最大的弄出來,這樣依次求出的點的逆序就是完美消除序列,使用鏈表或動態數組可以讓復雜度降至$O(n)$

代碼:

1 for (RG int i=1;i<=n;++i) ep[0].push_back(i);
2 for (RG int i=n,now;i;--i){
3     while (1){
4     now=ep[best].back(); if (!l[now]) break;
5     ep[best].pop_back(); while
(ep[best].empty()) --best; 6 } 7 l[now]=i,p[i]=now; 8 }

最小染色:求出完美消除序列以後逆序把當前點設一個與相鄰點都不同的顏色。

最大獨立集:求出完美消除序列以後從前往後能選則選。

最小團覆蓋:最大獨立集=最小團覆蓋。

極大團:還沒看懂。。

區間圖和完美圖以後再補。。

關於弦圖一些問題的解法