gpt4 book ai didi

大 O 西格玛符号

转载 作者:行者123 更新时间:2023-12-01 23:13:27 24 4
gpt4 key购买 nike

如果 someWork(..),这个循环的大 O 是什么?确实i操作?算法someWork(..)做更多的工作作为 i增加。如何用西格玛符号表示解?

i <--2
while (i < n)
someWork (..)
i <-- power (i,2)
done

首先, i <-- power (i,2)O(log n)someWork (..)好像是 O(log n)也是,因为它做更多的工作 i增加。将两个复杂度相乘得到 O((log n)²) .确认?

最佳答案

在循环的每一轮中 2 的指数会翻倍。所以在k -th 轮数 i将是 22k .
只要 22k < n,循环就会持续下去成立,相当于k < log log n .正是log₂ log₂ n ,但由于除常数因子外,所有对数都相等,我只写 log log n .

someWork()是否O(22k)本轮操作k ,你得到的总复杂度为

O( 2 + 22 + 222 + 223 + ... + 22log log n )

这简化为 O(2 ⋅ 22log log n ) = O(n) .

要查看简化,请查看以下内容:
号码2 + 2² + 2⁴ + 2⁸可以用二进制写成100 010 110 .所以你可以看到

2 + 221 + 222 + ... + 22k < 2 ⋅ 22k

成立,因为它等于 100 010 110 < 1 000 000 000 .

编辑 :
enter image description here

关于大 O 西格玛符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24664145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com