Time complexity 如何计算回溯算法的时间复杂度

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为输入中的单元总

问题和算法的详细信息

给定一个MxN网格,从左上角单元格到右下角单元格可以有多少条路径?在任何网格上,都可以向四个方向移动。唯一的限制是不能多次访问单元格

我们可以使用回溯算法来解决这个问题,下面是代码():

公共类机器人{
私有静态整数计数=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)