算法设计与分析 ——贪心法. 算法设计与分析 ——贪心法 贪心算法 主要内容: 介绍贪心法的基本原理,贪心算法设计的基本方法和应用例子 。

Slides:



Advertisements
Similar presentations
完美殺人筆記簿 【爸!我受夠了!】 第七組組員: 林正敏 陳筱涵 李蓓宇 許純宜 羅玉芬 謝文軒.
Advertisements

第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
第2章 证券市场的运行与管理.
精彩人生.
幼 兒 遊 戲 訪 談 組別:第七組 班級:幼保二甲 姓名:4A0I0008劉俐音 4A0I0043吳碧娟 4A0I0059劉又甄 4A0I0060江佳霓 4A0I0061蕭靖霓 4A0I0079王毓君.
人教版语文 三年级下册 语文园地四 作者:佚名 来源:网络.
品读论语之四---- 巧言令色非君子.
先秦诸子散文.
陈情表 李密 龙江一中高二语文备课组.
26个英语字母 let's go!.
16.桥 南边小学 韩巧仪 写法 洪水 形象 语言1 语言2 语言3 语言4 想象说话 图片.
第三章 函数逼近 — 最佳平方逼近.
組員:4A140013張瓊云 4A1I0039石宜芬 4A1I0909許峻綱 指導老師:王立杰老師
跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾. 跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾.
贪心算法 入门.
孟子名言 1. 幼吾幼,以及人之幼。 2.天时不如地利, 。 3. ,威武不能屈。 4.得道者多助, 。 5.穷则独善其身, 。 6.
寡人之于国也 《孟子》.
《高等数学》(理学) 常数项级数的概念 袁安锋
电话联系.
迎宾员礼仪 包头机电工业职业学校管理系 白琳 1.
小学生游戏.
算法设计与分析 授课教师:王秋芬 办公地点:7307
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
财 务 会 计 第四篇:供应链会计实务 制作人:谌君、熊瑜.
指導老師:陳韻如 班級:幼保二甲 姓名:林靜宜 學號:4A0I0033
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
第七章 图 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
What have we learned?.
动态规划(Dynamic Programming)
使用矩阵表示 最小生成树算法.
无向树和根树.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
知识点回顾 拓扑排序 关键路径 应用领域、求解步骤、算法实现过程 应用领域 求解步骤
JUFE • SSCE__Dr. Aihua Yin
3.8.1 代数法计算终点误差 终点误差公式和终点误差图及其应用 3.8 酸碱滴定的终点误差
线性规 Linear Programming
今天, AC 你 了吗? 2019/4/19.
WPT MRC. WPT MRC 由题目引出的几个问题 1.做MRC-WPT的多了,与其他文章的区别是什么? 2.Charging Control的手段是什么? 3.Power Reigon是什么东西?
第3章 贪心算法.
1.2 有理数 第1课时 有理数 伏家营中学 付宝华.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
知识点回顾 图的深度优先和广度优先遍历思想 图的深度优先遍历算法(用邻接表作为存储结构) 图的广度优先遍历算法(用邻接矩阵作为存储结构)
1.2 子集、补集、全集习题课.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
树和图 tree and graph 蔡亚星.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
汉字基本笔画名称和写法.
第七、八次实验要求.
Models and Software Practice of the Operations Research
20 谈礼貌 合肥市螺岗小学 赵勋.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
动态规划 Floyd最短路径算法 高文宇
贪心算法 主讲:朱佳 博士 华南师范大学计算机学院.
最小生成树.
线性规划 Linear Programming
第十七讲 密码执行(1).
第十二讲 密码执行(上).
插入排序的正确性证明 以及各种改进方法.
离散数学─归纳与递归 南京大学计算机科学与技术系
1、图的基本概念 2、图的存储结构 3、图的遍历与连通性
最小生成树 最优二叉树.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
3.3.2 两点间的距离 山东省临沂第一中学.
Cfc Zeilberger 算法 陈焕林 陈永川 付梅 臧经涛 2009年7月29日.
Presentation transcript:

算法设计与分析 ——贪心法

贪心算法 主要内容: 介绍贪心法的基本原理,贪心算法设计的基本方法和应用例子 。

贪心算法 一.贪心法的基本原理 1. 一个例子 贪心法是一种算法设计技术,通常用于求解最优化问题。 例1. 找钱问题:设有4种硬币,面值分别为25分,10分,5分和1分,要找出63分钱,问如何找钱可使得找出的硬币个数最少? 是否所有找钱问题都可用贪心法解?

贪心算法 一. 贪心法的基本原理 2. 贪心法的基本思想 基本思想: 通过一系列选择步骤来构造问题的解,每一步都是对当前部分解的一个扩展,直至获得问题的完整解。所做的每一步选择都必须满足: 1)可行的:必须满足问题的约束。 2)局部最优:当前所有可能的选择中最佳的局部选择。 3)不可取消: 选择一旦做出,在后面的步骤中就无法改变了。

贪心算法 一. 贪心法的基本原理 2. 贪心法的基本思想 贪心算法的几个经典例子: Dijkstra算法:求有向图的单源最短路径(8.2) Kruskal算法:求最小生成树 (8.3) Prim算法:求最小生成树 (8.4) Huffman树、Huffman编码的算法 (8.5)

贪心算法 一. 贪心法的基本原理 按贪心法解得: 25分 1个, 1分5个, 共6个 2. 贪心法的基本思想 贪心法不能保证总能得到最优解(一系列的局部最优选择不能保证最后得到整体最优解) 例2. 另一个找钱问题:设有3种硬币,面值分别为25分,10分和1分,要找出30分钱,问如何找钱可使得找出的硬币个数最少? 按贪心法解得: 25分 1个, 1分5个, 共6个 问题的最优解:10分3个

贪心算法 一. 贪心法的基本原理 两活动ai , aj (i≠j)相容是指: 2. 贪心法的基本思想 贪心算法的关键:贪心选择策略的确定。 例3. 活动安排问题:设有n个活动a1, a2, …, an , 每个活动都要求使用同一资源,而同一时间内只允许一个活动使用这一资源。已知活动ai要求使用该资源的起始时间为si,结束时间为fi,且si<= fi 。要求在a1, a2, …, an中选出最大的相容活动子集。 两活动ai , aj (i≠j)相容是指:

贪心算法 一. 贪心法的基本原理 si: 4 2 1 8 fi : 7 4 5 10 2. 贪心法的基本思想 例:n=4 , 活动: a1 a2 a3 a4 si: 4 2 1 8 fi : 7 4 5 10 贪心选择策略:按结束时间从早到晚安排活动,每次选择与已选出的活动相容的结束时间尽可能早的活动。 局部最优性:每次为资源留下尽可能多的时间以容纳其它活动。

贪心算法 贪心算法 结果:最大相容子集A={1,4,8,11} i si fi 1 4 2 3 5 6 7 8 9 10 11 12 13 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 贪心算法 结果:最大相容子集A={1,4,8,11}

贪心算法 一. 贪心法的基本原理 2. 贪心法的基本思想 贪心算法的特点:贪心算法往往效率高,一般时间复杂性为多项式阶。贪心算法一般较简单,其关键和难点在于贪心选择策略的确定,以及证明相应的贪心算法确实可求出最优解。

贪心算法 一.贪心法的基本原理 2.贪心法的基本思想 活动安排问题的贪心选择策略的正确性证明:证明贪心算法ACTIVITY_ARRANGEMENT求出的解为最优解。 证明思路:任意一个最优解都可通过替换变成该贪心算法求出的解,而且解的最优性不变。 贪心法除了用于求一些问题的最优解外,常用于求问题的近似最优解。

贪心算法 一. 贪心法的基本原理 2. 贪心法和动态规划 贪心法:每一步的选择不依赖于其子问题的解,选择是局部最优的,但不能保证最终得到最优解。 动态规划:问题的解依赖于其子问题的解,选择是全局最优的,可保证最终得到最优解。

贪心算法 二. 贪心算法设计示例 1. 分数背包问题 问题描述:设有一个容量为C的背包,n个物品的集合U={u1, u2, …, un},物品ui的体积和价值分别为sj和vj,C, sj, vj都是正实数。在U中选择物品装入背包,使得装入背包的物品总价值最大。设允许取每种物品的一部分装入背包。

贪心算法 二. 贪心算法设计示例 1. 分数背包问题 数学模型: z=max v1x1+ v2x2+…+ vnxn s1x1+ s2x2+…+ snxn<=C 0<= xi <=1, i=1, 2, …, n 解的意义: xi表示物品i装入背包的部分占该物品全部的比例。

贪心算法 二. 贪心算法设计示例 1. 分数背包问题 例:n=3, C=20 物品: u1 u2 u3 体积si: 18 15 10 价值vi: 25 24 15 贪心选择策略:按单位体积价值从大到小的顺序选择物品装入背包。 贪心算法

贪心算法 二. 贪心算法设计示例 2.有期限的作业安排问题 问题描述: 给定n个作业j1, j2, …, jn,作业ji 的期限为di 收益为pi , di , pi为非负整数, i=1, 2, …, n。规定只有在期限di内完成任务ji才能得到收益pi。设只有一台处理机,同时只能处理一个作业,且完成每个作业都需要一个单位时间。问如何安排作业处理顺序使得总收益最大? 该问题就是求一个作业序列 使得 。

贪心算法 二. 贪心算法设计示例 2.有期限的作业安排问题 例:n=4 , 作业: j1 j2 j3 j4 期限di: 2 3 1 3 收益pi: 100 150 200 250 贪心选择策略:按收益从高到低的顺序逐个安排作业的处理顺序,在不影响收益高的作业的期限的前提下,尽量让期限早的作业先处理。

贪心算法 二. 贪心算法设计示例 2.有期限的作业安排问题 贪心算法:贪心算法 要点: 1)先将 n个作业按收益从高到低排序,按排序的结果顺序 考虑作业安排。 2)已安排的作业序列始终按期限从早到晚的顺序排列。 3)当安排某作业会使得已安排的作业超期时,舍弃当前作业。

贪心算法 二. 贪心算法设计示例 3. 最小生成树(Prim算法) 有关概念: 生成树:设G=(V, E)为连通图,G的生成树是G的包含其所有顶点的极小连通子图(这里极小的含义是包含的边最少)。 一个连通图的生成树不一定唯一。 含n个顶点的连通图的生成树恰含n-1条边。 最小生成树:设G=(V, E)为连通网,G的最小代价的生成树称为G的最小生成树。

贪心算法 二. 贪心算法设计示例 3. 最小生成树(Prim算法) 有关概念: 生成树的代价:生成树边上的权值总和。 最小生成树是否唯一? 求最小生成树就是求出其n-1条边。

贪心算法 二. 贪心算法设计示例 T= ; X={1}; Y=V-{1}; 3. 最小生成树(Prim算法) Prim算法的基本思想 设连通图G=(V, E), V={1, 2, …, n}, G的最小生成树的边集为T, 从一个顶点开始生成G的最小生成树: T= ; X={1}; Y=V-{1}; while Y 从{(u, v)| u X, v Y}中选出最小权值的边(x, y); X=X {y}; Y=Y-{y}; T=T {(x, y)} end while (图例: 图8.5 (P154) )

贪心算法 二. 贪心算法设计示例 Prim算法: Prim算法 算法的正确性 MST性质:设G=(V, E)是一个连通网,U为V的一个非空真子集。若(u, v)是满足u U, v V-U的具有最小权值的边,则必存在一棵包含边(u, v)的最小生成树。