algorithm - 二进制搜索来猜测实数

标签 algorithm search binary-search

考虑一个相当普遍的问题——我正在考虑一个整数,你能在 O(log n) 时间内猜出它吗,因为我会用“高”、“低”或“就是那个!”来回答你的猜测。 - 我遇到了一个让我难过的细微变化的问题:

I am thinking of a positive real number between 1 and N. Guess my number to within one decimal place in O(log log log N) time.

我尝试通过猜测 10N 而不是 N 来解决这个问题,但这仍然不会给我 O(log log log N) 运行时间。欢迎就此提出任何和所有意见。

谢谢

最佳答案

假设“一位小数以内”表示一位有效数字,则在 1 和 n 之间有 O(log(n)) 种可能的猜测。 1, 2, 3, ..., 10, 20, 30, ..., 100, 200, 300, ... 对这些可能性进行二分搜索将在 O(log(log(n)) 中产生正确答案时间。为了便于编码,这可以改为对数量级进行二进制搜索,然后对第一个数字进行二进制搜索。但是,从信息理论上讲,不可能使用 O(log(log(log( n))) 猜测以确定 O(log(n)) 种可能性之一。

示例:我正在考虑 1 到 10000 之间的数字。

是100吗?更高。 是1000吗?降低。 现在我们知道数量级了。

是500吗?更高。 是700吗?更高。 是800吗?更高。 是 900。

关于algorithm - 二进制搜索来猜测实数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874964/

相关文章:

c# - 随机算法在 C# 中无法正常工作

algorithm - 归并排序时间和空间复杂度

algorithm - 在 Matlab 中实现自适应分水岭分割

winforms - DatagridView 搜索 Winform - C#

c++ - 递归二进制搜索字符串 - C++

algorithm - 数组计算的Matlab错误结果

linux - 如何在 Linux 中查找同时包含两个字符串的行?

linux - 从终端在 linux 中搜索/查找名称带有整数的文件夹

c++ - 有效找到两个​​ vector 中最接近的对?

c - 精炼拼写检查 C 程序