基于“Havel Hakimi”算法的判断是否构成简单图的方法
第一步
观察度数为奇数的数列是不是偶数个,例如2,3,3,1这个数列的度数为奇数的数有奇数个,不能构成简单图
如果满足进入第二步
第二步
数列中有n个元素,则度数最大值不能超过n-1,例如1,3,这样的数列就无法构成简单图
如果满足进入第三步
第三步
首先将S={d1,d2,d3,d4,...,dn}进行降序排序
然后删除第一个元素,即最大的元素d[i],然后对后面的前d[i]个元素都减去一,以此递归下去
如果最后的数都是零的话,就可以构成简单图,如果出现负数或度数大于剩余点数的个数即无法构成简单图
例子
例如 1 1 1 2 3.
观察度数为奇数的有1,1,1,3 有四个,满足第一步
观察最大度数为3,小于5-1,故满足第二步
将数列降序排列 3 2 1 1 1
删去最大元素3,剩下的前3个元素减一,得到 1 0 0 1
再重新排序
1 1 0 0
删去最大元素1 剩下的前1个减去一,得到 0 0 0
故都是零向量,所以是简单图
再例如1, 2,3,4,5,5
同理前两步判断这个数列也满足
进行第三步
先排序
5,5,4,3,2,1
删去最大元素5,剩下的前5个元素减去一,得到4,3,2,1,0
排序后 删去最大元素4,剩下的前4个元素减去一, 2,1,0,-1 出现负数,故无法构成简单图