| | import networkx as nx |
| | from networkx.utils import reverse_cuthill_mckee_ordering |
| |
|
| |
|
| | def test_reverse_cuthill_mckee(): |
| | |
| | |
| | G = nx.Graph( |
| | [ |
| | (0, 3), |
| | (0, 5), |
| | (1, 2), |
| | (1, 4), |
| | (1, 6), |
| | (1, 9), |
| | (2, 3), |
| | (2, 4), |
| | (3, 5), |
| | (3, 8), |
| | (4, 6), |
| | (5, 6), |
| | (5, 7), |
| | (6, 7), |
| | ] |
| | ) |
| | rcm = list(reverse_cuthill_mckee_ordering(G)) |
| | assert rcm in [[0, 8, 5, 7, 3, 6, 2, 4, 1, 9], [0, 8, 5, 7, 3, 6, 4, 2, 1, 9]] |
| |
|
| |
|
| | def test_rcm_alternate_heuristic(): |
| | |
| | G = nx.Graph( |
| | [ |
| | (0, 0), |
| | (0, 4), |
| | (1, 1), |
| | (1, 2), |
| | (1, 5), |
| | (1, 7), |
| | (2, 2), |
| | (2, 4), |
| | (3, 3), |
| | (3, 6), |
| | (4, 4), |
| | (5, 5), |
| | (5, 7), |
| | (6, 6), |
| | (7, 7), |
| | ] |
| | ) |
| |
|
| | answers = [ |
| | [6, 3, 5, 7, 1, 2, 4, 0], |
| | [6, 3, 7, 5, 1, 2, 4, 0], |
| | [7, 5, 1, 2, 4, 0, 6, 3], |
| | ] |
| |
|
| | def smallest_degree(G): |
| | deg, node = min((d, n) for n, d in G.degree()) |
| | return node |
| |
|
| | rcm = list(reverse_cuthill_mckee_ordering(G, heuristic=smallest_degree)) |
| | assert rcm in answers |
| |
|