【问题标题】:Algorithm to extract subgraph of graph induced by a set of nodes?提取由一组节点引起的图子图的算法?
【发布时间】:2020-07-06 01:13:49
【问题描述】:

我有一个无向图G=(V,E),我想提取由一组节点诱导的G 的子图,该节点是V 的子集。现在我正在寻找在 Python 中执行此操作的算法?

【问题讨论】:

  • 您遇到了哪些问题?诱导子图的定义应该告诉您您需要做的一切:获取子集中的所有节点以及事件节点都在子集中的所有边。
  • 这个问题更适合其他堆栈交换社区,如交叉验证 (stats.stackexchange.com) 或数学 (math.stackexchange.com)

标签: python algorithm graph-theory graph-algorithm


【解决方案1】:

图应该表示为字典,其中键是顶点的编号,值是该顶点的邻接表,表示为一个集合。

现在给定S = {s1, s2, ..., sn},因此SV 的子集。建立一个字典来表示诱导图。它应该包含S 中的所有顶点,每个顶点都有空的邻接列表。

首先,我们初始化H

H = {}  # Initialize empty dictionary.

for si in S:
    H[si] = set()

然后我们用正确的边缘填充H

for si in S:
    adj = G[si]
    for v in adj:
        if v in S: 
            H[si].add(v) 
            H[v].add(si) 

复杂度:O(V + E)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2020-07-08
    • 1970-01-01
    • 2012-07-11
    • 2012-06-12
    相关资源
    最近更新 更多