收藏 分享(赏)

002算法设计的两个例子.pdf

上传人:weiwoduzun 文档编号:5654294 上传时间:2019-03-11 格式:PDF 页数:15 大小:171.62KB
下载 相关 举报
002算法设计的两个例子.pdf_第1页
第1页 / 共15页
002算法设计的两个例子.pdf_第2页
第2页 / 共15页
002算法设计的两个例子.pdf_第3页
第3页 / 共15页
002算法设计的两个例子.pdf_第4页
第4页 / 共15页
002算法设计的两个例子.pdf_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、两 个例子: 调度 问题与投资问题例1 :调度问题 问题 有 n 项任务,每项任 务 加工 时 间 已知. 从 0时刻开始陆续安 排 到一 台 机 器上 加 工. 每个任务的完成 时 间 是从 0 时刻到任务加工 截止的时间. 求: 总完成时间(所 有 任 务完 成 时 间之 和 ) 最短的安排方案. . 实例 任务集 S = 1, 2, 3, 4, 5 , 加工时间: t 1 =3, t 2 =8, t 3 =5, t 4 =10, t 5 =15 2贪心法的解 算法:按加工时 间 (3,8,5,10,15) 从小 到 大安排 解 :1, 3, 2, 4, 5 15 10 8 5 3 0 3

2、 8 16 26 41 总完成时间: t = 3+(3+5)+(3+5+8)+(3+5+8+10)+(3+5+8+10+15) = 3 5 + 5 4 + 8 3 + 10 2 + 15 = 94 3输出:调度 I ,S 的排列 i 1 , i 2 , , i n , 问题建模 输入: 任务集: S=1, 2, , n , 第 j 项任务加工时间: t j Z + , j=1,2,n. 的排列 为 | ) ( min ) ( * S I I t I t = = + = nk i k t k n I t 1 ) 1 ( ) ( 目标函数:I 的完成时间, 解 I*:使得 t(I*) 达到最小,即

3、 4贪心算法 设计策略: 加 工时间短 的先做 算法:根据加工 时 间 从小到大排序, 依次加工 证:假如调度 f 第 i, j 项任务相邻且 有逆 序 , 即 t i t j . 交换任务 i 和 j 得到调度 g , t j t i t j t i f g 算法正确性: 对所有输 入实例都 得到最优 解 总完成时间 t(g) t(f ) = t j t i 0 5直觉不一定 是 正 确 的 反例 有4 件物品要装入背 包, 物品重量和价值 如 下: 背包重量限制是 6,问如何选择物品 , 使 得不 超重的情况下装 入 背 包的 物 品 价值 达 到 最大? 标号 1 2 3 4 重量 w

4、i 3 4 5 2 价值 v i 7 9 9 2 6实例的解 贪心法: 单 位 重量价值 大的优先 ,总重不 超 6 按照 从大到小排序:1, 2, 3, 4 2 2 5 9 4 9 3 7 i i w v 贪心法的解: 1, 4 ,重量 5,价值为 9. 更好的解: 2, 4 ,重量 6,价值 11. 7算法设计 1. 问题建模 2. 选择什么算法?如 何 描 述这 个 方 法? 3. 这个方法是否对所 有 实 例都 得 到 最优 解 ? 如何证明? 4. 如果不是,能否找 到 反 例? 8例2 : 投资问题 问题:m元钱,投资 n 个项目. 效益函数 f i (x) , 表示第 i 个项目

5、投 x 元的效益, i =1, 2, , n. 求如何分配每个项目的钱数使得总效益最大? x f 1 (x) f 2 (x) f 3 (x) f 4 (x) 0 0 0 0 0 1 11 0 2 20 2 12 5 10 21 3 13 10 30 22 4 14 15 32 23 5 15 20 40 24 实例 : 5 万元,投资给 4 个项目,效益函 数 : 9建模 输入 :n, m, f i (x), i =1,2, ., n, x = 1,2, ., m 解 : n 维向量, x i 是第 i 个 项目的钱数,使 得 下 述条 件 满 足: N , , ) ( max 1 1 = =

6、 = i n i i n i i i x m x x f 目标函数 约束条件 10蛮力算法 对所有满足下述 条 件 的向 量 x 1 + x 2 + + x n = m x i 为非负整数, i = 1, 2 , ., n 计算相应的效益 f 1 (x 1 ) + f 2 (x 2 ) + + f n (x n ) 从中确认效益最 大 的 向量. 11实例计算 x 1 + x 2 + x 3 + x 4 = 5 x f 1 (x) f 2 (x) f 3 (x) f 4 (x) 0 0 0 0 0 1 11 0 2 20 2 12 5 10 21 3 13 10 30 22 4 14 15 3

7、2 23 5 15 20 40 24 s 3 =, v(s 3 )=32 s 56 =,v(s 56 )=15 s 1 =, v(s 1 )=24 s 2 =, v(s 2 )=25 解:s=, 最大效益:11+30+20 = 61 12蛮力算法的效率 方程 x 1 + x 2 + + x n = m 的 非负整数 解的 个数估 计 : 可行解表示 成 0-1 序列:m 个1,n-1 个 0 1 . . . 1 0 1 . . . 1 0 . . . 0 1 . . . 1 x 2 个 x 1 个 x n 个 n=4, m=7 可行解 序列 1 0 1 1 0 1 1 1 0 1 13蛮力算法的效率 ) ) 1 ( )! 1 ( ! )! 1 ( ) , 1 ( 1 + + = + = + n m n m n m m n m C 序列个数是输入规模的指数函数 有没有更好 的 算 法? 14小结 问题求解的 关 键 建模:对输入参数和解给出形式化 或半形式化 的 描 述 设计算法: 采用什么算 法 设 计 技 术 正确性是否对所有的实例都得 到正确的解 分析算法效率 15

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报