第一讲_________贪心算法.pptVIP

  • 4
  • 0
  • 约2.25千字
  • 约 17页
  • 2020-07-21 发布于湖北
  • 举报
第一讲 贪心算法 “贪心算法”的思想 在对问题求解时,总是作出在当前看来是最好的选择。也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明) 注意: 若要用贪心算法求解某问题的整体最优解,必须首先证明贪心思想在该问题的应用结果就是最优解!! 一、事件序列问题 已知N个事件的发生时刻和结束时刻(见下表,表中事件已按结束时刻升序排序)。一些在时间上没有重叠的事件,可以构成一个事件序列,如事件{2,8,10}。事件序列包含的事件数目,称为该事件序列的长度。请编程找出一个最长的事件序列。 事件编号 0 1 2 3 4 5 6 7 8 9 10 11 发生时刻 1 3 0 3 2 5 6 4 10 8 15 15 结束时刻 3 4 7 8 9 10 12 14 15 18 19 20 算法分析: 不妨用Begin[i]和End[i]表示事件i的开始时刻和结束时刻。则原题的要求就是找一个最长的序列a1a2…an,满足: Begin[a1]End[a1]=…= Begin[an]End[an] 可以证明,如果在可能的事件a1a2…an中选取在时间上不重叠的最长序列,那么一定存在一个包含a1(结束最早)的最长序列。 (证明:略) 贪心算法的基本步骤 1、从问题的某个初始解出发。 2、采用

文档评论(0)

1亿VIP精品文档

相关文档