Recursion 查找强连接组件-无递归
我需要找到有向图的强连通分量。 我决定使用Tarjan的算法。到现在为止,一直都还不错。 然而,我需要我的程序操作的数据集是巨大的,我得到了stackoverflow异常。我无法增加堆栈大小,因此需要找到其他解决方案 我可以将递归算法改为迭代算法,但我想知道是否有“更干净的解决方案” 我想不会,但我想在开始实现迭代版本之前确定一下Recursion 查找强连接组件-无递归,recursion,graph,components,Recursion,Graph,Components,我需要找到有向图的强连通分量。 我决定使用Tarjan的算法。到现在为止,一直都还不错。 然而,我需要我的程序操作的数据集是巨大的,我得到了stackoverflow异常。我无法增加堆栈大小,因此需要找到其他解决方案 我可以将递归算法改为迭代算法,但我想知道是否有“更干净的解决方案” 我想不会,但我想在开始实现迭代版本之前确定一下 谢谢你的建议 查找SCC的已知算法都基于DFS,DFS本质上是递归的,因此您基本上有以下选项: 生活在递归中。不是真正的选项,每个节点的递归将很快填满堆栈 用迭代重
谢谢你的建议 查找SCC的已知算法都基于DFS,DFS本质上是递归的,因此您基本上有以下选项:
- 生活在递归中。不是真正的选项,每个节点的递归将很快填满堆栈
- 用迭代重写递归,为DFS提供自己的堆栈。没那么难,我推荐这个
- 发明一种非递归算法。祝你好运
- 我也遇到了这个问题,我发现解决这个问题的最好方法是将所有代码传输到一个新线程,如下所示:
public class Class implements Runnable {
@Override
public void run() {
...
}
}
在你的主课上,你要做到:
public class Main {
public static void main(String[] args) {
Thread th = new Thread(null, new Class(), "solution", 32 << 20);
th.start();
}
}
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
公共类主{
公共静态void main(字符串[]args){
Thread th=new Thread(null,new Class(),“solution”,32你是说StackOverflow异常吗?这是一个正确的论坛-_-