贪心算法

算法第四章作业

天大地大妈咪最大 提交于 2019-12-05 04:43:59
你对贪心算法的理解 在对问题求解时,不去考虑整体的最优,而直接地做出当前的最优选择。我个人认为,贪心算法的确是一种简洁直观的算法,但是在不做证明的情况下,很难确认是否能使用贪心算法。对比于分治法以及动态规划,贪心算法更直接、更直观,但贪心算法的适用范围也比较受限。 贪心算法的两个基本要素:贪心选择性质和最优子结构性质。 请说明汽车加油问题的贪心选择性质 用汽车能走的距离与下一站的距离比较。即汽车剩余的油量若能使汽车走到下一个加油站,则汽车走到下一个加油站;若汽车不能走到下一个加油站则加油。 请说明在本章学习过程中遇到的问题及结对编程的情况 在证明贪心选择性质的时候有一些懵。这次结对编程其实两个人都有在打代码,看谁先打出来,就用谁的。代码基本大同小异,只是大家的理解不同罢了。 来源: https://www.cnblogs.com/yjh838328354/p/11906837.html

算法第四章作业

倖福魔咒の 提交于 2019-12-05 04:15:24
1.你对贪心算法的理解 答:贪心算法就是在当前状况下做出最佳选择,不需要在整体上考虑。这并不适用于所有问题,只满足部分特定问题。 2.请说明汽车加油问题的贪心选择性质 答:判断当前油量能走过的最大路程,找到此路程最后的一个加油站,当油量不足以走到下一个加油站时,加满油再进行贪心选择。 3.请说明在本章学习过程中遇到的问题及结对编程的情况 答:个人感觉贪心算法对思路的要求较高,有时会难以判断是否能够使用贪心算法,且贪心算法没有固定的框架,在用代码实现想法的过程中经常出现各种问题。结对编程能帮助我解决思路上的一些问题,让我更好理解,纠正我的一些错误,达到相互学习的目的。 来源: https://www.cnblogs.com/yehaolin/p/11905055.html

第四章贪心算法

风格不统一 提交于 2019-12-05 03:10:41
一:对贪心算法的理解: 贪心算法又称之为贪婪算法,在考虑问题时,总是做出在当前状况来说最好的算则,而不从整理来考虑。从某种意义上说是局部最优解,贪心算法所得到的答案并不一定是整体最优解,所以在使用贪心算法一定要考虑清楚,是否能使用贪心算法。 选择的贪心策略必须具有无后效性,即当前选择的结果必须不能对之前的结果状态产生影响,而只与当前状态有关。 二:请说明汽车加油问题的贪心选择性质: 该题目求加油最少次数,即求最优解的问题,可分成几个步骤,一般来说,每个步骤的最优解不一定是整个问题的最优解,然而对于有些问题,局部贪心可以得到 全局的最优解。。我们可以假设不到万不得已我们不加油,即除非我们油箱里的油不足以开到下一个加油站,我 们才加一次油。在局部找到一个最优的解。却每加一次油我们可以看作是一个新的起点,用相同的递归方法进行下去。最终将各个阶段的最优解合并为原问题的解得 到我们原问题的求解。 三:请说明在本章学习过程中遇到的问题及结对编程的情况: 关于贪心算法,我不知道为什么总是想到贪吃蛇,才知道算法讲的什么意思,原理很简单,大部分都是例子,但是我感觉掌握还是要下功夫的,重点在于如何针对特定的问题进行贪心,某类问题是否适合用贪心算法计算。“01背包问题”,是否可以用贪心算法来解决?我的思考是不行,因为容易找出样例。结对编程我们是两个人同时打代码,然后交流选用更简洁方便的代码。 来源:

算法第四章作业

本小妞迷上赌 提交于 2019-12-05 02:54:38
1.你对贪心算法的理解 贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择,从而希望能够导致结果是最好或者最优的算法。 贪心算法与动态规划相识,都是求问题的最优子结构性质,但是贪心算法是依赖与上一问题的最优解,而动态规划依赖于将来问题的最优解,所以贪心算法法则是从上而下,动态规划是从下而上的。 2.请说明汽车加油问题的贪心选择性质 汽车问题与磁带问题相识,可以看做有多个磁带,加油站的距离看作程序大小,最后得出尽量少的磁带个数,用x记录每次行驶后的油量,m记录加油次数,每行驶一个加油站后x-=a[i],判断x<a[i+1],若成立则m++,x=n。 3.请说明在本章学习过程中遇到的问题及结对编程的情况 贪心算法的解决最关键是寻找贪心策略,像是上机实践的第二题,一开始想出的贪心策略可能是正确的,但是实验起来过于麻烦,后重新讨论寻找贪心策略来解决问题。结对情况是两人同时思考问题讨论思路,最后分别打出代码,取最好的代码,中途遇到问题重新讨论。 来源: https://www.cnblogs.com/xiaozhao-/p/11899847.html

算法第四章作业

亡梦爱人 提交于 2019-12-05 02:53:20
对贪心算法的理解 贪心算法是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。贪心算法是采用从顶向下、以迭代的方法做出相继选择,每做一次贪心选择都会将所求问题简化为一个规模更小的子问题。 汽车加油问题的贪心选择性质 行驶到下一个加油站之前,判断当前所剩的油量是否能支撑汽车到达下一个加油站,如果能,那么汽车不加油,反之,汽车加油。如果加油也不能行驶到下一个站点,问题无解。 在本章学习过程中遇到的问题及结对编程的情况 学习过程中主要是不能很好判断每个问题的贪心选择性质。 结对编程比较顺利,没有遇到问题。 来源: https://www.cnblogs.com/vanora-/p/11899723.html

贪心算法

∥☆過路亽.° 提交于 2019-12-05 02:52:25
一:概念:不考虑整体最优,做出的选择只是在某种意义上的局部最优。 二:性质 (1)贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优的选择。贪心算法可行 的第一个基本要素。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做 的贪心选择最终导致问题的整体最优解。 (2)最优子结构性质:一个问题的最优解包含其子问题的最优解。一个问题的最优子结构性质是 该问题可用动态规划或贪心算法求解问题的关键特征。 三:贪心算法解题步骤 贪心策略的选择必须具备无后效性,就是指某个状态以前的过程不会影响以后的状态,只与当 前状态有关。 步骤一:建立数学模型描述问题。 步骤二:把求解的问题分解成若干个子问题。 步骤三:对每一个问题求解,得到子问题的局部最优解。 步骤四:把子问题的局部解合成原问题的一个解。 来源: https://www.cnblogs.com/Edviv/p/11899705.html

算法第四章作业

偶尔善良 提交于 2019-12-05 02:48:42
算法第四章作业 对贪心算法的理解 所谓贪心算法,即是指从问题的初始状态出发,通过若干次的贪心选择而得到的最优值(或较优值)的一种求解问题策略,即贪心策略。其实贪心算法简单来说,就是在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。贪心算法设计的关键在于贪心策略的选择,但贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备某个状态以后的过程不会影响以前的状态,只与当前状态有关的性质。在使用贪心算法的思想来解决算法问题时,主要是按照下面这样的思路进行: 将问题抽象为数学模型,也即是建立数学模型来描述问题。 把求解的问题分成若干个子问题。 对每一子问题求解,得到子问题的局部最优解。 把子问题的解局部最优解合成原来问题的一个解。 贪心算法主要适用于由局部最优策略能导致产生全局最优解的这样一些算法问题的解决中,其每一步都依赖于当前已经做出的所有选择。贪心算法也是一种自顶向下(就是每一步,根据策略得到一个当前最优解。传递到下一步,从而保证每一步都是选择当前最优的。最后得到结果)的算法。贪心算法具有的一个特征就是贪心算法所作的选择可以依赖于以往所作过的选择,但决不依赖于将来的选择,也不依赖于子问题的解,因此贪心算法与其他算法相比具有一定的速度优势。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。

程序存储问题(贪心算法)

社会主义新天地 提交于 2019-12-05 01:08:49
问题描述 条件:磁盘空间有限;程序大小不同。 在有限的磁盘上存放尽可能多的程序,就要求选择的程序尽可能小。 算法描述 贪心算法:总是从可选程序中选择最小的试放入磁盘。 1. 排序:对程序按大小升序排; 2. 循环添加:从i = 1开始,选择排序后序列的第 i 个(即a[i],1 <= i <= n)个加入暂存(sum,初始为0),判断是否满足sum小于磁盘空间,是则计数(count++),否则跳出循环; 反证法证明贪心选择可以推出最优解: 1. 证明选择可以从贪心(最小程序)开始:选择从最小程序开始即解不为空时可以选择最小程序。假设解不为空,从这样得到的选择序列中任选一个,用最小程序替换,放入程序数(count)不变; 2. 证明最优子结构性质:在解不为空、第一次可以选择最小程序的前提下,假设在最优解中去掉第一次选择的最小程序后得到的子问题的最优解的count_0大于原问题最优解的count_1-1,那么将最小程序加入选择产生的解的count_2大于count_1,此时count_1不是最优解,这不成立。故此问题具有最优子结构性质。 时间和空间复杂度分析 时间复杂度:程序进行了一次快排(O(nlogn))和循环(O(n)),故时间复杂度为O(nlogn); 空间复杂度:程序new了一个一维数组(a[n])用于存放每个程序的大小,故时间复杂度为O(n)。 心得体会

算法第四章作业

帅比萌擦擦* 提交于 2019-12-05 00:41:17
1. 对贪心算法的理解 贪心算法(又称贪婪算法)是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不是从整体最优上加以考虑,所做出的选择是在某种意义上的局部最优解。 不是所有问题都能通过贪心算法得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。 贪心算法有两个基本要素:贪心选择和最优子结构。 贪心选择是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到,这也是贪心算法与动态规划算法的主要区别。贪心选择是采用从顶向下、以迭代的方法做出相继选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择的性质,必须证明每一步所作的贪心选择最终能得到问题的最优解。通常可以首先证明问题的一个整体最优解是从贪心选择开始的,而且做了贪心选择后,原问题简化为一个规模更小的类似的子问题。然后,用数学归纳法证明,通过每一步贪心选择,最终可得到问题的一个整体最优解。 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。问题的最优子结构性质是该问题可用贪心算法或动态规划算法求解的关键特征。贪心算法的每一次操作都对结果产生直接影响,而动态规划则相反。贪心算法对每个子问题的解决方案都做出选择,不能回退

『嗨威说』算法设计与分析 - 贪心算法思想小结(HDU 2088 Box of Bricks)

别说谁变了你拦得住时间么 提交于 2019-12-04 23:58:29
本文索引目录: 一、贪心算法的基本思想以及个人理解 二、汽车加油问题的贪心选择性质 三、一道贪心算法题点拨升华贪心思想 四、结对编程情况 一、 贪心算法的基本思想以及个人理解 :   1.1  基本概念:   首先我们从课本中仔细品读基本的贪心概念,顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。   因此对于贪心算法来说,这类算法没有固定的模板套路,当局部最优与全局最优解一致性被证明之后,即可使用贪心算法。   1.2  使用条件:   (1) 需要具有贪心选择性质   所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。   动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。   对于一个具体问题,要确定它是否具有贪心选择性质