在python3中执行DFS时,最大递归深度超过,无法通过增加限制解决]]

问题描述 投票:0回答:1

我编写了一个程序,该程序计算给定图中5个最大SCC的大小。图中的节点数为875714。以下是我在问题中使用的基本DFS代码。 (两个函数都是类中的方法)

def DFSloop(self):
    exp = [False] * (self.size + 1)

    for i in range(1,(self.size + 1)):
        if exp[i] == False:
            self.DFS(i, exp) 

def DFS(self, s, exp):
    exp[s] = True
    for vertex in self.g[s]:
        if exp[vertex] == False:
            self.DFS(vertex, exp)

基本上,DFS必须递归很多,因为节点和边缘的数量很大。即使将递归限制设置为10,000,也显示以下错误

RuntimeError: maximum recursion depth exceeded in cmp

然后将限制增加到100,000,它显示:

Segmentation fault: 11

然后系统崩溃。对克服这种情况有帮助吗?

我编写了一个程序,该程序计算给定图中5个最大SCC的大小。图中的节点数为875714。以下是我在问题中使用的基本DFS代码。 (都...

python-3.x recursion depth-first-search
1个回答
0
投票

我通过使用堆栈而不是使用递归来克服了类似的问题。

© www.soinside.com 2019 - 2024. All rights reserved.