Algorithm 如何在跳转搜索中找到跳转块大小的最佳值?
当Algorithm 如何在跳转搜索中找到跳转块大小的最佳值?,algorithm,Algorithm,当m=√n。因此,最佳步长为m=√n。 这里,n是数组的大小,m是要跳转的块大小 我知道,n/m是我们在最坏情况下进行的跳跃,m-1是我们找到间隔后进行线性搜索的时间(arr[km]
m=√n
。因此,最佳步长为m=√n
。
这里,n
是数组的大小,m
是要跳转的块大小
我知道,n/m
是我们在最坏情况下进行的跳跃,m-1
是我们找到间隔后进行线性搜索的时间(arr[km]
但是我不明白我是怎么做到的=√已找到n。我试着如下
(n/m)+m-1=0;
(n/m)+m=1;
n+m^2=m;
n=m-m^2.
但是这是如何变成
m=m的呢=√n
我假设您希望找到任何n
的最小值
(n/m)+m-1
最小值是梯度为0的位置
因此,区分有关m
的表达式:
d/dm (n/m)+m-1 = 1-n/m^2
求解
1-n/m^2=0
会给你m=sqrt(n)
和n
有任何界限吗?如果n
可以是负数且任意大,那么函数的结果就没有最小值。你能帮我理解这一行吗?->d/dm(n/m)+m-1=1-n/m^2你对微分有多了解?如果你重新排列它会更容易:n*m^-1+m-1
,然后要区分,请做每一项:-n*m^-2+1