动态规划(算法设计与分析王晓东版)
文章平均质量分 86
Bolt_Swallow
曾经的不驯于桀骜,只为梦想中的腾云九霄(这是小号哈,大号是项目交流)
展开
-
独立任务最优调度(动态规划)
题目:用两台处理机A和B处理n个作业。设A和B处理第k个作业的时间分别为ak和bk。由于各个作业的特点和机器性能的关系,对某些作业,在A上的处理时间长;而对另一些作业,在B上的处理时间更长。一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现在要找出一个最优调度方案,使得n个作业被这两台处理机处理完毕的时间和最少。算法思路:当完成k个作业时,设原创 2018-01-28 20:11:31 · 2381 阅读 · 6 评论 -
最大子矩阵问题(动态规划的推广)
问题描述:已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,找到最大的非空(大小至少是1 * 1)子矩阵。比如,如下4 * 4的矩阵0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2的最大子矩阵是9 2-4 1-1 8那么最大子矩阵的和就为:15算法思路就是:从大矩阵里找一个小矩阵,这个小矩阵的所有数之和最大;1,先从第一行开始扫描,然后再是1,2行,再1,2,3行,最后1原创 2018-01-19 14:59:27 · 305 阅读 · 0 评论 -
最大子段和问题(这里给出三种算法)
问题描述对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。 (1)枚举法求解 枚举法思路如下: 以a[0]开始: {a[0]}, {a[0],a[1]},{a[0],a[1],a[2]}……{a[0],a[1],……a[n]}共n个 以a[1]开始: {原创 2018-01-18 20:36:34 · 911 阅读 · 0 评论 -
最长公共子序列
问题的描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。若给定序列X= { x1, x2,…, xm},则另一序列Z= {z1, z2,…, zk}是X的子序列是指存在一个严格递增的下标序列 {i1, i2,…, ik},使得对于所有j=1,2,…,k有 Xij=Zj。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,原创 2018-01-17 22:48:10 · 175 阅读 · 0 评论 -
矩阵连乘(动态规划)
题目:例:设要计算矩阵连乘乘积A1A2A3A4A5A6,其中各矩阵的维数分别是: A1 A2 A3 A4 A5 A630*35; 35*15; 15*5; 5*10; 10*20; 20*25原创 2018-01-16 23:22:32 · 584 阅读 · 0 评论 -
0--1背包问题(动态规划)
1、问题描述: 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大?例子:数据:物品个数n=5,物品重量w[n]={0,2,2,6,5,4},物品价值V[n]={0,6,3,5,4,6}下面是算法分析的过程: 其实这里就是选择装与不装的问题关键 (1)对于m[5][j],当j=原创 2018-01-24 18:06:54 · 976 阅读 · 1 评论 -
流水作业调度(动态规划)
题目: n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi例如这个例子:所以最有时间就为:a4+a0+a2+a1+a3+[(b4+b0+b1+b2)-(a0+a1+a2+a3)]+b3 =1+2+3+4+6+[(7+5+2+3)-原创 2018-01-24 15:09:49 · 4148 阅读 · 0 评论 -
凸多边形最优三角剖分(动态规划)
题目描述:用多边形顶点的逆时针序列表示凸多边形,即P={v0,v1,…,vn-1}表示具有n条边的凸多边形。 给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权函数w。要求确定该凸多边形的三角剖分,使得即该三角剖分中诸三角形上权之和为最小。解题思路: 若凸(n+1)边形P={v0,v1,…,vn-1}的最优三角剖分T包含三角形v0vkvn原创 2018-01-20 17:32:48 · 2986 阅读 · 0 评论