【问题标题】:Abstract Binary Search抽象二分搜索
【发布时间】:2018-03-07 15:05:56
【问题描述】:

http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=binarySearch的文章中, 他说

细心的读者可能会注意到,二分查找也可以用于 谓词产生一系列 yes 答案,后跟一系列 no 答案。这是真的并且补充谓词将满足 原来的状态。为简单起见,我们将只处理谓词 在定理中描述。

我不明白他的意思,谁能解释一下? 谢谢

【问题讨论】:

  • 你知道谓词是什么吗?
  • 我假设一些问题会导致是或否的答案
  • 我认为这个解释需要你有更强的形式逻辑背景。了解你的 p 和 q!

标签: binary-search


【解决方案1】:

假设您正在对一组数字进行二进制搜索:要使搜索正常工作,您需要将数字按顺序排列,以便问题“这个数字小于我的数字搜索”给出的是,然后是否。

示例:在序列[1,1,2,3,5,8,13,21]中搜索数字8

  • 是 1 小于 8 吗? “是”
  • 是 1 小于 8 吗? “是”
  • 2 小于 8 吗? “是”
  • 3 小于 8 吗? “是”
  • 5 小于 8 吗? “是”
  • 8 小于 8 吗? “不”
  • 是 13 小于 8 吗? “不”
  • 21 小于 8 吗? “不”

这意味着如果您查看序列中的中间数字,您可以立即判断您的目标数字是在该中间点之前还是之后(如果您之前看到“不”,如果您看到“是的照顾)。然后,您可以排除该系列中不需要的一半,然后对剩余的一半重复该过程...

这种在每一步将搜索字段减半的方式是二分查找的关键,保证在 O(log n) 时间内找到目标。

查看段落的第二部分:

complementing that predicate will satisfy the original condition

To complement the predicate 意味着交换“是”和“否”,这将给我们“一系列否定答案,然后是一系列肯定答案”,这在上一段中提到(original condition )。

因此,总而言之,您的报价是说“是后否”与“否后是是”同样有效

【讨论】:

    【解决方案2】:

    他在谈论形式逻辑,并使用形式逻辑中的术语。

    直接来自文章:

    “在神秘的数学背后,我真的是在说,如果你有一个是或否的问题(谓词),对于某个潜在的解决方案 x 得到一个是的答案意味着你也会对 x 之后的任何元素得到一个是的答案. 类似地,如果您得到否定答案,您将得到 x 之前的任何元素的否定答案。因此,如果您要针对搜索空间中的每个元素(按顺序)提问,您会得到一个一连串否定答案,然后是一系列肯定答案。”

    我认为您将需要使用一些肘部润滑脂并在这些条件上进行改进。我不确定您遇到的问题。

    【讨论】:

    • 哦我明白了..我把它和别的东西混淆了..谢谢
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 2011-08-15
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多