当前位置:嗨网首页>书籍在线阅读

20-算法解析及优化拓展

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.3.6 算法解析及优化拓展

1.算法复杂度分析

(1)时间复杂度

约束函数时间复杂度为O(n),限界函数时间复杂度为O(1)。最坏情况下有O(2n)个左孩子结点调用约束函数,有O(2n)个右孩子结点需要调用限界函数,故国王护卫队问题回溯法求解的时间复杂度为O(n2n+12n)= O(n*2n),如图5-40所示。

567.jpg

图5-40 解空间树

(2)空间复杂度

回溯法的另一个重要特性就是在搜索执行的同时产生解空间。在所搜过程中的任何时刻,仅保留从开始结点到当前扩展结点的路径,从开始结点起最长的路径为n。程序中我们使用bestp[]数组记录该最长路径作为最优解,所以该算法的空间复杂度为O(n)。

2.算法优化拓展

因为解空间的子集树规模是确定的,我们改进优化只能从约束函数和限界函数着手,通过这两个函数提高剪枝的效率。在上述算法中,限界函数时间复杂度为O(1),已经没有改进的余地。而约束函数时间复杂度为O(n),是否可以改进呢?