我试图找出何时二次选择算法比线性选择算法快。运行一些实验我生成的两个3D绘图,显示该算法的运行时间作为输入阵列尺寸的函数和所希望的顺序统计。使用gnuplot的画我证实,有情况下,当二次算法更快的情节。然后我用的gnuplot的拟合算法来找到我的模型运行时间观察(A,B,C,d,E,F是我已经找到常量,但离开了)两个功能:

lin_alg_runtime(X,Y)=α X + B Y + C

quad_alg_runtime(X,Y)=(d * X * E * Y)+ F

其中x是输入数组和y的大小的顺序统计量。

现在我有点失去了关于如何使用这些模型来计算时,二次实现和线性实现之间进行切换。我怀疑我得找地方这两个功能交叉,但我不太清楚该怎么做。怎样才能寻找到这两个函数相交?

有帮助吗?

解决方案

基本上要使用具有最低运行时估计的算法。

可以只计算每个所估计的运行时的值,并使用该算法具有最低值。您可以简化这个非常轻微的。

您想使用在Quad算法:

qual_alg_runtime(x,y) < lin_alg_runtime(x,y)
ax + by + c < dxey + f
ax + by -dexy + c-f < 0

因此就可以计算出ax + by -dexy + c-f,如果它小于零,则使用二次算法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top