算法第四章作业
对贪心算法的理解
贪心算法是根据问题的特性,设计出的一种最直接、间接的算法。
贪心算法具有的两个重要特性:贪心选择性质和最优子结构性质。
一个问题能否使用贪心算法,是需要我们先根据问题的特性,想出一种方法,再利用反证法来证明这个贪心算法是否适用。
贪心选择性质:所求问题的整体最优解可以通过一系列局部最优解的选择,即贪心选择来达到。
最优子结构性子:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。
汽车加油问题的贪心选择性质
汽车加油问题,根据题目意思,只要当汽车剩余油量可行驶的距离,不足以到达下一个加油站,那么就要在本加油站加满油,若一开始距离第一个加油站的距离,就超过了汽车满油可行使的距离,则输出“No Solution!”。
本章学习过程中遇到的问题
1、在遇到一些比较简单的问题的时候,可以很快的想出和书上类似的贪心算法,但如果是比较难的问题,或者书上没有类似方法的,就很容易想不出来;
2、在设计出贪心算法之后,经常会忽略一些边界条件,导致pta无法通过,只能部分正确;
结对编程的情况
在结对编程中,我和珞洋是一个小组的。在pta第二题中,我本身设计的算法只能部分通过,而不知道为什么剩下一个测试点无法通过。后来自己测试了很久,还是没能发现问题,于是求助洛阳,他就给我举出了一个特例,推翻了我的贪心算法。
发现贪心算法不能简单地认为自己是对的,需要真的利用反证法来证明,否则就会走进死胡同里。