动态规划

动态规划与贪心法的关系

基本归纳法:对于A_{i+1} ,只需要考察前一个状态A_{i} 即可完成整个推理过程,它的特点是只要状态A_{i} 确定,则计算A_{i+1} 时不需要考察更前序的状态,我们将这一模型称之为马尔科夫模型

基本归纳法

高阶归纳法:相应的,对于A_{i+1} ,需要考察前i个状态集{{x_{1},x_{2},x_{3}......x_{i} }}才能完成整个推理过程,往往称之为高阶马尔科夫模型

高阶归纳法

在计算机算法中,高阶马尔科夫模型的推理,叫做“动态规划”,而马尔科夫模型的推理,对应“贪心法”。


最长递增子序列LIS

    给定长度为N的数组A,计算A的最长的单调递增的子序列(不一定连续)

    如:给定数组A{5,6,7,1,2,8},则A的LIS为{5,6,7,8},长度为4

        长度为N的数组记为A={a_{0}, a_{1}, a_{2}...... a_{n-1}}

        记A的前i个字符构成的前缀串为A_{i}=a_{0}, a_{1}, a_{2}...... a_{n-1} ,以a_{i} 结尾的最长递增子序列记为L_{i} ,其长度为b[i];

        假定已经计算得到了b[0,1,......,i-1],如何计算b[i]?

            已知L_{0} L_{1} ......L_{i-1} 的前提下如何求L_{i}

                根据定义,L_{i}必须以a_{i}结尾;

                如果将a_{i}分别缀到L的后面,是否允许呢?

                    如果a_{i}\geq  a_{j} ,则可以将a_{i}缀到L_{j}后面,得到比L_{j}更长的字符串

                从而:b[i]={max(b[j]+1,0<=j<i且a_{j}<=a_{i})}

                    计算b[i]:遍历在i之前的所有位置j,找出满足条件a_{j}\leq a{i}的最大的b[j]+1

                    计算得到b[0......n-1]后遍历b[i],找出最大值即为最大递增子序列的长度。

    时间复杂度为O(n^2)


O(NlogN)的最长递增子序列算法(贪心法)

    对于数组A={1,4,5,2,8,9,7}

    将A中的数字依次遍历做压栈操作,当遇到数组中的数字比栈中某个数字大,比某个数字小的情况下,进行替换操作,最后栈中数字个数即为最大递增子序列的长度。

贪心法


    股票最大收益

        给定数组A[0......N-1],其中A[i]表示某股票第i天的价格。如果允许最多只进行一次交易(先买一次,再卖一次),请计算合适买卖达到最大收益,返回最大收益值。

        如:[7,1,5,3,6,4],则最大收益为6-1=5

        如:[7,6,4,3,1],则最大收益为0

                一路下跌,则最好的方法是不进行交易。

解法


         给定数组A[0......N-1],其中A[i]表示某股票第i天的价格。如果允许最多只进行K次交易(先买一次,再卖一次,算一次交易),请计算合适买卖达到最大收益,返回最大收益值。

            规定买卖不能嵌套,及买入后要先卖出才可再买

            如:A=[7,1,5,3,6,4],k=3,则在1,3处买入,5,6处卖出,最大收益为7

         分析:

            dp[k,i]表示最多k次交易在第i天的最大收益。

            在第i天,有俩种选择:要么卖出股票,要不卖出股票,从而得到状态转移方程。

状态转移方程
核心代码

            进一部分析

状态转移方程转变

                

核心代码



    任务安排

        给定一台有m个存储空间的单进程机器,现有n个请求:第i个请求计算时需要占用R[i]个空间,计算完成后,存储计算结果需要占用O[i]个空间(其中O[i]<R[i])。问如何安排这n个请求的顺序,使得所有请求都能完成。

        如:m=14,n=2,R[1,2]=[10,8],o[1,2]=[5,6]。可以先运行第一个任务,计算时占用10个空间,计算完成后占用5个空间,剩余9个空间执行第二个任务;单如果先运行第二个任务,则计算完成后仅剩余8个空间,第一个任务的计算空间就不够了。

        算法分析:

            第K个任务的计算占用空间加上前面k-1个任务空间占用量之和,越小越好。从而:

算法分析

            得:将按照R[i]-O[i]降序排列即可


    操作最小次数

        变量x从1开始变化,规则是:要么变成x+1,要么变成2*x,问:若想将x变成整数2015,最少需要多少次变化?

        一种可行的操作变化:

        1,2,3,6,7,14,15,30,31,62,124,125,250,251,502,503,1006,1007,2014,2015

            如何思考:

        任何一个数字都可以,如:20161006

        1001100111010000111101110

二进制操作

        设dp(n)表示从1到n的最少操作数

            若n为奇数,则n的前一步只能是n-1

            若n为偶数,则n的前一步是n-1和n/2的操作步数的小者

n是如何得到

                

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

推荐阅读更多精彩内容