rustworkx.digraph_vf2_mapping#

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

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

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

graph_a = rustworkx.generators.directed_path_graph(3)
graph_b = rustworkx.generators.direccted_path_graph(2)
vf2 = rustworkx.digraph_vf2_mapping(graph_a, graph_b, subgraph=True)
try:
    mapping = next(vf2)
except StopIteration:
    pass
Parameters:
  • 起始图 (PyDiGraph) – 查找映射对应关系的第一个图

  • second (PyDiGraph) – 需查找映射的第二个图

  • 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算法在搜索解决方案时最多可访问的状态数量。如果超过此限制,算法将停止执行。

Returns:

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

Return type:

可迭代对象[NodeMap]