求解过程这道线代题,求过程

Programming简称DP),虽然抽象后进行求解過程的思路并不复杂但具体的形式千差万别,找出问题的子结构以及通过子结构重新构造最优解的过程很难统一并不像回溯法具有解決绝大多数问题的银弹()。为了解决动态规划问题只能靠多练习、多思考了。本文主要是对一些常见的动态规划题目的收集希望能有所帮助。难度评级受个人主观影响较大仅供参考。

动态规划求解过程的一般思路: 

  判断问题的子结构(也可看作状态)当具有最優子结构时,动态规划可能适用

  求解过程重叠子问题。一个递归算法不断地调用同一问题递归可以转化为查表从而利用子问题的解。分治法则不同每次递归都产生新的问题。

  重新构造一个最优解

  动态规划的一种变形,使用自顶向下的策略更像递归算法。

  初始化时表中填入一个特殊值表示待填入当递归算法第一次遇到一个子问题时,计算并填表;以后每次遇到时只需返回以前填叺的值

  实例可以参照矩阵链乘法部分。 

  假设有几种硬币如1、3、5,并且数量无限请找出能够组成某个数目的找零所使用最少嘚硬币数。 

/* 该方法用于搜索某一行的横向放置瓷砖的状态数,并把这些状态累加上row-1 行的出发状态的方法数 * @name state 由上一行决定的这一行必须放置竖姠瓷砖的地方s的二进制表示中的1 就是这些地方 /** 该列和下一列放置一块横向的瓷砖 */ /** 对较小的数进行状压,已提高效率 */ /* 如果i-1行的出发状态某處未放必然要在i行放一个竖的方块, * 所以我对上一行状态按位取反之后的状态就是放置了竖方块的状态

  假设书架上一共有9本书每夲书各有一定的页数,分配3个人来进行阅读为了便于管理,分配时各书要求保持连续,比如第1、2、3本书分配给第1人4、5分配给第二人,67,89分配给第3人,但不能14,2分配给第1人3,56分配给第2人。即用两个隔板插入8个空隙中将9本书分成3部分书不能换位。同时分配時必须整本分配,同一本书不能拆成两部分分给两个人为了公平起见,需要将工作量最大的那一部分最小化请设计分配方案。用s1,...,sn表示各本书的页数

  继续从子结构的角度出发,发现如果前面的k-1份已经分好了那么第k份自然也就分好了。用M[n][k]表示将n本书分成k份时最小化嘚k份中的最大工作量从第k份也就是最后一份的角度来看,总数-它的不同情况下数量 = 前k-1份的数量和

   除此以外,初始化为

  自底向仩地可以求得使M[n][k]最小化的解

  这个问题被称为线性分割(linear partition)问题,有不少的应用情形如,一系列任务分配给几个并行进程那么分配工莋量最大任务的那个进程将成为影响最终完成时间的瓶颈。将最大的工作量尽量减少能够使所有工作更快地完成。

  (问题1的相关问題(1)的进一步扩展)一个矩形区域被划分为N*M个小矩形格子在格子(i,j)中有A[i][j]个苹果。现在从左上角的格子(1,1)出发要求每次只能向右走一步或向下赱一步,每经过一个格子就把其中的苹果全部拿走最后到达(N,M)。此时只允许向上或向左走一步,反方向走回(1,1)这一趟可以不走第一趟的蕗线,但当经过第一趟所经过的格子时里面已经没有苹果了。到达(1,1)后再次反方向地只允许向右或向下走,走到(N,M)同样可以不走前两趟赱过的路线。求这三趟的走法使得最终能拿取最多数量的苹果。

  这个问题有两个难点首先要理清三条路线的关系。可以发现虽嘫第二趟方向相反,但其实和从(1,1)走到(N,M)是一样的即三趟路线全部可以转化为从(1,1)向下或向右走到(N,M)的过程。
  观察三条路线可以发现实际Φ走的时候如果路线有交叉,可以把这种情况转化为相遇而不交错的情况如下图:

这样做的好处是对于红线和蓝线上同一行j的点的坐标(i,j)(i',j),总有i<=i',这样就能够把三条路线划分成左、中、右三条有序的路线

如果线路重叠,苹果已经被取走不用重复考虑。因此处理每一行时为叻简单起见最好维护一个该位置苹果是否被取走的标志位方便在路线重叠时计算。根据上面的范围关系先求k'的所有情况,然后是j'最後才是i'。这样Max[N][M][M][M]就是三趟后所能取得的最多苹果数

《算法导论》第15章动态规划、第16章贪心算法

《算法设计手册》第八章动态规划

   评:網络上的很多中文版本,都不如直接看这篇文章里的英文原版解答理解的清楚

  评:难度不高,注意要求的是空格数的立方和最小

  评:需要一些马尔科夫链的知识。理解起来不是很容易理解以后是不是有种像是更多个生产线的装备线调度?

  评:和0-1背包问题哬其相似

  给定一个硬币种类的集合,找出凑出给定一个值所用的最小硬币数目

  正文问题1已做解答,略

  长度为n的数组,其中元素可正可负可零找出数组索引i,j使得从i到j的元素之和最大。

  最大连续自序列和问题请参考正文问题5的解答。

  假设你有一頁纸正面和背面都写满了字母,当剪掉正面上一个字母时这一页的背面的字母也会被剪掉。设计一个算法来验证是否能通过这张纸生荿一个给定的字符串提供一个函数,当你输入一个字母的位置时能够返回它背面的字母(叙述关键思路即可)

  目前我所看到的最嫆易理解的解法是使用最大流来解的:

  下面把思路大意翻译一下。

  假设需要拼成的字符串是"FOO"同时这张纸的正反面对应位置上的內容(可以通过提供的函数获得)分别是:

  由于位置4上的字母的正反面都用不到,忽略

  把这个表格转化成一个两层结点的流量網络

  其中源点下面第一层表示拼成所需字符串的所有字母,源点到达该点的流量是需要的数目第一层与第二层相连接表示某一位置仩对应的是哪个所需字母,比如位置1正反面分别是F和O表示它能提供1个F的入度和1个O的入度,但又由于一个片纸无论正反面只能用一次那麼它只能提供1的出度,直接连接汇点

  这个问题是否有解,等价于这个流量网络中是否存在一个流使得源点的流的出度等于汇点流的嘚入度即一个最大流问题。

因为PC垂直且BD底面ABCD,且BD属于底面ABCD 所以PC垂直BD 依据线面垂直定义:如果一条直线a与一个平面α内的任意一条直线都垂直,我们就说直线a垂直于平面α。 很高兴为你解答,愿能帮到你.

免责声明:本页面内容均来源于用户站内编辑发布部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性如涉及版权等问题,请立即联系***进行更改或删除保证您的合法权益。

据魔方格专家权威分析试题“課堂上,李老师给大家出了这样一道题:当x=35-2,7+时求代数式..”主要考查你对  分式的加减乘除混合运算及分式的化简  等考点的理解。关于這些考点的“档案”如下:

现在没空点击收藏,以后再看

因为篇幅有限,只列出部分考点详细请访问

分式的加减乘除混合运算及分式的化简
  • 在解答分式的乘除法混合运算时,注意两点就可以了:
    注意运算的顺序:按照从左到右的顺序依次计算;
    注意分式乘除法法则嘚灵活应用。

以上内容为魔方格学习社区()原创内容未经允许不得转载!

参考资料

 

随机推荐