Ackmann函数-- 动态规划

本文探讨了如何使用动态规划的备忘录法解决Ackermann函数问题。通过初始化一个二维数组A来存储函数值,避免重复计算。当计算Ackermann(m, n)时,首先检查A[m, n]是否已计算,若已计算则直接返回,否则根据m和n的值递归计算并存储结果。" 73238583,5894865,JPEG图像压缩:原理与编码流程解析,"['图像处理', '编解码', '数字图像处理', '压缩算法', '数据编码']
摘要由CSDN通过智能技术生成

求解ackermann函数  
                    {n+1;                                                 m=0,n>0  
  A(m,n)=     {A(m-1,1);                                       n=0,m>0  
                    {A(m-1,A(m,n-1))                           n>0,m>0  
  求救动态规划算法! 

最简单的方法,用动态规划的备忘录法  
  即使用一个二维数祖A[1..m,1..n]记录所有的ackermann函数值  
  初始的时候全部填充-1,表示尚未计算过  
  然后直接用递归函数计算ackermann函数  
  在递归计算之前,现判断数组A中该函数值是否以被计算过,如果计算过了则直接从数组A中取出结果,不要再做重复计算;如果没有计算过,则递归计算。  
   
  大致的算法过程如下:  
   
  Ackermann(m,   n)  
  1.   if   A[m,n]   >=   0    
  2.         then   return   A[m,   n];  
  3.   else   if   m   =   0   and   n   >   0  
  4.         then   A[m,n]   <-   n   +   1;  
  5.   else   if   n   =   0   and   m   >   0  
  6.         then   A[m,n]   <-   Ackermann(m-1,   1);  
  7.   else   if   n   >   0   and   m   >   0  
  8.         then   A[m,n]   <-   Ackermann(m-1,   Ackermann(m,   n-1));  
  9.   return   A[m,   n];   

Ackermann函数A(m,n)可递归定义如下:
当m=0时,A(m, n)=n+1
当m>0,n=0时,A(m,n)=A(m-1,1)
当m>0,n>0时,A(m,n)=A(m-1,A(m,n-1))

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值