1.什麼是簡單圖:
沒有平行邊和自環
什麼是平行邊?對於無向圖,如果兩個點之間有一條以上的邊,則這些邊是平行邊;
對於有向圖,如果一個點指向另一個點的邊多於一條,則這些邊是平行邊
什麼是自環?邊的兩個端點是同一個點
2.度序列
一個由圖的各個點的度數組成的序列
3.Havel_Hakimi定理:用於判斷一個度序列能否轉換成一個簡單圖
流程:度序列按降序排列
初始i=0,除去第i個點d[i],i+d[i]的每個點度數一次減1
i++,重複上述步驟
如果當前度數最大的點的度數大於總的點數,則不能組成圖
如果-1後,有的點的度數出現負數,則不能組成圖
執行完循環後,如果最後一個點的度數不爲0,則不能組成圖
核心代碼如下:
bool Havel_Hakimi(){
for(int i=0; i<n-1; ++i){
sort(arr+i,arr+n,greater<int>());
if(i+arr[i] >= n) return false;
for(int j=i+1; j<=i+arr[i] ; ++j){
--arr[j];
if(arr[j] < 0) return false;
}
}
if(arr[n-1]!=0) return false;
return true;
}
參考博客:Havel_Hakimi