贪心算法详解.pdfVIP

  • 50
  • 0
  • 约1.96万字
  • 约 40页
  • 2017-10-08 发布于湖北
  • 举报
贪心算法详解

第第1166章章贪心算法贪心算法 理解贪心算法的概念理解贪心算法的概念 掌握贪心算法的基本要素 理解贪心算法与动态规划算法的差异 通过范例学习贪心算法设计策略 1 算法导论 1616.11 活动安排问题活动安排问题 当一个问题具有最优子结构性质时,可用动态规划法求解, 但有时用贪心算法求解会更加的简单有效。 顾名思义,贪心算法总是作出在当前看来最好的选择。也 就是说贪心算法并不从整体最优考虑,它所作出的选择只 是在某种意义上的局部最优选择。当然,希望贪心算法得 到的最终结果也是整体最优的。虽然贪心算法不能对所有 问题都得到整体最优解,但对许多问题它能产生整体最优 解解。。如单源最短路经问题单源最短路经问题,,最小生成树问题等最小生成树问题等。。在在一些情些情 况下,即使贪心算法不能得到整体最优解,其最终结果却 是最优解的很好近似是最优解的很好近似。。 2 算法导论 1616.11 活动安排问题活动安排问题 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使 用同一资源,如演讲会场等,而在同一时间内只有一个活 动能使用这一资源。每个活动i都有一个要求使用该资源 的起始时间的起始时间ss 和和一个结束时间个结束时间ff ,且且ss ff 。如果选择了活动如果选择了活动ii , i i i i 则它在半开时间区间[s , f )内占用资源。若区间[s , f )与区 i i i i 间间[[s ,, f )) 不相交不相交,,则称则称活动活动i 与活动与活动jj 是相容的是相容的。也就是说也就是说,, jj jj 当s≥f 或s ≥f 时,活动i与活动j相容。 i j j i 问题:选出最大的相容活动子集合。 3 算法导论 1616.11 活动安排问题活动安排问题 (用动态规划方法) 步骤1:分析最优解的结构特征 — 构造子问题空间: S ={ a ∈S: f≤s f ≤s} ij k i k k j S 包含了所有与a 和a 相兼容的活动,并且与不迟于a 结束和不早于a ij i j i j 开始的活动兼容开始的活动兼容。。此外此外,,虚构活动虚构活动aa 和和aa ,,其中其中ff 0,0, SS =∞。。原原 00 n+1n+1 00 n+1n+1 问题即为寻找S 中最大兼容活动子集。 0,n+1 — 证明原问题具有最优子结构性质。即:若已知问题S 的最优解A 中包含活 ij ij 动a ,则在S 最优解中的针对S 的解A

文档评论(0)

1亿VIP精品文档

相关文档