萨维奇(Savitch)定理证明

这里应用了分而治之(divide and conquer)的思想:

递归函数bool CanYield(c1,c2,t)

if(t= =1 && ( c1= =c2 || c1→c2只需一步)) return true;
if(t>1)
{ for(每个格局cm)
 { bool r1=CanYield(c1,cm,ceil(t/2));
  bool r2=CanYield(cm,c2,ceil(t/2));
  if(r1 && r2) return true;
 }
}

return false;


实际上就是求CanYield(cstart,caccept, 2O(f(n)))
分析分析
递归深度log2t,t是步数,所以就是所有分支上的最大可能时间t=2O(f(n)), log2t=O(f(n))
每递归一层,需要补充O(f(n))的空间

因此最大空间: O(f(n)) ×log2t=O(f2(n))。


注意这里的几个问题,首先是 for(每个格局cm)这里每次用的是一个cm时这里注意当返回时空间可以复用  。

其次  这里关于f(n)的问题,可以通过试探进行解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值