【问题标题】:What's the proper term for this execution time?这个执行时间的正确术语是什么?
【发布时间】:2013-11-18 12:42:53
【问题描述】:

如果您需要针对N 元素对X 元素进行一些计算。

例如,如果您在空间中有 10 个点和 1M 个点,对于这 1M 个点中的每一个点,您必须找到到这 10 个点中最接近的点的距离,并且您需要 10M 次操作,那将是什么样的执行叫什么?

如果我可以在 1M 操作中做到这一点,那么我可以说整个操作在 linear time 中执行,对吧?因为它与点数成线性关系。但如果是N * X,那会是多项式时间吗?

【问题讨论】:

  • 你听起来很困惑。从单个数据点谈论计算复杂性没有意义(输入 foo 需要 k 次操作)。它始终是输入的函数。此外,线性复杂度是(一个实例)多项式复杂度。 f(x) = mx + c 是一个线性函数,它是一个 1 次多项式。
  • 我说的是做这个计算的函数。
  • 您是说 N=10, X=10^7 的“函数”(算法将是一个不太容易混淆的术语)执行 10M 次操作。但这只是一个数据点,它与渐近复杂度无关。例如,复杂性理论告诉您,当您将 N 加倍时操作的数量如何变化。它通过将输入 (N, X) 映射到多个操作的 数学 函数来做到这一点。请阅读一些excellent answers on the topic
  • 嗯,是的,我正在使用这些数字来展示我所说的一个简单示例。否则,正如我对 N、M 输入所说的那样,操作是 N * M。

标签: performance algorithm profiling complexity-theory execution-time


【解决方案1】:

您的输入长度为 L=N+X,计算时间为 T=N*X。

T 永远不会超过 (L/2)^2 = L^2 / 4,这绝对是多项式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 2019-07-31
    • 2016-11-27
    • 2011-06-23
    • 2012-04-13
    • 2016-04-17
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多