算法第四章作业
一、对贪心算法的理解:
1、贪心算法就是一个求解最优化的问题的算法,在算法的每个步骤中,每一次都面临很多选择;在每个决策点选出当前看来最佳的选择,作出局部最优解的选择,以便于推导出全局最优解。
2、求解最优问题有两个关键要素:贪心选择性质以及最优子结构。
贪心选择的性质是当作出选择时,不必考虑子问题的最优选择,仅需解决当前的最优选择。
最优子结构即是一个问题的最优解包含其子问题的最优解。
二、汽车加油问题中,贪心选择的性质即是每到一个站点,就减掉当前油能够走的路程,然后比较下一个站点到当前站点的路程所需的油量是否小于或者等于当前的油量,若不足,则加油一次。本质就是不断寻找每一个极致的油不够到下一个站点的状态,进而加油一次,作为一个最优解,再从之后的状态中,再寻求最优解。
三、
学习中遇到的困难:在分析问题的时候很难看出该问题的贪心性质所在,问题类型多种,想将贪心算法运用自如有点难。每当找不到贪心性质是什么的时候,就是使用暴力破解,直接上普通的代码,直接尽量解决,导致的后果都是思路不清晰,代码一片混乱,没有运用贪心算法那样子的简洁了然。还有就是有的问题很难分析,以为有很多种情况,有的可能没涉及到,所以频频出错。
结对编程的情况:有两个人一起讨论问题,在一些错误的想法上不会停留太多时间,有时候自己做题经常在一些错误的思路上徘徊,结果是什么都打不出来或者是代码一片混乱(虽然能通过),但是可读性差,结对编程互相指出问题点,是一个很不错的学习方法。