算法第五章作业及学期总结

算法第五章作业及学期总结

1. 你对回溯算法的理解

实现回溯法首先得构造解空间树(子集树和排列树),然后以深度优先的方式搜索解空间,递归或迭代;并且要设计剪枝函数避免无效搜索,使用约束函数,剪去不满足约束条件的路径或使用限界函数,剪去不能得到最优解的路径。

回溯法要注意的点有:结束条件,即什么时候会结束该分支的回溯,否则会陷入无限循环。

还有就是下步执行,下一步所有可能的操作是什么,该操作对应到DFS递归函数里的参数变化会是什么。

2. 你学习《算法分析与设计》课程的收获

本学期通过学习《算法分析与设计》课程,主要学习并掌握了分治法、动态规划法、贪心算法、回溯法四大算法,同时也了解了随机化算法、分支界限法等算法。

学习了这些算法,在拿到一道编程题后,不再只是直接暴力求解,而是会去思考运用什么样的算法可以更快更好的求解。在同样的一道题目中,可能可以用许多种办法去求解,不同的方法会得到不同的时间复杂度,运行时间、效率。

学会了从算法的角度去思考并解决问题,对于自身的解题能力会有很大的提升。

3. 你在学习过程中曾遇到了哪些困难,希望老师或助教及时给予帮助。

在学习四大算法的过程中,一开始对动态规划算法的递归方程不是很理解。

比如用动态规划法求解0-1背包问题,如何递归地定义最优解,填表的顺序是怎样的,为什么递归方程要这样写,代表着什么意思?都理解的比较的模糊不清。但是经过查阅资料,仔细阅读再自己体会之后,就对用动态规划法求解0-1背包问题有了比较好的理解。

在平时解题过程中,有一些过不了的测试点很困扰我。在PTA或者是期中考试的LPOJ上解题,有测试点过不了都没有具体的反馈,这样修改起代码来就比较的费时和费精力。

4. 你对本门课程的教学有哪些建议

整体都可以,讲解清楚,课程安排得当。没有什么大问题,无建议。

posted @ 2020-12-19 15:28  陈億谋  阅读(97)  评论(0)    收藏  举报