算法第五章作业

1、你对回溯算法的理解

回溯法是一种穷举类型的算法,与其说它是一种算法,倒不如说它是一种试法。回溯法并没有什么高深的算法思想,虽然名字起的很高规格,但其实它的算法性连二分查找都比不上。这里说的算法性其实就是指技巧性,对问题特性了解越深入,越能创造出很巧妙的算法,在时间复杂度的级别上提高算法效率。这体现了算法效率与适用性之间的矛盾,二分查找效率很高,但适用性比较低,类似的还有著名的KMP算法。而穷举法效率最低,但几乎适用于所有问题。

回溯法是一种试探性算法,从这一点上看,它很像穷举法。但它终究不是穷举法,回溯法是有组织的进行穷举,在试探过程中不断通过题设要求减少搜索空间,而这种减少不是一个一个解的减少,而是对搜索空间进行大规模剪枝,从而使得实际搜索空间远远小于问题的解空间,所以回溯法的实际运行效率还是比较高的。

2、请说明子集和问题的解空间结构和约束函数

解空间结构:

 

约束函数:

  ①引入一个记号:B(X(1),...,X(k))表示是否可以把第K个正数加入进来,所以它的取指为true或者false。

  ②所有数的sum 优先 比较

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

问题:用回溯法时,约束函数&限界函数难构建(依然超时)

结对编程情况:良好,互帮互助,提高编程能力。

posted @ 2019-12-18 12:56  AloneGhost  阅读(109)  评论(0编辑  收藏  举报