获取投影的强连通分量

(函数来自 pyomo.contrib.incidence_analysis.triangularize)

pyomo.contrib.incidence_analysis.triangularize.get_scc_of_projection(graph, top_nodes, matching=None)[source]

返回二分图的拓扑排序强连通组件,相对于完美匹配进行投影

提供的无向二分图通过将“匹配边”视为出边和“未匹配边”视为入边,投影到“顶部节点”集合上的有向图。然后计算有向图的强连通分量。这些强连通分量是唯一的,无论选择哪种完美匹配。强连通分量形成一个有向无环图,并以拓扑顺序返回。顺序是唯一的,因为歧义通过“字典序”解决。

投影的“方向”(匹配的边是出边)导致当顶部节点对应于矩阵的二分图中的时,形成一个块三角排列。

Parameters:
  • graph (NetworkX Graph) – 一个二分图

  • top_nodes (list) – 图中的二分集之一

  • 匹配 (dict) – 将top_nodes中的每个节点映射到其匹配的节点

Returns:

外部列表是强连通组件的列表。每个强连通组件是匹配节点的元组列表。第一个节点是“顶部节点”,第二个是“其他节点”。

Return type:

list 的列表