没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第四章 . 贪心算法 (Greed method)
[ 适用问题 ] 具备贪心选择和最优子结构性质的最优化问
题
将问题的求解过程看作是一系列选择 , 每次选择一个输入 , 每次选
择都是当前状态下的最好选择 ( 局部最优解 ). 每作一次选择后 , 所
求问题会简化为一个规模更小的子问题 . 从而通过每一步的最
优解逐步达到整体的最优解。
例 题
[ 算法优点 ] 求解速度快 , 时间复杂性有较低的阶 .
整体的最优解可通过一系列局部最优
解达到 . 每次的选择可以依赖以前作
出的选择 , 但不能依赖于后面的选择
问题的整体最优解中
包含着它的子问题的
最优解 .
[ 算法缺点 ] 需证明是最优解 .
[ 常见应用 ]
背包问题 , 最小生成树 , 最短路径 , 作业调度等等
4.1 基本思想
用以求解最优化问题
算法设计与分析 > 贪心算法
[ 算法思路 ] 将 n 个活动按结束时间非减序排列 , 依次考虑活动 i,
若 i 与
已选择的活动相容 , 则添加此活动到相容活动子集 .
4.2. 活动安排问题
[ 问题陈述 ] 设有 n 个活动 E={1,2,…,n} 要使用同一资源 , 同一时间
内只允许一个活动使用该资源 . 设活动
i
的起止时间区间 [s
i
, f
i
) , 如
果选择了活动 i, 则它在时间区间 [s
i
, f
i
) 内占用该资源 ; 若区间 [s
i
, f
i
)
与 [s
j
, f
j
)
不相交 , 则称活动 i 与 j 是相容的 . 求解目标是在所给的活动集合
中选出最大相容活动子集 .
算法设计与分析 > 贪心算法
1 2 3 4 5 6 7 8 9 10 11
[ 例 ]
1 3 0 5 3 5 6 8 8 2 12
4 5 6 7 8 9 10 11 12 13 14
i
s[i]
f[i]
设待安排的 11 个活动起止时间按结束时间的非减序排列
最大相容活动子集 (1, 4, 8, 11),
也可表示为等长 n 元数组 :(1, 0, 0, 1, 0, 0, 0, 1, 0, 0,
1)
活动安排问题贪心算法
template< class Type >
void GreedySelector(int n, Type s[ ], Type f[ ], bool A[] )
{ A[ 1 ] = true;
int j = 1;
// 从第二个活动开始检查是否与前一个相容
for (int i=2;i< =n;i+ +) {
if (s[i]>=f[j]) {
A[i] = true;
j=i;}
else A[ i] = false;} }
T(n)=O(nlogn) ( 未排序时 )
[ 算法分析 ] T(n)=O(n) ( 已排序时 )
算法设计与分析 > 贪心算法
[ 算法证明 ] 算法达到最优解 .
[ 问题描述 ] 输入 :(x1,x2,...xn), xi=0, 货箱 i 不装船 ; xi=1, 货箱 i
装船
可行解 : 满足约束条件 ≤ c 的输入
优化函数 :
最优解 : 使优化函数达到最大值的一种输入 .
i
n
i
i
xw
1
n
i
i
x
1
4.3 最优装载
算法设计与分析 > 贪心算法
[ 例 ]
设 n=8 , [w1 …, w8]=[100, 200, 50, 90, 150, 50, 20,
80] , c=400 。
所考察货箱的次序为 :7, 3, 6, 8, 4, 1, 5, 2 。货箱 7, 3, 6, 8, 4, 1 的
总重量为 390 个单位且已被装载 , 剩下的装载能力为 10 , 小于任
意
货箱 . 所以得到解 [x1,...x8]=[ 1, 0, 1, 1, 0, 1, 1, 1]
[ 算法思路 ] 将装船过程划为多步选择,每步装一个货箱,每次
从剩下的货箱中选择重量最轻的货箱 . 如此下去直到所有货箱均
装上船或船上不能再容纳其他任何一个货箱。
最优装载的贪心算法
算法设计与分析 > 贪心算法
template < class Type >
void Loading(int x[], Type w[], Type c, int n )
{ int *t = new int [n + 1]; //t 记录顺序映射
Sort(w, t, n) ; // 按货箱重量排序 /
for (int i = 1; i < = n; i ++) x[i] = 0;
for (int i = 1;i<= n && w[t[i]] <= c; i++) {
x[t[i]] = 1;
c-= w[t[i]];}} // 调整剩余空间 /
算法分析 : 排序为主要算法时间 , 所以 T(n)=O(nlogn)
算法证明 : 该算法能得到最优解 ( 反证法 ).
剩余35页未读,继续阅读
资源评论
sdjnytzxh
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功