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 迷宫程序时间复杂度_Algorithm_Time Complexity - Fatal编程技术网

Algorithm 迷宫程序时间复杂度

Algorithm 迷宫程序时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,迷宫问题的实际时间复杂度是多少 是O(4^(n^2))(因为分支深度)还是O(n^2)(因为在最坏的情况下类似dfs会遍历矩阵)。我做了一些搜索,得到了这两种类型的答案。有人能给出这两个2倍复杂度可实现代码之间的区别或示例吗? 代码2的时间复杂度是否为O(n^2),第一个代码的时间复杂度是否为O(4^(n^2))? 代码1是否为回溯,代码2是否为dfs 代码1 #包括 #定义尺寸5 //迷宫问题 int迷宫[大小][大小]={ {0,1,0,1,1}, {0,0,0,0,0}, {1,0,1,

迷宫问题的实际时间复杂度是多少

是O(4^(n^2))(因为分支深度)还是O(n^2)(因为在最坏的情况下类似dfs会遍历矩阵)。我做了一些搜索,得到了这两种类型的答案。有人能给出这两个2倍复杂度可实现代码之间的区别或示例吗? 代码2的时间复杂度是否为O(n^2),第一个代码的时间复杂度是否为O(4^(n^2))? 代码1是否为回溯,代码2是否为dfs

代码1
#包括
#定义尺寸5
//迷宫问题
int迷宫[大小][大小]={
{0,1,0,1,1},
{0,0,0,0,0},
{1,0,1,0,1},
{0,0,1,0,0},
{1,0,0,1,0}
};
//矩阵来存储解决方案
int溶液[大小][大小];
//函数打印解决方案矩阵
无效打印解决方案()
{
int i,j;

对于(i=0;i=0&&r我还没有详细考虑它,但以下是我开始讨论的想法

考虑以下问题:

0 0 0 0 .... 0 0 0 0 0
0 1 1 1 .... 1 1 1 1 0
0 0 0 0 .... 0 0 0 1 0
.                    .
.                    .
.                    .
0 0 0 0 .... 0 0 0 1 0
你的算法将首先下降,然后尝试各种可能来填充下平方。这显然是指数型的。所以算法显然不在O(n^2)中


O(4^(n^2))似乎是一个有效的上限,但我确信,这不是最低上限。例如,你不能后退,所以你在每个位置只有3个选择。

我没有详细考虑过,但下面是我开始讨论的想法

考虑以下问题:

0 0 0 0 .... 0 0 0 0 0
0 1 1 1 .... 1 1 1 1 0
0 0 0 0 .... 0 0 0 1 0
.                    .
.                    .
.                    .
0 0 0 0 .... 0 0 0 1 0
你的算法将首先下降,然后尝试各种可能来填充下平方。这显然是指数型的。所以算法显然不在O(n^2)中


O(4^(n^2))似乎是一个有效的上界,但我确信,这不是最低上界。例如,你不能后退,所以你在每个位置只有3个选择。

从它的外观上看,我会说你编写的函数具有指数级的时间复杂度。你必须使用动态编程技术来实现polY多项式时间复杂度。为什么不是dijkstra?它应该是
O(n logn)
(其中
n
SIZE²
)可能的重复:我已经编辑了我的问题,现在应该更清楚了。请检查一下。从外观上看,我会说您编写的函数具有指数时间复杂度。您必须使用动态编程技术来实现多项式时间复杂度。为什么不使用dijkstra?它将是
O(n log n)
(此处
n
SIZE²
)可能重复:我已经编辑了我的问题,现在应该更清楚了。请查看。谢谢澄清。我更新了我的问题。你能看一下吗?谢谢澄清。我更新了我的问题。你能看一下吗?
0 0 0 0 .... 0 0 0 0 0
0 1 1 1 .... 1 1 1 1 0
0 0 0 0 .... 0 0 0 1 0
.                    .
.                    .
.                    .
0 0 0 0 .... 0 0 0 1 0