【算法作业】算法作业第五章

  1. 对回溯算法的理解(2分)

    1. 回溯法对任一解的生成,一般都采用逐步扩大解的方式。每前进一步,都试图在当前部分解的基础上扩大该部分解。它在问题的状态空间树中,从开始结点(根结点)出发,以深度优先搜索整个状态空间。这个开始结点成为活结点,同时也成为当前的扩展结点。在当前扩展结点处,搜索向纵深方向移至一个新结点。这个新结点成为新的活结点,并成为当前扩展结点。如果在当前扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。此时,应往回移动(回溯)至最近的活结点处,并使这个活结点成为当前扩展结点。回溯法以这种工作方式递归地在状态空间中搜索,直到找到所要求的解或解空间中已无活结点时为止。
    2. 运用回溯法解题的关键要素有以下三点:
      (1) 针对给定的问题,定义问题的解空间;
      (2) 确定易于搜索的解空间结构;
      (3) 以深度优先方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。
  2. 请说明“子集和”问题的解空间结构和约束函数(2分)

    1. 解空间结构是一棵二叉排序树
    2.  sum + a[t] <= c  ,如果加上当前结点的值小于问题所要求的和,则向左子树走,否则走向右子树。

  3. 请说明在本章学习过程中遇到的问题及结对编程的情况(1分)

本章学习的过程中,感觉在理解回溯法的开始有点难,当自己在编程的过程中实践后,才慢慢的体会到,感觉实践还是相当重要的一个步骤,结对编程让人感受到有队友的愉快感觉,有不清楚的点可以讨论,互相探讨互相促进,让人学习更加深刻,很开心。

猜你喜欢

转载自www.cnblogs.com/lhiscute/p/10170568.html