首页 > 编程知识 正文

算法性能主要从哪两个指标进行分析,回溯算法应用

时间:2023-05-04 15:56:17 阅读:156581 作者:2842

配置文件

“关于回溯算法的复杂性,网络上的资料很混乱。 一些所谓的经典面试书不用回溯算法。 算法书也避开了这一点,感觉就像算法中的模糊边界”。

“所以,这是我个人理解,对内容持开放态度,集思广益,欢迎大家讨论! " "

以下过程计算空间复杂性时,将计算系统堆栈(不是数据结构中的堆栈)所占用的空间。

子集问题分析:

时间复杂度: o(n*2n )不取各元素的状态,所以时间复杂度为o ) 2n ),需要嵌入数组才能构建各子集,并且需要o ) n ),最终时间复杂度: o ) n

空间复杂度: o(n ),因为递归的深度为n,所以系统堆栈使用的空间为o ) n ),各层递归使用的空间为常数水平。 请注意,代码中的result和path是全局变量。 即使放入自变量,被传递的也是参照,并不是新申请存储器空间,最终空间复杂度为o ) ) n ) )。

列举问题分析:

时间复杂性: o(n )! 可见,这一点从数组的树视图中可以清楚地看到,每层的节点是n,第二层的每一个分支伸展n-1个分支,下面伸展n-2个分支,所以到叶的节点一共是n * n-1 * n-2 * … 1=n!

空间复杂性: o(n )与子集问题相同。

组合问题分析:

时间复杂度:由于o(n*2^n )的组合问题其实是种子集问题,所以组合问题的最坏情况也不会超过子集问题的时间复杂度。

空间复杂性: o(n )与子集问题相同。

n皇后问题分析:

时间复杂性: o(n )! 是。 实际上,看树形图的话,直观上是o(n^n ),但是因为皇后之间不能见面,所以在检索中会有剪枝。 最糟糕的是o ) n!n! 表示n*(n-1 )…*1。

空间复杂性: o(n )与子集问题相同。

数独问题分析:

时间复杂度: o(9^m ),m为’.’的数。

空间复杂度: o(n2 ),递归深度为n2

“一般来说,回溯算法的复杂性是指数时间的复杂性,这也是摘要吧。 " "

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。