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

1. 你对回溯算法的理解

1)回溯法描述:

       回溯法按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。

如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯;否则,进入该子树,继续按深度优先策略搜索。

2)用回溯算法解决问题的一般步骤:

     1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。

     2 、确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。

     3 、以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。

     确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。

     在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,

     则当前扩展结点就成为死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法即以这种工作方式递归地在解空间中

  搜索,直至找到所要求的解或解空间中已没有活结点时为止。 

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

    在学习了《算法分析与设计》这门课后,我对常见的算法有了一个基本的了解。

    第一章--算法概述,算法和程序的定义及组成,以及评价算法优劣的标准--时间复杂度T(n)=O(f(n))和空间复杂度S(n)。

    第二章--递归与分治策略。
    第三章--动态规划。

    第四章--贪心算法。

    第五章--回溯法。
    第六章--分支限界法。

    通过对上述算法的学习,这对以后问题求解有很大的帮助。

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

  (1)做最大子列和的问题实验的时候,一开始总想着低轨道最底层,导致不能理解算法的思想,不过经过老师的解释,基本清楚了。

  (2)动态规划填表是用一维数组还是二维数组,有时会很纠结,如果老师能确定哪一类题目用一维数组,哪一类题目用二维数组就好了。

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

    课下成立互助小组,安排编程能力强的学生为组长,在小组训练中不断分享编程实践心得,小组长协助编程能力弱的组员一步步从简 单问题分析,到复杂问题建模,最终实现电脑编程。  

 

 

posted @ 2020-12-16 21:21  唐嘉欣  阅读(122)  评论(0编辑  收藏  举报