Time complexity 如何计算回溯算法的时间复杂度
问题和算法的详细信息 给定一个MxN网格,从左上角单元格到右下角单元格可以有多少条路径?在任何网格上,都可以向四个方向移动。唯一的限制是不能多次访问单元格 我们可以使用回溯算法来解决这个问题,下面是代码():Time complexity 如何计算回溯算法的时间复杂度,time-complexity,complexity-theory,recursive-backtracking,Time Complexity,Complexity Theory,Recursive Backtracking,问题和算法的详细信息 给定一个MxN网格,从左上角单元格到右下角单元格可以有多少条路径?在任何网格上,都可以向四个方向移动。唯一的限制是不能多次访问单元格 我们可以使用回溯算法来解决这个问题,下面是代码(): 公共类机器人{ 私有静态整数计数=0; 公共静态void main(字符串[]args){ 机器人=新机器人(); int m=5,n=5; 访问的布尔值[][]=新的布尔值[5][5]; 对于(int i=0;i=0&&i估计运行时复杂度的问题T可以如下解决。让p=M*N为输入中的单元总
公共类机器人{
私有静态整数计数=0;
公共静态void main(字符串[]args){
机器人=新机器人();
int m=5,n=5;
访问的布尔值[][]=新的布尔值[5][5];
对于(int i=0;i=0&&i估计运行时复杂度的问题T
可以如下解决。让p=M*N
为输入中的单元总数。在每个递归调用中,被许可的单元数减少1,总共有4个递归调用;基本情况的计算成本,其中没有允许的单元格,是常量,这意味着
T(0) = C
保持其中C
是某个合适的值。对于任意p
,我们得到了递归关系
T(P) = 4*P(T-1)
使用归纳法,我们可以证明
T(P) in O(4^P)
保留。总的来说,运行时间是以输入单元格数的指数为界的,但这并不意味着这个界限很紧。谢谢你的回答。我想确认我们可以将基本情况视为“不允许单元格”的原因当我们在基本情况下调用4次遍历时,所有四次遍历都将返回,而不会再次调用遍历。这种理解正确吗?是T(P)=4*P(T-1)
还是T(P)=4*T(P-1)
?
T(P) in O(4^P)