我目前正在完成一项处理Big-O和运行时间的任务。我向我提出的这个问题似乎很容易,但我不确定我是否正确地做到了。剩下的问题一直很困难,我觉得我在这里忽略了一些东西。
首先,你有这些东西: 算法A,运行时间为50n ^ 3。 计算机A,每次操作的速度为1毫秒。 计算机B,每次操作的速度为2毫秒。 一个大小为300的实例。
我想知道算法A在计算机A上解析此实例需要多长时间,以及计算机B需要多长时间。
我想做的是n为300以下,所以你有50 *(300 ^ 2)= 450000。
然后,将第一台计算机乘以1,第二台计算机乘以2。
这对我来说很奇怪,因为它说“运行时间”是50n ^ 3,而不是“操作次数是50n ^ 3”,所以我觉得我是时间倍增的,最终将以毫秒平方的单位结束,这似乎根本不正确。
我想知道我是否正确,如果没有,这个问题究竟意味着什么。
答案 0 :(得分:2)
如果您有O(n ^ 3)但在您的示例中没有使用大O表示法则没有意义。即如果你有O(n ^ 3),你会知道算法的复杂性,但你不会知道你所说的确切操作次数。
相反,看起来好像给出了确切的操作次数。 (即使知道它没有明确说明)。所以替换n会有意义。
Big O表示法描述了输入的大小将如何影响您的运行时间或内存使用情况。但是对于Big O,即使考虑到每个操作的速度,也无法推断出确切的运行时间。
解释为什么你的答案看起来如此简单(如上所述)也是一种安全的方法。但我相信即使没有它,你也会得到这个问题的标记。
答案 1 :(得分:1)
嗯,除了弄清楚在大多数现代计算机上会采用这种方式多长时间的无意义之外,尽管它可能会使嵌入式系统中出现某些含义,但它确实对我来说是正确的你是这样做的。
如果算法需要50n ^ 3次操作来完成某事,其中n是要处理的元素数,那么用300代替n将给出要执行的操作数,而不是时间单位。
因此,每次操作的时间相乘,您将获得所需的时间。
看起来对我来说。
答案 2 :(得分:0)
您的50 * n ^ 3数据称为“运行时间”,但这是因为用于速度评估的模型假设一台机器具有多个基本操作,其中每个操作需要1个时间单位。
在这种情况下,运行算法需要50 * 500 ^ 3个时间单位。在计算机A上,每个时间单位为1毫秒,在计算机上为2毫秒。
希望这对单位有所了解,
阿萨夫。