Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何优化返回正整数x值的算法,使f(x)>=0表示部分已知的函数?_Algorithm_Data Structures - Fatal编程技术网

Algorithm 如何优化返回正整数x值的算法,使f(x)>=0表示部分已知的函数?

Algorithm 如何优化返回正整数x值的算法,使f(x)>=0表示部分已知的函数?,algorithm,data-structures,Algorithm,Data Structures,关于这个函数,您只知道 (i) 对于f(x),x>=1,使得f(x)>=0 (ii)当x>0时,它严格增加 (iii)在任何点评估功能都需要恒定的时间 如何返回正整数x的值,使得f(x)>=0在=0 计算f(x)的x次幂为2,直到发现f(2^n)=0。然后对分,直到找到最小值。现在是O(logn)时间来查找函数为非负的2的第一次幂,然后O(logn)时间在2^n到2^(n+1)的范围内进行二进制搜索。计算f(x)的x次幂2,直到找到f(2^n)=0。然后对分,直到找到最小值。现在是O(logn)

关于这个函数,您只知道

(i) 对于f(x),x>=1,使得f(x)>=0

(ii)当x>0时,它严格增加

(iii)在任何点评估功能都需要恒定的时间

如何返回正整数x的值,使得f(x)>=0在
在O(n)时间内,您只需不断查询算法中的所有正整数,直到它达到f(x)>=0

计算f(x)的x次幂为2,直到发现f(2^n)<0和f(2^(n+1))>=0。然后对分,直到找到最小值。现在是O(logn)时间来查找函数为非负的2的第一次幂,然后O(logn)时间在2^n到2^(n+1)的范围内进行二进制搜索。

计算f(x)的x次幂2,直到找到f(2^n)<0和f(2^(n+1))>=0。然后对分,直到找到最小值。现在是O(logn)时间来查找函数为非负的2的一次幂,然后是O(logn)时间来在2^n到2^(n+1)范围内进行二进制搜索。

如何做什么?已编辑。对不起,条件(i)是怎么说的?函数为非负的x的第一个值是正的吗?如果是这样,“f(x)>=0意味着x>=1”是一种逻辑上更正确的说法。或者“x我花了一段时间才把单词写对,我想如果你这样说会更容易理解。你怎么做?编辑。对此很抱歉。条件(I)是什么意思?函数为非负的x的第一个值是正的?如果是这样,“f(x)>=0意味着x>=1”是一种逻辑上更正确的说法。或者”我花了一段时间才把这个词说对,我想如果你这样说会更容易理解。如果你对答案满意,你可以投票并接受。我可以在几分钟内接受它。我会尽我所能去做的。我还不能投票支持它。我是一个相对较新的用户,所以我必须建立自己的声誉才能做到这一点。如果你对答案感到满意,你可以投票并接受。我可以在几分钟内接受它。我会尽我所能去做的。我还不能投票支持它。我是一个相对较新的用户,所以我必须建立自己的声誉才能做到这一点。不管需要多长时间,我都会的。