rustworkx.graph_vf2_mapping#

graph_vf2_mapping(first, second, /, node_matcher=None, edge_matcher=None, id_order=True, subgraph=False, induced=True, call_limit=None)#

返回两个PyGraph对象之间的所有vf2映射的迭代器

此函数将运行来自 is_isomorphic()is_subgraph_isomorphic() 的 vf2 算法,但不同于返回布尔值,它将返回一个迭代器,包含从 firstsecond 发现的所有可能节点 ID 映射。如果图不同构,则迭代器将为空。一个获取单个映射的简单示例如下:

graph_a = rustworkx.generators.path_graph(3)
graph_b = rustworkx.generators.path_graph(2)
vf2 = rustworkx.graph_vf2_mapping(graph_a, graph_b, subgraph=True)
try:
    mapping = next(vf2)
except StopIteration:
    pass
Parameters:
  • first (PyGraph) – 用于寻找映射的第一个图

  • second (PyGraph) – 第二个图,用于查找映射

  • node_matcher – 一个可选的python可调用对象,它接受2个位置参数,分别对应两个图中的节点数据对象。如果此函数的返回结果为True,那么传递给它的节点被视为匹配。

  • edge_matcher – 一个 Python 可调用对象,它接受 2 个位置参数(每个参数对应于一个边的数据对象)。如果该函数的返回值为 True,则传递给它的边被视为匹配。

  • id_order (布尔值) – 如果设置为 False,此函数将使用基于[VF2]论文的启发式匹配顺序。否则将默认按照节点ID指定的顺序进行匹配。

  • subgraph (bool) - 如果设置为 True,该函数将返回在图中找到的同构子图。

  • induced (bool) – 如果设置为 True,此函数将检查是否存在第一个图同构于第二个图的节点诱导子图。 默认值:True

  • call_limit (int) – VF2算法在搜索解过程中可访问状态数的可选上限。如果超过此限制,算法将停止。默认值:None

Returns:

first节点索引到second中节点索引的字典迭代器,表示找到的映射关系。

Return type:

可迭代对象[NodeMap]