rustworkx.is_subgraph_isomorphic#
- is_subgraph_isomorphic(first, second, node_matcher=None, edge_matcher=None, id_order=False, induced=True, call_limit=None)[source]#
确定两图是否为子图同构
本功能检查两个图是否在结构上为子图同构,同时使用提供的匹配器函数比较节点和边数据。 匹配器函数接收两个数据对象并进行比较。 由于术语"子图"存在模糊性,请注意当参数induced设为True时,我们检查节点诱导子图。 若设为False,则检查非诱导子图,意味着第二个图可以比第一个图的子图拥有更少的边。 默认值为True。一个检查两者是否完全相等的简单示例如下:
graph_a = rustworkx.PyGraph() graph_b = rustworkx.PyGraph() rustworkx.is_subgraph_isomorphic(graph_a, graph_b, lambda x, y: x == y)
- Parameters:
node_matcher (callable) — 一个 Python 可调用对象,需要接收 2 个节点数据对象作为位置参数。如果此函数的返回值判断为 True,则传入的节点被视为匹配。
edge_matcher (callable) – 一个 Python 可调用对象,接受 2 个位置参数(每个对应一个边的数据对象)。如果该函数的返回值计算结果为 True,则传递给它的边被视为匹配。
id_order (bool) – 如果设置为
True,此函数将按照节点 ID 指定的顺序匹配节点。否则,将默认为基于 [VF2] 论文的启发式匹配顺序。induced (bool) – 如果设置为
True,此函数将检查是否存在第一个图同构于第二个图的节点诱导子图。 默认值:True。call_limit (int) – VF2算法在搜索解决方案时可访问状态数的可选上限。若超过此限制,算法将停止并返回
False。
- Returns:
True如果存在 first 的同构子图与 second 对应 ,False如果不存在。- Return type:
布尔型