is_valid_degree_sequence_erdos_gallai#
- is_valid_degree_sequence_erdos_gallai(deg_sequence)[source]#
Returns True if deg_sequence can be realized by a simple graph.
The validation is done using the Erdős-Gallai theorem [EG1960].
- Parameters:
- deg_sequencelist
A list of integers
- Returns:
- validbool
True if deg_sequence is graphical and False if not.
Notes
This implementation uses an equivalent form of the Erdős-Gallai criterion. Worst-case run time is \(O(n)\) where \(n\) is the length of the sequence.
Specifically, a sequence d is graphical if and only if the sum of the sequence is even and for all strong indices k in the sequence,
\[\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 )\]A strong index k is any index where d_k >= k and the value n_j is the number of occurrences of j in d. The maximal strong index is called the Durfee index.
This particular rearrangement comes from the proof of Theorem 3 in [2].
The ZZ condition says that for the sequence d if
\[|d| >= \frac{(\max(d) + \min(d) + 1)^2}{4*\min(d)}\]then d is graphical. This was shown in Theorem 6 in [2].
References
[1]A. Tripathi and S. Vijay. “A note on a theorem of Erdős & Gallai”, Discrete Mathematics, 265, pp. 417-420 (2003).
[2] (1,2)I.E. Zverovich and V.E. Zverovich. “Contributions to the theory of graphic sequences”, Discrete Mathematics, 105, pp. 292-303 (1992).
[EG1960]Erdős and 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
To test a non-valid sequence: >>> sequence_list = [d for _, d in G.degree()] >>> sequence_list[-1] += 1 >>> nx.is_valid_degree_sequence_erdos_gallai(sequence_list) False