【发布时间】:2015-05-07 19:30:40
【问题描述】:
我需要设计一个适用于 64 位密钥的区间搜索算法。匹配是当密钥 k 在 k1 和 k2 之间时。一个重要的要求是查找速度要优于 O(log n)。研究现有文献并没有比区间搜索树更好。我想知道这是否可行。
【问题讨论】:
-
不可能。您甚至无法在 O(1) 中执行精确搜索(您的算法显然会作为特殊情况实现)-您可能正在考虑哈希表,但 O(1) 查找仅意味着哈希函数为 O(1),不是查找的整体摊销复杂度(请记住,如果不重新散列,它们将降级到 O(n),这本身就是 O(n),等等)
-
没有 O(1),您可能会发现这很有趣,可以找到满足您特定要求的最佳数据结构 stackoverflow.com/questions/17466218/…
-
@OutputLogic - 你能举一个简单的输入和期望输出的例子吗?
-
当然可以,如果您不再将其视为一组范围,而是将其视为一组巨大的布尔值。例如特里。如果您有 64 位密钥,则 O(keysize) 是常数时间。 (不过,64 比任何合理范围数量的日志都多)
-
@hatchet :这是一个众所周知的通信协议。输入是 64 位地址。间隔是地址的范围。每个范围都与一个 32 位命令相关联。传入的数据包包含一个地址。如果它在范围内,则输出与数据包关联的命令。
标签: algorithm