Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Welzl'的迭代版本;s算法_Algorithm - Fatal编程技术网

Algorithm Welzl'的迭代版本;s算法

Algorithm Welzl'的迭代版本;s算法,algorithm,Algorithm,我使用Welzl算法来寻找点云的最小封闭圆(2d)或最小封闭球体(3d)。不幸的是,该算法具有非常高的递归深度,即输入点的数量。这个算法有迭代版本吗?我找不到任何递归,也不知道如何将递归更改为循环 我找到了一些迭代的最小封闭圆/球体算法,但是它们的工作方式完全不同,没有Welzl算法所期望的线性运行时间。基本上,任何递归算法都可以使用堆栈转换为迭代算法。如果函数在其体中多次调用自身,并且在调用之间使用局部变量,这也可以工作吗?是的,您可以跟踪我也是。同样,这种模拟递归与普通递归具有相同的复杂性算

我使用Welzl算法来寻找点云的最小封闭圆(2d)或最小封闭球体(3d)。不幸的是,该算法具有非常高的递归深度,即输入点的数量。这个算法有迭代版本吗?我找不到任何递归,也不知道如何将递归更改为循环


我找到了一些迭代的最小封闭圆/球体算法,但是它们的工作方式完全不同,没有Welzl算法所期望的线性运行时间。

基本上,任何递归算法都可以使用堆栈转换为迭代算法。如果函数在其体中多次调用自身,并且在调用之间使用局部变量,这也可以工作吗?是的,您可以跟踪我也是。同样,这种模拟递归与普通递归具有相同的复杂性算法的复杂性是可以接受的。我只需要迭代编写它,因为我有很多输入点,递归深度有限(默认情况下,Python只允许1000个递归调用)。是否有一条一般规则说明我需要在堆栈中放入什么,例如函数参数和局部变量?@pschill如果是用于在线判断,您可以尝试
sys.setrecursionlimit()
。至于一般规则,您基本上必须理解什么是“堆栈框架”,并手动重新实现它。通常所有局部变量(包括函数参数)和返回地址都包含在其中。