为什么将二进制搜索称为二进制搜索?


9

我听到了几种可能的解释,所以我希望得到一些值得信赖的参考。

更新05.19:我对这个问题感兴趣,因为我的一位学生在论文中写道,该名称来自以下解释(1)。到目前为止,我认为/听说过它来自解释(2)。我既不愿在论文中提出错误的观点,又告诉他如果可能是正确的话,则将其删除,这将令我感到不快。

(1)考虑在区间搜索整数。我们可以通过找到它在步骤发问的二进制数的位数。Ñ ħ[0,2n1]niith

(2)如果我们有一个搜索空间元素,我们可以通过在多次分开的空间的剩余部分问题找到一个未知元素22n

是的,我知道(2)可以提供与(1)相同的算法,但这不是重点。(2)也可以适用于更一般的问题。


1
另外,请注意,该问题需要参考。请不要回答说是由于某种原因而没有提供可靠的消息来源。
大卫·里奇比

1
@DavidRicherby,不,好奇心不足以要求“可信赖”的参考。好奇心成为问“为什么将二进制搜索为什么称为二进制搜索?”的充分动机,但是这并不是要求提供参考/可靠来源的充分理由,也没有足够的理由说“不作任何解释;我只是想要可靠的资源”。如果OP遇到多个相互矛盾的解释,则OP应在问题中向我们介绍它们(请注意Math.SE问题并未导致相互矛盾的解释)。
DW

3
我认为您应该先给出自己的解释。我们可能对他们应该获得的信任有一个想法。如果您给自己所谓的二进制搜索(最好是精确的)定义提供了帮助,那么我们可以肯定地谈论相同的概念,或者引用这样的定义。
babou,22:39

2
Knuth TAoCP的第3卷,有人吗?我的办公室在...
Hendrik

Answers:


1

说明(2)是一个很好的解释。

(2)是两者的更好解释,因为它通常适用于二进制搜索的所有用途,而不仅仅是一个特定的实例。(1)并不是思考的合理方式-只是不如(2)那样笼统或完整。

我认为您不必强迫学生纠正这一说法。如果学生在论文中给出解释(1),这不会令人尴尬,因此您无需感到难过。但是,如果您想教他们一些知识,则可以告诉他们有关解释(2)以及二进制搜索的一般性,以及为什么“二进制搜索”这个名称对于常规算法也很合理。但这只是一个小问题,如果他们把事情留在原地,那不是我认为有问题或尴尬的事情。


没有裁判!似乎更像是一个历史问题:(
vzn

1

根据Wikipedia的说法,二进制搜索涉及按排序值数组进行的搜索。

通过反复分割搜索空间来进行分而治之的更一般概念称为二分搜索(字面意义:“一分为二”)。在其他情况下,也可以考虑使用二分法,就好像您需要拆分一样。它实际上是我学到的第一个表达式(我想这是在高中之前的那年),包括在您可能想将其称为二进制的情况下。

Afaik,“二分法”并不意味着两个部分(几乎)相等。

我不知道二进制保留在大小的空间中搜索 。2n

二分法显然是更笼统的术语,但是对于某些可能不恰当地使用二进制的人来说,这听起来似乎很古怪。

您的示例(1)奇怪地表示出来,因为它不是有意识地要求输入二进制数字,而是要求与间隔的中位数进行比较。但是它可以被视为二进制。

您的示例(2)尚不清楚。只是一分为二应称为二分法。现在,正如您似乎在假设(奇怪地)将两部分相等的方法一样,我不确定。

但是一个猜谜游戏显然是二分法的,在这个猜谜游戏中,人们问的问题是或否。

我自己的猜测,未提供参考:

最初的表达可能是“二分法的”,但随着二进制系统,二进制计算机等的流行,术语“二进制”变得更加流行。

可能发挥重要作用的另一个因素是二进制搜索(以及二分法)是基于二进制选择的。现在确实存在“ 二分法选择 ”一词,但比“ 二元选择 ” 少用得多,后者在网络上的出现频率大约是其六倍。

因此,这可能对此产生了影响。我们应该记住,尽管我们沉浸在二进制数中(我是说,计算机科学家),但是大多数人都不是,也不关心二进制数,但是很容易会谈到二进制选择。确实,二进制搜索是计算机科学家的主题,但是如果没有可靠的提法,我将不认为二进制搜索直接来自二进制数。


“根据Wikipedia,二进制搜索涉及按排序值数组进行的搜索。” -嗯,那不是我读维基百科的方式。如果Wikipedia表示必须很好地将其视为二进制搜索,那么我认为Wikipedia对此存在争议-但Wikipedia文章似乎没有这么说。进一步,维基百科文章二进制搜索“允许在任何单调函数的参数上搜索一个点,在该点上函数达到任意值”-这不是在数组中搜索。
DW

“通过反复分割搜索空间来进行分而治之的更一般概念称为二分搜索” -这与我自己的经验不符。我通常会听到这种称为二进制搜索的声音。
DW

@DW正如我之前告诉您的那样,我的记忆力值得信赖。但是二进制搜索,甚至分而治之是计算机使用的算法术语。但是我认为,当我第一次听说二分搜索时,周围的计算机并不多,因此,一个好的印刷参考将比我的失败记忆要好得多。关于维基百科,我没有阅读整篇文章。基本上,我认为我不会得到确切的答案……而且我怀疑是否有一个答案。这个想法很笼统,术语很好,并且每个人都必须已经适应了任何问题。
2015年

1

Knuth(V.3 Pg。82)提供了Mauchly作为二分查找的源;它被用于在排序过程中找到插入点,然后在称为二进制插入的过程中向前拖移元素以腾空。

因此(2)是有效的,但我看不到原始论文;它在这里被遮盖了:https : //books.google.com/books? id = A6EEAQAAIAAJ & focus = searchwithinvolume & q = sorting+and+ collat​​ing


1

我试图查找Knuth引用的Mauchly参考,但是我的图书馆似乎放错了副本。

同时,请考虑以下“二进制搜索”的早期引用:

  • 哈珀恩,马克。“ 具有二进制搜索功能的可变宽度表。 ” ACM 1.2的通讯(1958):1-4。

    本报告中描述的子例程系列旨在创建,搜索和维护表,这些表将包含不同长度的条目,但仍可以按分区或“二进制”搜索进行搜索。

  • Nagler,H.“ 两种内部分类方法的相对效率的估计。 ” ACM 3.11(1960):618-620。

    该报告涉及IBM 705 I和II型。这是对两种内部分类方法(传统的双向合并)和二进制搜索形式(这是IBM Corporation的D. Mordy致谢)所需的机器时间的研究。

  • 彼得森,TL 再入车辆综合计划。编号STL / TR-60-0000-09103(pdf链接)。TRW SPACE TECHNOLOGY LABS洛杉矶,1960年。

    V0g(V0)=0g(0)=K31g(K1)=1V0K1K3>1g(V0)V0V00.01

我将注意到1958年的第一次引用是如何在“二进制”周围使用引号引起的,但是在1960年的第三次引用中,提到了二进制搜索,而没有任何进一步的描述或解释。提到“按分区搜索”可能会暗示,解释2)更为接近,但是还需要进一步的验证。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.