博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归与分治策略
阅读量:4039 次
发布时间:2019-05-24

本文共 703 字,大约阅读时间需要 2 分钟。

任何可以用计算机求解的问题所需要的计算时间都与问题的规模相关。规模越小,求解时间往往越短,也容易处理。要想解决一个规模较大的问题,有时会很困难。分治策略是将一个难以解决的问题分割成一些规模较小的问题,然后降低问题的处理难度。如果分割成的小规模问题都是可解的,就可以利用小规模问题的解求解出原问题的解。在这种情况下可以不断使用分治策略,使问题的规模不断的缩小,这样子问题缩小到很容易求解出解。由此自然引出递归算法。

使用分治策略的注意事项:

a:问题可以被分割

b:分割后的问题全部都有解

c:反复时候分治时仍然满足a和b

分治策略一般算法设计模式:

divide-and-merge(n){     if(n<=n0)process(n);// 问题规模可以直接解决的子问题     divide n into smaller subinstances n1,n2, ... ... ,nk; //分治     for(i=1;i

递归算法:直接或者间接地调用自身的算法

递归函数:用函数自身给出的定义的函数

例如:二叉树的定义是一种递归定义,遍历算法是递归算法,遍历函数是递归函数。

分治策略设计出的算法一般是递归算法,所以分治策略的算法计算效率可以用递归方程来进行分析。

T(n)<= O(1)      n=0

T(n)<=kT(n/m)+f(n)      n>1

n为原问题的规模,n/m为k个子问题的规模,T(n)为问题规模为n的计算时间,f(n)为k个子问题的解合并为原问题解所需要的时间。

遵循以上的思想指导可以采用分治策略设计递归算法来解决问题。如何将递归算法替换为非递归算法需要根据实际情况做进一步的判断。

转载地址:http://prpdi.baihongyu.com/

你可能感兴趣的文章
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node
查看>>
Understanding Oracle Flex Clusters
查看>>
Oracle 12.2.0.1 新增的与Oracle数据库性能相关的功能
查看>>
Oracle 12C R2-新特性-多租户:支持本地UNDO模式
查看>>
oracle hanganalyze和systemstate使用测试
查看>>
Oracle Database 12c第2版(12.2)中的自动列表分区
查看>>
Oracle Database 12c第2版(12.2)中的只读分区和子分区
查看>>
12.2: ORA-28040 Followed by ORA-1017 When Client is Under Version 12
查看>>
ORA-01031 TOAD 连接到12c数据库
查看>>
Docker-利用Dockerfile来搭建tomcat服务
查看>>
Docker跨服务器迁移
查看>>
VMware安装centos虚拟机 通过NAT与主机互通并能上网
查看>>
expdp/impdp 数据库迁移详细过程
查看>>
oracle 误删除表的几种恢复方法
查看>>
hadoop、hbase、hive、spark分布式系统架构详细搭建过程
查看>>