云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 计算机算法设计与分析

计算机算法设计与分析

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 7:48:06

第三章

动态规划

基本思想是将待求解问题分解成若干个子问题,但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。

基本步骤

找出最优解的性质,并刻划其结构特征。 递归地定义最优值。 以自底向上的方式计算出最优值。

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

1.动态规划算法的基本要素:重叠子问题;最优子结构。 2.矩阵连乘问题(P47的例题)

设计算A[i:j],1≤i≤j≤n,所需要的最少数乘次数m[i,j],则原问题的最优值为m[1,n] :

当i=j时,A[i:j]=Ai,因此,m[i,i]=0,i=1,2,…,n

[i,j]?m[i,k]?m[k?1,j]?pi?1pkpj当i

这里 A的维数为 pi?1?pii

0i?j??

m[i,j]??min{m[i,k]?m[k?1,j]?pi?1pkpj}i?j ?i?k?j? kj ? 的位置只有 i 种可能

矩阵A和B可乘的条件:A的列数=B的行数 若A是pq的矩阵,B是q r的矩阵,则乘积C=AB是p r的矩阵,且总共需要pqr次数乘。

示例:求三个矩阵A1A2A3的连乘积,3个矩阵的维数分别为10 100,100 5,5 50。

一种连乘次序 ((A1A2)A3),数乘次数=10 100 5+10 5 50=7500。

另一种连乘次序:(A1 ( A2A3) ) ,数乘次数=100 5 50+10 100 50=75000。

3. 0-1背包问题 问题描述:

给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包。不能将

物品i装入背包多次,也不能只装入物品i的一部分。 算法描述:

输入:物品集合U={u1,u2,…, un},重量分别为w1,w2,…, wn,价值分别为v1,v2,…, vn,容量为C的背包。

输出:最大价值 ,满足 。

For i 0 to n //背包容量为0 m[i][0] 0 End for

For j 0 to C //物品集合为空 m[0][j] 0 End for

For i 1 to n //物品集不为空,背包容量为C For j 1 to C

m[i][j] m[i-1][j] //当物品i的重量大于背包容量时 if w[i]j then //当物品i的重量小于背包容量时 m[i][j] max{m[i-1][j], m[i-1][j-w[i]]+v[i]} End if End for End for

Return m[n][C]

例题:

第四章贪心算法

1.贪心算法的基本要素: a贪心选择性质

指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素。 b.最优子结构性质

当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。

2.背包问题

与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包。

即给定C>0, wi>0, vi >0, 1≤i≤n, 要求找出一个n元向量(x1, x2, ..., xn),0≤xi≤1,1≤i≤n ,使得 , 且 最大。

用贪心算法解背包问题的基本步骤: 计算每种物品单位重量的价值vi/wi ;

依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包;

若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包;

依此策略一直地进行下去,直到背包装满。 3.哈夫曼编码

哈夫曼算法以自底向上的方式构造表示最优前缀码的二叉树T。

(哈夫曼提出了构造最优前缀码的贪心算法,由此产生的编码方案称为哈夫曼编码。 哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。

给出现频率高的字符较短的编码,出现频率较低的字符以较长的编码,可以大大缩短总码长。 )

4.最小生成树 Prim算法

例如,对于右图中的带权图,按Prim算法选取边的过程如下图。

搜索更多关于: 计算机算法设计与分析 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第三章 动态规划 基本思想是将待求解问题分解成若干个子问题,但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。 基本步骤 找出最优解的性质,并刻划其结构特征。 递归地定义最优值。 以自底向上的方式计算出最优值。 根据计算最优值时得到的信息,构造最优解。 1.动态规划算法的基本要素:重叠子问题;最优子结构。 2.矩阵连乘问题(P47的例题) 设计算A[i:j],1≤i≤j≤n,所需要的最少数乘次数m[i,j],则原问题的最优值为m[1,n] : 当i=j时,A[i:j]=Ai,因此,m[i,i]=0,i=1,2,…,n [i,j]?m[i,k]?

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com