1
============================
2
Generators - Degree Sequence
3
============================
7
>>> from networkx import *
8
>>> from networkx.generators.degree_seq import *
9
>>> from networkx.isomorph import graph_could_be_isomorphic
10
>>> is_isomorphic=graph_could_be_isomorphic # use fast but weak isomorphism checker
15
empty graph has empty degree sequence
17
>>> G=configuration_model(deg_seq)
21
>>> deg_seq=[5,3,3,3,3,2,2,2,1,1,1]
22
>>> G=configuration_model(deg_seq,seed=12345678)
23
>>> sorted(G.degree(),reverse=True)
24
[5, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1]
25
>>> sorted(G.degree(range(len(deg_seq))),reverse=True)
26
[5, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1]
28
test that fixed seed delivers the same graph
30
>>> deg_seq=[3,3,3,3,3,3,3,3,3,3,3,3]
31
>>> G1=configuration_model(deg_seq,seed=1000)
32
>>> G2=configuration_model(deg_seq,seed=1000)
33
>>> is_isomorphic(G1,G2)
35
>>> G1=configuration_model(deg_seq,seed=10)
36
>>> G2=configuration_model(deg_seq,seed=10)
37
>>> is_isomorphic(G1,G2)
41
>>> z=[5,3,3,3,3,2,2,2,1,1,1]
42
>>> is_valid_degree_sequence(z)
45
>>> G=havel_hakimi_graph(z)
46
>>> G=configuration_model(z)
47
>>> z=[1000,3,3,3,3,2,2,2,1,1,1]
48
>>> is_valid_degree_sequence(z)
53
empty graph has empty degree sequence
55
>>> G=expected_degree_graph(deg_seq)
59
test that fixed seed delivers the same graph
61
>>> deg_seq=[3,3,3,3,3,3,3,3,3,3,3,3]
62
>>> G1=expected_degree_graph(deg_seq,seed=1000)
63
>>> G2=expected_degree_graph(deg_seq,seed=1000)
64
>>> is_isomorphic(G1,G2)
66
>>> G1=expected_degree_graph(deg_seq,seed=10)
67
>>> G2=expected_degree_graph(deg_seq,seed=10)
68
>>> is_isomorphic(G1,G2)
73
Havel-Hakimi Construction
74
-------------------------
76
>>> G=havel_hakimi_graph(z)
77
Traceback (most recent call last):
79
NetworkXError: Invalid degree sequence
81
>>> z=["A",3,3,3,3,2,2,2,1,1,1]
82
>>> havel_hakimi_graph(z)
83
Traceback (most recent call last):
85
NetworkXError: Invalid degree sequence
87
>>> z=[5,4,3,3,3,2,2,2]
88
>>> G=havel_hakimi_graph(z)
89
>>> G=configuration_model(z)
90
>>> z=[6,5,4,4,2,1,1,1]
91
>>> is_valid_degree_sequence(z)
93
>>> G=havel_hakimi_graph(z)
94
Traceback (most recent call last):
96
NetworkXError: Invalid degree sequence
98
>>> z=[10,3,3,3,3,2,2,2,2,2,2]
99
>>> is_valid_degree_sequence(z)
101
>>> G=havel_hakimi_graph(z)
106
>>> z=[1, 1, 1, 1, 1, 2, 2, 2, 3, 4]
107
>>> is_valid_degree_sequence(z)
109
>>> G=degree_sequence_tree(z)
110
>>> len(G.nodes())==len(z)
112
>>> len(G.edges())==sum(z)/2
115
>>> z=[1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4]
116
>>> is_valid_degree_sequence(z)
118
>>> G=degree_sequence_tree(z)
119
Traceback (most recent call last):
121
NetworkXError: Degree sequence invalid
127
>>> from networkx.utils import *
128
>>> seq=create_degree_sequence(10,uniform_sequence)
131
>>> seq=create_degree_sequence(10,powerlaw_sequence)
135
>>> graph = barabasi_albert_graph(200,1)
137
>>> degreeStart = sorted(degree(graph))
139
>>> swaps = connected_double_edge_swap(graph, 40)
140
>>> is_connected(graph)
143
>>> degseq = sorted(degree(graph))
144
>>> degreeStart == degseq
147
>>> swaps = double_edge_swap(graph, 40)
148
>>> degseq2 = sorted(degree(graph))
149
>>> degreeStart == degseq2
153
Contruction of s-max graph
154
--------------------------
156
>>> z=["A",3,3,3,3,2,2,2,1,1,1]
158
Traceback (most recent call last):
160
NetworkXError: Invalid degree sequence
162
>>> z=[5,4,3,3,3,2,2,2]
163
>>> G=li_smax_graph(z)
171
>>> z=[6,5,4,4,2,1,1,1]
172
>>> is_valid_degree_sequence(z)
174
>>> G=li_smax_graph(z)
175
Traceback (most recent call last):
177
NetworkXError: Invalid degree sequence
179
>>> z=[10,3,3,3,3,2,2,2,2,2,2]
180
>>> is_valid_degree_sequence(z)
182
>>> G=li_smax_graph(z)