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

41-算法解析

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

5.6.6 算法解析

(1)时间复杂度

最坏情况下,如图5-111所示。除了最后一层外,有1+n+n(n−1) +…+n(n−1)(n−2)…2nn!个结点需要判断限界函数,判断限界函数需要O(1)的时间,因此耗时O(nn!)。在叶子结点处记录当前最优解需要耗时O(n),在最坏情况下回搜索到每一个叶子结点,叶子个数为n!,故耗时为O(nn!)。因此,时间复杂度为O(nn!)≈O( (n+1)!)。

669.png

图5-111 解空间树(排列树)

(2)空间复杂度

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