1. 对回溯算法的理解

  (1)回溯法可以系统地搜索一个问题的所有解或任一解,具有系统性和跳跃性。回溯法在问题的解空间树中,按深度优先策略从根结点出发搜索解空间树。我们列出的这个解空间通常用树来表示,就叫做解空间树。

      (2)具体内容:算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。

  (3)用回溯法解决问题分四步:①明确定义问题的解空间 ;

                  ②确定易于搜索的解空间结构

                  ③以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索;

                  ④常常用到约束函数在扩展结点处剪去不满足约束的子树、用限界函数剪去得不到最优解的子树。其中,约束函数通常代表着待解决问题给出的已知条件,而限界函数用一个隐藏条件(自己合理设置)去将一些不可能生成最优解的树枝剪掉。

 

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

         关于课程:回顾整个学期的算法课程,我们所学的算法难度从浅入深:我记得第一节课老师就说了斐波那契数列,也学会了如何用抽象的表达式去说明一个算法思想;再后来慢慢学会递归分治法、动态规划、贪心算法、回溯法、分支界限法......这些算法,特别是动态规划和回溯法,当时学的时候可谓是杀死了不少脑细胞,在沉醉其中的同时又忍不住吐槽:好!难!我的小脑瓜怎么就不灵光了呢?

        关于结对编程:去实验室上机是我编程能力提高的一个较大推动力,因为上机意味着时间有限、要迅速消化老师所讲内容、把知识运用到编程中,最后还要给老师讲清算法的思路以及某些步骤的作用,去实验室上机给我的帮助很大,而且对于编程内容也更记忆深刻。在结对编程中,我的小伙伴任宜炫同学比我的编程能力强,可以看出是经常动手编程的人,同时她也非常耐心的在帮助我,我们两个经常交流,互相帮助,我对算法的理解也更丰富了。

        关于写博客:这是我第一次将自己所学内容分享在网上。现在学期末尾,回过头来看,这不仅仅是一种课程的进度记录,不仅仅是老师要求的作业,更是一种我不断成长的记录,当我看自己曾经写过的博客,就会想起当时我的脑海中的思考、我对这个算法的理解,和今天的我做一个比较,也能从中收获很多。同时,我也能看到班内其他同学的分享和理解,也拓宽了我的思路。总的来说,我会以此为开端,以后会每周花一些时间,总结这周学习的知识发在博客里。

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

    困难主要是在算法的理解上,很多时候以为自己懂了,结果编程的时候还是觉得“差一口气”,所以难免会有些懊恼。不过看到自己打出来提也是真的开心!有些时候自己想不到解题的方法,还是要看网上的代码才能做出来。

    

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

     首先非常感谢郑琪老师,您是我入学以来最喜欢的老师没有之一。您上课的时候非常精神,我们几乎不走神(除非真的是尽力了,结果发现自己听不懂哈哈哈哈),注重细节,针对难的地方会多讲几次。很遗憾的是,没有抢到您的操作系统实践,不过那个时间我没课,所以会去蹭课的哈哈哈。另外,老师要好好休息,注意身体,感觉您还是过于劳累了。

    建议:希望老师在传授知识的同时,也可以传授一些做题的技巧,从学生的视角入手,引导我们怎么解题。有些时候老师就直接抛出通式、或者直接给出方法,这样虽然我们知道这题该咋做了,可是还没有真正学会怎么思考应对此类题。

    zq,永远滴神!