【问题标题】:Logarithms in Computer Science for Big O Notation? [closed]大 O 表示法的计算机科学对数? [关闭]
【发布时间】:2018-03-24 21:52:27
【问题描述】:

我一直有这个问题,并且一直无法将这两个概念联系起来,因此我正在寻求一些帮助来理解计算机科学中关于 Big-O 表示法和算法时间复杂度的对数。我将对数理解为能够回答以下问题的数学概念:“我需要将这个底数提高到指数才能得到 X?”。例如,log2(16) 告诉我们需要将 2 提高到 4 次方才能得到 16。我也有一个记忆级别的理解,即 O(log n) 算法比 O(n) 和其他较慢的算法如就像那些是指数的并且 O(log n) 算法的一个例子是搜索平衡的二叉搜索树。

我的问题有点难以准确说明,但我认为它归结为为什么要搜索平衡的 BST 对数,是什么使它成为对数,以及如何将数学对数与 CS 使用该术语联系起来?接下来的问题是 O(n log n) 和 O(log n) 之间有什么区别?

我知道这不是世界上最清楚的问题,但如果有人可以帮助我将这两个概念联系起来,它会为我消除很多困惑,让我摆脱仅仅记忆的问题(我通常讨厌记忆) .

【问题讨论】:

  • 我觉得这里不适合讨论这个话题
  • 您可能想要添加有关您的背景的其他信息。您所理解的内容与您所要求的内容之间似乎存在不匹配。你似乎没有被“卡住”,你似乎错过了一年的数学和计算机科学各个领域的讲座......这远远超出了问答形式的范围。
  • google.com/search?q=complexity+computer+science。正如 Andrey 所说,这是在每门 CS 课程中通过许多课程学到的大量内容。或许你想再看一遍,或者先看看这个 CS 领域来全面了解它。

标签: algorithm math time-complexity big-o logarithm


【解决方案1】:

当您计算大 O 表示法时,您是在计算算法的复杂度,因为问题规模越来越大。

例如,在对列表执行线性搜索时,最坏的情况是元素要么在最后一个索引中,要么根本不在列表中,这意味着您的搜索将执行 N 步,其中 N 是列表中的元素数。在)。

无论问题大小如何,总是采取相同数量的步骤来完成的算法是 O(1)。

当您在浏览算法时缩小问题规模时,对数就会发挥作用。对于 BST,您从列表的中间开始。如果要搜索的元素较小,则只关注列表的前半部分。如果它更大,你只关注下半场。仅一步之后,您就可以将问题规模减半。您继续将列表切成两半,直到找到元素或无法继续。 (注意二分查找假定列表是有序的)

假设我们在下面的列表中寻找 0(BST 表示为有序列表): [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

我们首先从中间开始:7 0 小于 7,所以我们查看列表的前半部分:[0,1,2,3,4,5,6]

我们查看此列表的中间:3 0 小于 3,我们的工作列表现在是:[0,1,2]

所以我们看 1。0 小于 1,所以我们的列表现在是 [0]。

鉴于我们只有 1 个元素的工作列表,我们处于最坏的情况。我们要么找到了该元素,要么它在列表中不存在。我们只需要四个步骤就可以确定这一点,查看 7、3、1 和 0。

问题大小为 16(列表中的元素数),我们将其表示为 N。 在最坏的情况下,我们执行 4 次比较(2^4 = 16 OR Log base 2 of 16 is 4))。

如果我们查看 32 的问题大小,我们将只执行 5 次比较(2^5 = 32 OR Log base 2 of 32 is 5)。

因此,BST 的大 O 为 O(logN)(请注意,我们在 CS 中使用以 2 为底的对数)。

对于 O(NlogN),最坏的情况是问题大小乘以它的对数计算。插入排序、快速排序、归并排序都是O(NlogN)的例子

【讨论】:

    【解决方案2】:

    在计算机科学中,大 O 表示法表示算法的运算次数随着所请求问题陈述的给定参数 n 增加的速度。在平衡二叉搜索树中,n 可以是树中的节点数。当您搜索树时,算法需要在树的每个深度级别做出决定。由于每个级别的节点数翻倍,因此树中的节点数 n=2^d-1,其中 d 是树的深度。因此相对直观的是,该算法的决策次数为 d-1 = log_{2}(n+1)-1。这表明该算法的复杂度为 O(log(n)) 量级,这意味着操作数像 log(n) 一样增长。作为一个函数,log 的增长速度比 n 慢,即随着 n 变大 log(n) 小于 n,因此时间复杂度为 O(log(n)) 的算法将比复杂度为 O(n) 的算法快),它本身比 O(n log(n)) 快。

    【讨论】:

      【解决方案3】:

      BST 中有 2^n 个叶子。 “n”是树的高度。当您搜索时,您每次检查树的分支。所以你有对数时间。 (对数函数是指数函数的反函数)

      【讨论】:

        猜你喜欢
        • 2013-01-29
        • 2011-01-01
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-25
        • 1970-01-01
        相关资源
        最近更新 更多