第五章作业及总结
1. 你对回溯算法的理解
回溯法本质上是深度优先搜索,解集树通常为n层二叉树或n层m叉树,哪种适合用哪种,因为使用了递归,所以总体上时间复杂度和空间复杂度较高,不如动态规划高效,但简单易解,比较容易想到解法。另外评价一个回溯算法的好坏可以通过剪枝函数来评判,好的多个剪枝函数,可以使回溯更高效,避免无效搜索,好的回溯应该是到达叶子结点则一定为一个可行解,而不必再判断是否为可行解。
2. 你学习《算法分析与设计》课程的收获
该课程系统的讲解了许多流行且实用的算法,加深了我对算法的印象,更让我深刻意识到,好的软件应该是好的数据结构和好的算法的有机结合。而每个算法不能简单的说明谁好谁坏,比如八大排序算法, 具体场景具体分析。
3. 你在学习过程中曾遇到了哪些困难,希望老师或助教及时给予帮助。
解一道题首先要思考使用怎么样的数据结构和怎样的算法,算法中贪心和动态规划虽然高效,但是很多时候是很难想到如何贪心和定义状态转移方程的,而这也是我头疼的地方,只有多多练习,多看题解才能有感觉,至少现在看到一道题能大概知道它要用什么算法了,可实现部分还有点困难。
4. 你对本门课程的教学有哪些建议
多多能有实践课,讲理论太多容易懵。学算法还是多多打代码比较好。