Given a list of n natural numbers d1, d2,...,dn, show how to decide in polynomial time whether there exists an undirected graph G = (V; E) whose node degrees are precisely the numbers d1,d2,..., dn. G should not contain multiple edges between the same pair of nodes, or"loop" edges with both endpoints equal to the same node.
判断序列S:=6,5,4,3,3,3,2,0 是否可图。
证:a. 删除首元素6,将除去第一个元素后面的6个元素减一,得到:S1 = 4,3,2,2,2,1,0
b.删除首元素4,将除去第一个元素后面的4个元素减一,得到:S2 = 2,1,1,1,1,0
c,删除首元素2,将除去第一个元素后面的2个元素减一,得到:S3 = 0,0,1,1,0
d.重新排序:S4 = 1,1,0,0,0
e.删除首元素1,将除去第一个元素后面的1个元素减一,得到:S3 = 0,0,0,0
则最后得到的是非负序列,证明 序列式可图的!
判断序列S:=7,6,4,3,3,3,2,1 是否可图。
证:a. 删除首元素7,将除去第一个元素后面的7个元素减一,得到:S1 = 6,3,2,2,2,1,0
b.删除首元素6,将除去第一个元素后面的6个元素减一,得到:S2 = 2,1,1,1,0,-1
最后得到的是存在负数的序列,证明 序列式不可图的!
代码:
booble Algorithm(int arr[]){
for(i=0;i<arr.length;i++){
sort(arr+i,arr+arr.length);//将数组的第i项到最后一项排序
for(j=i+1;j<arr.length;j++){
arr[j]--;
}
if(arr[arr.length-1!=0]) return false;
}
return ture;
}