Algorithm 如何改进功能';跑步时间是什么意思?

Algorithm 如何改进功能';跑步时间是什么意思?,algorithm,performance,function,big-o,Algorithm,Performance,Function,Big O,假设一个函数总共有10N+10个步骤。那么函数类就是O(N)。如果我想提高函数的运行时间,这是否意味着减少步骤数量并减少函数类,使其小于线性?如果使函数在较短的时间内运行,实际上就是在减少函数的运行时间。通常有两个方向可以做到这一点:想象现实生活中的跑步,你可以通过增强肌肉(升级到NASA超级计算机)或缩短你必须跑的距离(改进/更改算法以减少步数)来缩短跑步时间。我们只关注第二个方向 仍然有很多因素需要考虑,比如你的函数的实际输入是什么? 如果N在99%的时间内很小99%,那么常数因子很重要即

假设一个函数总共有10N+10个步骤。那么函数类就是O(N)。如果我想提高函数的运行时间,这是否意味着减少步骤数量并减少函数类,使其小于线性?

如果使函数在较短的时间内运行,实际上就是在减少函数的运行时间。通常有两个方向可以做到这一点:想象现实生活中的跑步,你可以通过增强肌肉(升级到NASA超级计算机)或缩短你必须跑的距离(改进/更改算法以减少步数)来缩短跑步时间。我们只关注第二个方向


仍然有很多因素需要考虑,比如你的函数的实际输入是什么? 如果N在99%的时间内很小99%,那么常数因子很重要即使它们属于同一类O(N)。 O(10^6*N)和O(2*N)都是O(N),但当N小于10^6时,它不是占主导地位的

如果N通常是大的,您仍然可以说您通过减少常数因子改进了函数,但它可以忽略不计(是的,您仍然在减少它)。如果您需要一个可观察的提升,那么您可能需要更改算法,更改数据结构,以便将函数改进为更高的复杂度级别(例如从O(N)到O(lg N))



因此,用你自己的话来说:“减少步骤数”和“减少函数类”都在减少函数的运行时间,但哪一个是可观察的,因而是有用的,取决于它的使用情况和其他现实因素。

如果你使函数在较短的时间内运行,那么你实际上是在减少函数的运行时间。通常有两个方向可以做到这一点:想象现实生活中的跑步,你可以通过增强肌肉(升级到NASA超级计算机)或缩短你必须跑的距离(改进/更改算法以减少步数)来缩短跑步时间。我们只关注第二个方向


仍然有很多因素需要考虑,比如你的函数的实际输入是什么? 如果N在99%的时间内很小99%,那么常数因子很重要即使它们属于同一类O(N)。 O(10^6*N)和O(2*N)都是O(N),但当N小于10^6时,它不是占主导地位的

如果N通常是大的,您仍然可以说您通过减少常数因子改进了函数,但它可以忽略不计(是的,您仍然在减少它)。如果您需要一个可观察的提升,那么您可能需要更改算法,更改数据结构,以便将函数改进为更高的复杂度级别(例如从O(N)到O(lg N))



因此,用你自己的话来说:“减少步骤数”和“减少函数类”都可以减少函数的运行时间,但哪一个是可观察的,因此是有用的,取决于它的使用和其他现实因素。

我认为没有任何正式的定义。在我看来,两者都不是。运行时间就是运行时间,我把它理解为挂钟。使用10N+0可能会给你10秒或10分钟(完全是虚构的数字)。使用5N将使运行时间减半。在N中运行
ln
可能会更多,但运行时都有所改进。重要与否是另一回事。我认为没有任何正式的定义。在我看来,两者都不是。运行时间就是运行时间,我把它理解为挂钟。使用10N+0可能会给你10秒或10分钟(完全是虚构的数字)。使用5N将使运行时间减半。在N中运行
ln
可能会更多,但运行时都有所改进。重要与否是另一回事。