(b)若存在点Vi,Vj使得i<j, (V1,Vi)不在G中,但(V1,Vj)在G中。这时,因为di>=dj,必存在k使得(Vi, Vk)在G中但(Vj,Vk)不在G中。这时我们可以令GG=G-{(Vi,Vk),(V1,Vj)}+{(Vk,Vj),(V1,Vi)}。GG的度序列仍为d,我们又回到了情况(a)。
(以下演示转自 “每天进步一点点” 博客: http://sbp810050504.blog.51cto.com/2799422/883904)
下标
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
值
|
4
|
7
|
7
|
3
|
3
|
3
|
2
|
1
|
下标
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
值
|
7
|
7
|
4
|
3
|
3
|
3
|
2
|
1
|
下标
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
值
|
7
|
4
|
3
|
3
|
3
|
2
|
1
|
下标
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
值
|
6
|
3
|
2
|
2
|
2
|
1
|
0
|
下标
|
1
|
2
|
3
|
4
|
5
|
6
|
值
|
2
|
1
|
1
|
1
|
0
|
-1
|
5
|
4
|
3
|
3
|
2
|
2
|
2
|
1
|
1
|
1.
|
4
|
3
|
3
|
2
|
2
|
2
|
1
|
1
|
1.
|
3
|
2
|
2
|
1
|
1
|
2
|
1
|
1
|
1.
|
3
|
2
|
2
|
2
|
1
|
1
|
1
|
1
|
1.
|
2
|
2
|
2
|
1
|
1
|
1
|
1
|
1.
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1.
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1.
|
1
|
1
|
1
|
1
|
1
|
1
|
1.
|
0
|
1
|
1
|
1
|
1
|
1
|
1.
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
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; }
关于这个定理应用的题目:
1. poj 1659 :
http://poj.org/problem?id=1659
2. UVa 10720 - Graph Construction:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1661