不,会再见

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 对回溯算法的理解

    基本思想:构建问题的解空间树,在其解空间树中,从根节点出发,进行深度优先搜索。在搜索过程中,对解空间树

        的每个结点进行判断,判断该结点是否包含问题的解,若肯定不包含,则跳过对以该结点为根的子树的搜索,

        逐层向其父结点回溯。否则,则进入该子树,继续按深度优先策略搜索。

 步骤:1、针对所给问题,定义其解空间

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

     3、深度优先搜索其解空间,并在搜索过程中用剪枝函数避免无效搜索

 剪枝:回溯法搜索空间树时,常用限界函数约束函数避免无效搜索,其中约束函数将不满足约束条件的子树剪去,

     限界函数将得不到最优解的子树剪去。一般可以利用这两种剪枝方式提升算法的效率,避免大量的不必要搜索。

 常见的解空间:常见的解空间有子集树和排列树两种,

     ①:当问题是从n个元素的集合S中找到满足某种性质的s的子集时,相应的解空间为子集树,通常存在2n个叶结点。

        0-1背包的问题相应解空间即为子集树。                         

     ②:当问题是确定n个元素的满足某种性质的序列时,相应的解空间树为排列树通常有n!个叶结点。

        旅行售货问题的解空间即为排列树。

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

      通过学习本门课程,我能更准确的对程序的时间复杂度做出判断。同时,还学到了很多使用的算法,在掌握之后

  能够把这些学到的算法运用到实际的编程过程中。

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

     刚开始学习贪心算法的时候,不是很能搞清楚贪心算法和动态规划的区别。

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

      希望平时上理论课的时候时不时提问一下吧。此外,老师讲课幽默有趣又清楚,希望继续保持,谢谢老师。

posted on 2020-12-19 18:50  不,会再见  阅读(137)  评论(0)    收藏  举报