【问题标题】:big theta for quad nested loop with hash table lookup具有哈希表查找的四嵌套循环的大 theta
【发布时间】:2013-10-31 06:51:26
【问题描述】:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        for (int k = 0; k < 5; k++) {
            for (int l = 0; l < 5; l++) {
                look up in a perfect constant time hash table
            }
        }
    }
}

这个在大θ中的运行时间是多少?

我最好的猜测,在黑暗中开枪:我总是看到嵌套的 for 循环是 O(n^k),其中 k 是循环数,所以循环将是 O(n^4),那么我会乘以 O(1) 以获得恒定时间?在 big theta 中这一切会是什么?

【问题讨论】:

    标签: algorithm hashtable big-o big-theta


    【解决方案1】:

    如果你认为访问哈希表实际上是 theta(1),那么这个算法也在 theta(1) 中运行,因为它只在哈希表上进行常数 (5^4) 查找。

    但是,如果将 5 更改为 n,它将是 theta(n^4),因为您将执行 n^4 个恒定时间操作。

    【讨论】:

      【解决方案2】:

      big-theta 运行时间为 Θ(n^4)

      Big-O 是一个上界,而 big-theta 是一个紧界。这意味着说代码是O(n^5) 也是正确的(但Θ(n^5) 不是),无论大O 中的内容必须渐近大于或等于n^4

      我假设5 可以替换为另一个值(即n),否则,循环将在恒定时间内运行(O(1)Θ(1)),因为5^4 是恒定的.

      【讨论】:

        【解决方案3】:

        使用 Sigma 表示法:

        确实,最内层循环内的指令将执行 625 次。

        【讨论】:

          猜你喜欢
          • 2023-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-11
          • 1970-01-01
          • 2018-10-01
          • 2015-08-25
          相关资源
          最近更新 更多