在实现二进制搜索时,我们有两种方法可以决定何时终止:当搜索空间小于某个预定范围时终止,或者执行固定数量的迭代。所以我的问题基本上是,在我们终止算法之后如何确定这些边界或迭代次数。是否有任何预定义的算法或过程?
答案 0 :(得分:0)
假设你的函数是一些单调函数f(i).
我认为没有捕获所有策略这实际上取决于问题或功能。
但是我们可以找到一个绑定的方法只是检查以下内容:
while(f(i)< user defined statement):
i*=a (a= 2,3,4,5) depending on your problem
所以你找到的i
是你的上限,你可以说你的下界是i/2
。
您提到的user defined statement
可能会出现此错误。但你应该澄清你的问题!
答案 1 :(得分:0)
我想你正在执行的二进制搜索可能是一些双重值。因此,您需要尽可能准确,并对迭代次数有一些限制。
在二进制搜索中使用ith迭代,你留下的样本空间最多(高 - 低)/ 2 ^ i大。
现在,根据您希望此值的接近程度,您必须设置i的值。
例如:
high = 100000
low = 0
在第30次迭代后,您留下的样本空间将小到0.00009313225
对于此范围,这意味着,在最坏的情况下,在第30次迭代后,确切的位置将是0.00009313225
距离。