博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分治法理论
阅读量:6799 次
发布时间:2019-06-26

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

分治算法将一个大的问题分成多个小问题,每个小问题都是大问题的组成部分,然后用点额外的处理就能得到最终答案。例如,归并排序就是将原问题分成两个次级的问题,每个次级排序问题数据是上一级问题的一半,最后使用额外O(n)的工作量进行合并。时间复杂度表达式如下:

T(n) = 2T(n/2) + O(n)

下面的理论可用于计算分治算法的时间花费。对于一个给定程序(或算法),首先找到问题的重现关系(时间复杂度表达式的递归关系)。如果递归关系是下面这种形式,我们可以直接给出问题的答案(对应的分治算法时间复杂度),而不需要再去计算。

如果递归关系是这样的形式:T(n) = aT(n/b) + θ(n k log p n),(其中 a >= 1, b>1, k>=0, p 是实数)那么:

  1. if a > b
    k, then
    T(n) = θ(nlogba)
  2. if a=b
    k
    1. if p > -1, then
      T(n) = θ(nlogba logp+1n)
    2. if p = -1, then T(n) = θ(nlogba log(log n))
    3. if p < -1, then T(n) = θ(nlogba)
  3. if a < bk
    1. if p >=0, then T(n) = θ(nk logpn)
    2. if p <  0, then T(n) = O(nk)

转载于:https://www.cnblogs.com/programnote/p/4689988.html

你可能感兴趣的文章
jq cookies存储
查看>>
JDK源码分析-Integer
查看>>
路由技术之ip汇总方法(列表法)
查看>>
day2 学习python 字符及字符串
查看>>
sphinx构建内部文档Wiki系统
查看>>
根据MAC地址查询IP地址
查看>>
this指针
查看>>
Android自动化测试学习之robotium笔记
查看>>
运维自动化-Ansible ( 四 )
查看>>
我的友情链接
查看>>
NMON 生成文件 字段释义
查看>>
Linux 文件基本属性
查看>>
cocos2d 新建项目工程
查看>>
Android开发实现实现缓存功能
查看>>
如何理解Nginx、uWSGI和Flask之间的关系?
查看>>
cisco配置命令复习(一)
查看>>
Ubuntu安装Chrome过程中的细节
查看>>
SVN数据迁移到Git笔记
查看>>
Python - for()循环 详解 及 代码
查看>>
部署计算机加域脚本系列
查看>>