is_valid_degree_sequence_erdos_gallai#
- is_valid_degree_sequence_erdos_gallai(deg_sequence)[source]#
如果度序列可以通过简单图实现,则返回 True。
验证使用的是 Erdős-Gallai 定理 [EG1960]。
- Parameters:
- deg_sequence列表
一个整数列表
- Returns:
- valid布尔值
如果 deg_sequence 是图形的则返回 True,否则返回 False。
Notes
此实现使用了 Erdős-Gallai 准则的等价形式。 最坏情况下的运行时间是 \(O(n)\),其中 \(n\) 是序列的长度。
具体来说,序列 d 是图形的当且仅当序列的和是偶数,并且对于序列中的所有强索引 k,
\[\sum_{i=1}^{k} d_i \leq k(k-1) + \sum_{j=k+1}^{n} \min(d_i,k) = k(n-1) - ( k \sum_{j=0}^{k-1} n_j - \sum_{j=0}^{k-1} j n_j )\]强索引 k 是任何满足 d_k >= k 的索引,值 n_j 是 j 在 d 中的出现次数。最大强索引称为 Durfee 索引。
这种特定的重排来自 [2] 中定理 3 的证明。
ZZ 条件表示,对于序列 d,如果
\[|d| >= \frac{(\max(d) + \min(d) + 1)^2}{4*\min(d)}\]则 d 是图形的。这在 [2] 中的定理 6 中被证明。
References
[1]A. Tripathi 和 S. Vijay. “A note on a theorem of Erdős & Gallai”, Discrete Mathematics, 265, pp. 417-420 (2003).
[2] (1,2)I.E. Zverovich 和 V.E. Zverovich. “Contributions to the theory of graphic sequences”, Discrete Mathematics, 105, pp. 292-303 (1992).
[EG1960]Erdős 和 Gallai, Mat. Lapok 11 264, 1960.
Examples
>>> G = nx.Graph([(1, 2), (1, 3), (2, 3), (3, 4), (4, 2), (5, 1), (5, 4)]) >>> sequence = (d for _, d in G.degree()) >>> nx.is_valid_degree_sequence_erdos_gallai(sequence) True
测试一个非有效的序列: >>> sequence_list = [d for _, d in G.degree()] >>> sequence_list[-1] += 1 >>> nx.is_valid_degree_sequence_erdos_gallai(sequence_list) False