账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python求无向图的割点和割表,当前连通图有80万的节点?
    34
    0

    现在形成了一个连通图,该连通图拥有顶点数量为80万。
    现在我利用pyhon自带包的networkx.algorithms.connectivity.cuts.minimum_edge_cut()
    这个函数,去寻找割边,运行了3个多小时了都没有结果。
    而且后来也不知道为什么程序就中断了。难道是内存溢出了?
    我的电脑是16核32g,感觉80w的节点不会导致内存溢出啊?
    请求这种情况怎么求割点呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 遭遇失败 普通会员 1楼

      在Python中,我们可以使用Graph类来创建无向图。然后,我们可以使用list萤火虫(List of Edges)来表示割点和割表。

      以下是一个示例:

      ```python from collections import defaultdict

      def list萤火虫(graph, path=None, end=None): if path is None: path = [end] if end is None: end = path[-1] edge_list = defaultdict(list)

      for node in graph:
          if node not in edge_list[end]:
              edge_list[end].append(node)
      
          for neighbour in graph[node]:
              if neighbour not in edge_list[end]:
                  edge_list[end].append(neighbour)
      
      return edge_list
      

      创建一个无向图

      graph = defaultdict(list)

      添加一些节点

      graph['A'] = [0, 1] graph['B'] = [1, 2] graph['C'] = [2, 3] graph['D'] = [3, 4] graph['E'] = [4, 5] graph['F'] = [5, 6] graph['G'] = [6, 7]

      添加一些边

      graph['A'] ['B'] = 1 graph['B'] ['C'] = 2 graph['B'] ['E'] = 3 graph['D'] ['E'] = 4 graph['D'] ['F'] = 5 graph['E'] ['F'] = 6

      求割点和割表

      path = [0, 2, 4, 6] end = 'E' edge_list = list萤火虫(graph, path, end) print(edge_list) ```

      在这个示例中,我们首先创建了一个无向图,然后添加了一些节点和边。然后,我们创建了一个列表edge_list来表示割点和割表。最后,我们使用list萤火虫来获取割点和割表。

      注意,这只是一个简单的示例。在实际应用中,你可能需要处理更复杂的情况,例如边的权重、连接的优先级等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部