【发布时间】: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