分治法

目录

  • 零、主定理
  • 零-零、利用数学方法求解递归式
  • 一、归并排序
    *二、最大子数组问题
    2.1 问题描述
    2.2 使用分治策略求解
    2.3 分治法的分析
  • 三、矩阵乘法的Strassen算法
    3.1 普通矩阵乘法
    3.2 一个简答的分治算法
    3.3 Strassen方法

在分治策略中,递归地求解一个问题,在每层递归中应用如下三个步骤:
1)分解:将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小
2)解决:递归地求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。
3)合并:将子问题的解组合成原问题的解

分治有两种情况:
1)当子问题足够大,需要递归求解时,称之为递归情况
2)当子问题变得足够小,不再需要递归时,进入基本情况

零、主定理



主定理的三种情况分别对应以下三种情况:
1)树的总代价由叶节点的代价决定
2)树的总代价均匀分布在树的所有层次上
3)树的总代价由根节点的代价决定


主定理的证明:(需要用到下面两个引理)


引理4.2:



引理4.2的证明:


引理4.3:



4.3的证明:



主定理的应用:


几个递归公式的解:
1)T (n) = T (αn) + T ((1 − α)n) + n 的解为:T (n) = Θ(n lg n)
可以用代入法验证
2)T (n) = T (n − 1) + n的解为:T (n) = Θ(n²)



3)T (n) = T (√n) + 1 的解为:T(n) = Θ(lglgn)



4)T (n) = T (n/2) + T (n/4) + T (n/8) + n的解为:T(n) = Θ(n)
可以用代入法验证

5)T (n) = T (n − 1) + lg n的解为:T (n) = Θ(n lg n)
6)T (n) = T (n − 1) + 1/n的结尾:T(n) = Θ(lgn)

零-零、利用数学方法求解递归式

一、归并排序

二、最大子数组问题

2.1 问题描述

股票的买入卖出,使得收益最大
暴力求解方法:尝试每队可能的组合,共有n(n - 1) /2种,运行时间为Ω(n²)

问题转换:不从每日价格的角度去看待输入,二十考察每日价格变化,第i天的价格变化定义为第i天和第i-1天的价格差,将该数组定义为A。那么问题就转换为寻找A的和最大的非空连续子数组。称之为最大子数组。
只有当数组中包含负数时,最大子数组问题才有意义,否则整个数组和肯定是最大的。

2.2 使用分治策略求解


考虑求解子数组A[low..high]的最大子数组。
使用分治技术意味着将子数组划分为两个规模尽量相等的子数组,比如中央位置mid。A[low..high]的任何连续子数组A[i..j]所处的位置必然是一下三种情况之一:



这三种情况的求法:
A[low..mid]和A[mid+1..high]递归进行求解
跨mid的求解:找出A[i..mid]和A[mid+1..j]最大子数组,然后合并
求出这三个之后,然后选出其中的最大者,即为A[low..high]的最大子数组



2.3 分治法的分析


可得T(n) = Θ(nlgn)

三、矩阵乘法的Strassen算法

3.1 普通矩阵乘法

3.2 一个简答的分治算法



递归情况的总时间为分解时间、递归调用时间以及矩阵加法时间之和:




得到T(n) = Θ(n³)

3.3 Strassen方法

核心思想是令递归树少一点点,只递归进行7次而不是8次n/2 x n/2矩阵的乘法。



创建10个矩阵:




递归地计算7次矩阵乘法:

计算C的4个子矩阵:






运行时间的分析:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 分治策略 本文包括分治的基本概念二分查找快速排序归并排序找出伪币棋盘覆盖最大子数组 源码链接:https://gi...
    廖少少阅读 1,827评论 0 7
  • 版本记录 前言 将数据结构和算法比作计算机的基石毫不为过,追求程序的高效是每一个软件工程师的梦想。下面就是我对算法...
    刀客传奇阅读 2,873评论 0 0
  • 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或...
    扎Zn了老Fe阅读 762评论 0 1
  • 要点 递归式T(n)求解代换法*迭代法*递归树主定理 Master (core) 分治策略Insert Sort ...
    陈码工阅读 3,007评论 0 1
  • 变天了,冷 思绪杂乱 如窗外的风 凄凄的吹过台灯 将我的身影斜斜地映在墙上 拉长 显示屏的光亮分外的白 我在电脑...
    默默Mona阅读 181评论 0 0