算法第四章作业

一、你对贪心算法的理解

1、贪心算法(又称贪婪算法)是指,在对求解问题时,总是做出在当前看来是最好的选择。

2、利用贪心法求解的问题应具备如下2个特征 :
  (1)  贪心选择性质:
       一个问题的整体最优解可通过一系列局部的最优解的选择达到,并且每次的选择可以依赖以前作出的选择,但不依赖于后面要作出的选择。
       这就是贪心选择性质。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。
(2)最优子结构性质:
         当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用贪心法求解的关键所在。
         在实际应用中,至于什么问题具有什么样的贪心选择性质是不确定的,需要具体问题具体分析。
 
二、请选择一道作业题目说明你的算法满足贪心选择性质

1、问题描述:

        数轴上有n个闭区间[ai,bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。

 2、贪心策略:

        按照b1<=b2<=b3…(b相同时按a从大到小)的方式排序排序,从前向后遍历,当遇到没有加入集合的区间时,选取这个区间的右端点b。

(1)区间包含的情况:当小区间有一个点被取到时,大区间一定有一个点被取到。所以我们应当优先选取小区间中的点,从而使大区间不用考虑。

         按照上面的方式排序后,如果出现区间包含的情况,小区间一定在大区间前面。所以此情况下我们会优先选择小区间。

(2)排除情况1后,一定有a1<=a2<=a3......

        对于区间1来说,显然选择它的右端点是明智的。因为它比前面的点能覆盖更大的范围。

 

三、请说明在本章学习过程中遇到的问题及结对编程的情况

       贪心算法相对动态规划较容易,经过一段时间的磨合,合作编程的效率有所提高。

      

 

 

posted @ 2020-11-10 23:18  唐嘉欣  阅读(78)  评论(0编辑  收藏  举报