动态规划的具体操作,分四步

动态规划是我学的最蛋 疼的一个问题。大家觉得呢

•动态规划算法的一般步骤

1.找出最优解的性质,并刻画其结构特征;

2.递归地定义最优值;

3.以自底向上的方式计算出最优值;

根据计算最优值时得到的信息,构造最优解

下面用一个例子来说明。

矩阵连乘问题(自行百度查一下是什么哈)

•将矩阵连乘积AiAi+1…Aj记作A[i:j]

–把问题转化成考察A[1:n]的最优计算次序问题

–设计算次序在A[k]处将矩阵断开最优,则总计算量为: A[1:k] 的计算量加上A[k+1:n]的计算量,再加上A[1:k] 和A[k+1:n]相乘的计算量。

关键特征

lA[1:n]的最优计算次序所包含的计算矩阵子链A[1:k]和A[k+1:n]的次序也是最优的。(可用反证法证明)

——问题的最优解包含了其子问题的最优解,这种性质称为最优子结构性质。

对矩阵:A1A2A3A4A5A6,可能的最优解A1(A2A3)|A4(A5A6)

最优解:A[1:6]=A[1:3]+A[4:6]+A[1:3]*A[4:6]

–A[1:3]与A[4:6]也必分别为最优解(计算总量最少),因为其无关;

–若有A’[1:3]小于A[1:3],由后两项不改变,则A[1:6]不是最小,故与前提矛盾;

递归地定义最优值。

•设计算A[i:j],1≤i≤j ≤n,所需的最少数乘次数为m[i][j]

——则原问题的最优解为m[1][n]

–考察两种情况

•i=j;

•i<j;

m[i][j] = 0+m[i+1][j]+ p[i-1]*p[i]*p[j];

for (k = i+1; k < j; k++) {

t = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];

if (t < m[i][j])  m[i][j] = t;

}

void MatrixChain(int *p,int n,int **m,int **s) {
      for (j = 2; j <= n; j++)
          for (i = j-1; i >= 1; i--) {
              m[i][j] = m[i+1][j]+ p[i-1]*p[i]*p[j];
              s[i][j] = i;
              for (k = i+1; k < j; k++) {
                 t = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
                 if (t < m[i][j]) { m[i][j] = t; s[i][j] = k; }
              }
          }
} //算法的计算时间上界为O(n3)
时间: 2024-12-28 11:51:09

动态规划的具体操作,分四步的相关文章

AJAX的来龙去脉(由来)-如果被封装出来的--ajax发送异步请求(四步操作)

<黑马程序员_超全面的JavaWeb视频教程vedio\JavaWeb视频教程_day23_ajax> \JavaWeb视频教程_day23_ajax\day23ajax_avi\14.打包ajax生成小工具.avi;  有介绍: 个人理解:就是封装了 XMLHttpRequest 的请求方法:演变而成我们常用的 ajax: =====原始的请求方式: ajax发送异步请求(四步操作) 1. 第一步(得到XMLHttpRequest) * ajax其实只需要学习一个对象:XMLHttpRequ

ajax的四步操作

>>ajax的四步操作1.第一步(得到XMLHttpRequest)--ajax其实只需学习一个对象,XMLHttpRequest,如果掌握了他,就掌握了ajax!!--得到XMLHttpRequest>>>大多数浏览器都支持:var xmlHttp=new XMLHttpRequest();>>>IE6.0: var xmlHttp=new ActionXObject("Msxml2.XMLHTTP");>>>IE5以

Ajax发送异步请求(四步操作)

1.第一步(得到XMLHttpRequest) *ajax其实只需要学习一个对象:XMLHttpRequest,如果掌握了它,就掌握了ajax!! *得到XMLHttpRequest >大多数浏览器都支持:var xmlHttp = new XMLHttpRequest(); >IE6.0: var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); >IE5.5以及更早版本:var xmlHttp = new ActiveX

Ajax四步操作

第一步得到(XMLHttpRequest)function creatXMLHttpRequest(){ try{ return new XMLHttpRequest(); } catch(e){ try{ return new ActiveXObject(Msxml2.XMLHTTP); }catch{ try{ return new ActiveXObject(Microsoft.XMLHTTP); }catch(e){ alert("你的浏览器不支持AJax") throw e;

只需四步,帮助企业做好MaxCompute成本优化

摘要: 阿里云在和很多企业交流的过程中发现他们在使用MaxCompute的时候往往会遇到一些成本相关的问题,而在与客户不但交流沟通的过程中,阿里云在成本优化方面也积累了大量的经验,因此也希望能够将这些经验沉淀下来分享给更多的企业和开发者,本文就将与大家分享帮助企业做好MaxCompute成本优化的"四步走"战略. 摘要:阿里云在和很多企业交流的过程中发现他们在使用MaxCompute的时候往往会遇到一些成本相关的问题,而在与客户不但交流沟通的过程中,阿里云在成本优化方面也积累了大量的经

Hadoop核心组件:四步通晓HDFS

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统,它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序,那么在实际应用中我们如何来操作使用呢? 一.HDFS操作方式: 1.  命令行操作 –FsShell:$ hdfs dfs 2. 其他的计算框架-如spark 通过URI,比如: hdfs://nnhost:port/file-,调用HDFS的协议.主机.端口或者对外提供的服务媒.以及文件,在spark的程序中实现对HDFS的访问. 3.  其

四步搞定NiosII工程路径改变(转)

四步搞定NiosII工程路径改变 (2014-08-03 16:41:01) 转载▼http://blog.sina.com.cn/s/blog_bff0927b0102uy30.html 标签: nios 路径改变 setting.bsp 分类: 开发工具 在NiosII的开发过程中,路径改变会带来一系列问题:比如当我们在PC上某个路径下新建一个工程Nios_Prj(含QuartusII工程.Qsys模块和NiosII工程)后,假设其路径为C:\Nios_Prj,如果将工程路径改为D:\Nio

ICE学习第四步-----客户端请求服务器返回数据

这次我们来做一个例子,流程很简单:客户端向服务器发送一条指令,服务端接收到这条指令之后,向客户端发送数据库中查询到的数据,最终显示在DataGridView上. 根据上一篇文章介绍的Slice语法,我们先来定义ICE文件.我定义两个ICE文件,一个用来描述测试数据库表中属性相关信息,另一个则是请求数据的方法. 结构如下:    定义结构体,和数据库中表的列对应,添加序列(相当于数组类型). 在获取表的方法中注意要记得#include带有结构的ice文件,并把接口函数的返回值类型写成之前定义的数组

用PHPcms V9四步完成WAP手机站搭建

用PHPCMS最新发布的V9搭建了ONOW中文网,WEB网站(www.onow.cn)完成后,有用户提供手机访问的问题, 于是着手搭建ONOW手机WAP站(3g.onow.cn). 用PHPCMS V9完成wap搭建需要以下几步: 第一步:域名解析并建站 进入域名管理,建立A记录,解析至相应的IP地址,比如将3g.onow.cn 解析至202.165.183.10 , 在WEB服务设置中(IIS或apache)中建站,主目录与www.onow.cn的主目录一致, 但默认首页要设成index.ph