给定一个度数序列({d}),判断是否可以根据这个度数序列构造出简单无向图。
Havel–Hakimi algorithm:
一个度数序列可以构成简单无向图,当且仅当将这个序列({d})降序排序之后,将(d_1)后面的(d_1)个数(-1),并将(d_1)从序列中除去,形成的新度数序列没有负数,且新的度数序列可以构成简单无向图。
于是我们发现,利用这个方法递归地判断,最后一定以出现负数或者全零序列结束,时间复杂度(Theta(n^2)),同时我们可以根据这个算法构造出图的邻接矩阵。
例题:poj1659
Erdős–Gallai theorem:
一个度数序列可以构成无向图,当且仅当将({d})降序排序之后:
[forall kin [1,n] sum_{i=1}^{k}d_ileq k(k-1)+sum_{i=k+1}^{n}min(d_i,k)
]
时间复杂度(Theta(n)),但是这种算法只可以进行判定,不可以构造出具体的图。
为了方便记忆,我们可以这样粗略地理解式子的含义:一段前缀他们的度数可以通过自己内部的(k)个点互相连边和后面的(n-k+1)个点来贡献。
例题:New Year and the Acquaintance Estimation