检查 NetworkX 中具有各种顶点标签的同构图是否相等
Check equality of isomorphic graphs with various vertex labels in NetworkX
我知道无论顶点标签如何检查 2 个图是否相等,可以使用 NetworkX 中的 is_isomorphic()
函数。然而,我有一组具有固定数量的节点、边和连通性的图,也就是说,它们彼此同构,但顶点的标签不断变化。在这种情况下,如何检查所有顶点标签也需要相同的图形是否相等?
每张图如下所示。每个顶点都用一个长字符串标记。
如 is_isomorphic
you can use for this the node_match
parameter. It also has two already implemented methods to compare equality based on node attributes: numerical_node_match
and categorical_node_match
的文档所述。在这两种情况下,您都需要提供节点属性的名称和默认值。
如果你想直接使用节点标签,即节点id,例如020000010000 in G == True
。然后您可以将 convert_node_labels_to_integers
与 label_attribute="label"
一起使用,然后再使用 categorical_node_match("label", None)
或创建您自己的 node_match
函数。
我知道无论顶点标签如何检查 2 个图是否相等,可以使用 NetworkX 中的 is_isomorphic()
函数。然而,我有一组具有固定数量的节点、边和连通性的图,也就是说,它们彼此同构,但顶点的标签不断变化。在这种情况下,如何检查所有顶点标签也需要相同的图形是否相等?
每张图如下所示。每个顶点都用一个长字符串标记。
如 is_isomorphic
you can use for this the node_match
parameter. It also has two already implemented methods to compare equality based on node attributes: numerical_node_match
and categorical_node_match
的文档所述。在这两种情况下,您都需要提供节点属性的名称和默认值。
如果你想直接使用节点标签,即节点id,例如020000010000 in G == True
。然后您可以将 convert_node_labels_to_integers
与 label_attribute="label"
一起使用,然后再使用 categorical_node_match("label", None)
或创建您自己的 node_match
函数。