cuthill_mckee_ordering#
- cuthill_mckee_ordering(G, heuristic=None)[source]#
生成图节点的排序(置换)以形成稀疏矩阵。
使用Cuthill-McKee启发式算法(基于广度优先搜索)[1]。
- Parameters:
- G图
一个NetworkX图
- heuristic函数, 可选
用于选择RCM算法起始节点的函数。如果为None,则使用伪外围对中的节点。用户可以提供一个函数,该函数接受一个图对象并返回一个节点。
- Returns:
- nodes生成器
Cuthill-McKee排序中的节点生成器。
See also
Notes
带宽缩减的最优解是NP完全问题[2]。
References
[1]E. Cuthill和J. McKee。 减少稀疏对称矩阵的带宽, 在Proc. 24th Nat. Conf. ACM,第157-172页,1969年。 http://doi.acm.org/10.1145/800195.805928
[2]Steven S. Skiena. 1997. 算法设计手册。 Springer-Verlag New York, Inc., 纽约,NY,USA。
Examples
>>> from networkx.utils import cuthill_mckee_ordering >>> G = nx.path_graph(4) >>> rcm = list(cuthill_mckee_ordering(G)) >>> A = nx.adjacency_matrix(G, nodelist=rcm)
使用最小度节点作为启发式函数:
>>> def smallest_degree(G): ... return min(G, key=G.degree) >>> rcm = list(cuthill_mckee_ordering(G, heuristic=smallest_degree))