Чому двійковий пошук називають двійковим пошуком?


9

Я почув кілька можливих пояснень, тому мені хотілося б довіряти посилання.

Оновлення 05.19: Мене цікавить питання, оскільки один із моїх студентів написав у своїй дисертації, що назва походить із нижченаведеного пояснення (1). До цього часу я думав / чув, що це походить від пояснення (2). Мені було б погано як за те, що я допустив неправильну річ у своїй тезі, так і за те, щоб сказати йому видалити її, якщо це може бути правильним.

(1) Розглянемо пошук цілого числа в інтервалі . Ми можемо знайти його з допомогою питань, задаючи в кроці довічного розряду числа.[0,2н-1]нiiтгод

(2) Якщо у нас є простір пошуку з елементами, ми можемо знайти невідомий елемент за допомогою запитань, які повторно розділяють решту частини простору надвоє .2н

І так, я знаю, що (2) може дати той же алгоритм, що і (1), але це не в цьому суть. (2) можна також застосувати для більш загальних проблем.


1
Також зверніть увагу, що в цьому запитанні посилаються посилання. Не відповідайте, сказавши, що це через таку-то причину, не даючи надійного джерела.
Девід Річербі

1
@DavidRicherby, Ні, цікавість не є достатньою мотивацією для того, щоб вимагати "довірливої" посилання. Цікавість буде достатньою мотивацією для запитання "Чому двійковий пошук називається бінарним пошуком?", Але це недостатньо підстав вимагати довідкового / надійного джерела, і це не є достатньою підставою сказати "не відповісти з поясненням; я лише хочуть надійних джерел ". Якщо ОП натрапила на декілька суперечливих пояснень, то ОП повинна сказати нам про них у запитанні (зверніть увагу, що питання Math.SE не призводило до суперечливих пояснень).
DW

3
Я думаю, ви повинні почати з того, що ви маєте пояснення. Ми можемо мати уявлення про довіру, яку вони повинні отримати. І це може допомогти, якщо ви дали своє власне, бажано точне, визначення того, що ви називаєте двійковим пошуком, щоб ми могли бути впевнені говорити про те саме поняття або альтернативно давати посилання на таке визначення.
бабу

2
Том 3 Knuth TAoCP, хтось? Моя в офісі ...
Гендрік

Відповіді:


1

Пояснення (2) - хороше пояснення.

(2) є кращим поясненням обох, оскільки це стосується, як правило, усіх видів двійкового пошуку, а не лише одного конкретного екземпляра. (1) не є розумним способом думати про це - він просто не такий загальний чи повний, як (2).

Я не думаю, що вам потрібно відчувати себе зобов’язаними вимагати від студента виправлення цього твердження. Було б не соромно, якби студент дав пояснення (1) у своїй тезі, тож вам не потрібно почувати себе погано. Але якщо ви хочете чогось навчити їх, ви можете розповісти їм про пояснення (2) та про те, як двійковий пошук є більш загальним і чому назва "двійковий пошук" є розумним і для загального алгоритму. Але це другорядний момент, а не те, що я вважав би проблематичним або бентежним, якби вони залишали речі як є.


ніяких реф. видається більше схожим на історичне запитання :(
vzn

1

За даними Вікіпедії, двійковий пошук стосується пошуку в масиві відсортованих значень.

Більш загальне поняття поділу та підкорення пошуку шляхом багаторазового розбиття простору пошуку називається дихотомічним пошуком (буквально: "що розрізається на два"). Використання дихотомії може бути розглянуто і в інших контекстах, оскільки сонник, як вам щось розбити. Це насправді перший вираз, який я навчився (в старшій школі, я думаю, і це було давно), в тому числі у випадках, коли ви можете назвати його бінарним.

Афаїк, "дихотомічний" не означає, що дві частини (майже) рівні.

Я не знаю, що бінарний зарезервований для пошуку в просторі розміру 2н.

Дихотомія, очевидно, є більш загальним терміном, але це може здатися педантичним для тих, хто натомість може неправильно використовувати бінарне.

Ваш приклад (1) дивно зазначено, оскільки свідомо не просять двійкові цифри, а навпаки, для порівняння з медіаною інтервалу. Але це може бути кваліфіковано як бінарне.

Приклад ти (2) незрозумілий. Просто розщеплення на два слід називати дихотомічним. Тепер, як вам здається, що ви гіпотезуєте (як не дивно) спосіб зробити 2 рівні частини, я не впевнений.

Але гра в здогадки, де люди задають питання, на які відповідають "так" або "ні", явно дихотомічна.

Моя власна здогадка, не вказано посилання:

Оригінальний вираз був, ймовірно, "дихотомічним", але з популярністю двійкових систем, двійкового комп'ютера тощо термін "двійковий" став більш популярним.

Ще один фактор, який, можливо, зіграв важливу роль - це те, що двійковий пошук (як і дихотомічний) заснований на бінарних виборах. Зараз вираз " дихотомічний вибір " існує, але він використовується набагато менше, ніж " двійковий вибір ", який з'являється приблизно в 6 разів частіше в Інтернеті.

Тож це, можливо, вплинуло на це. Ми повинні пам’ятати, що хоча ми значною мірою занурені у двійкове число (я маю на увазі, ми, комп'ютерний вчений), більшість людей не мають і не переймаються двійковими числами, але легко говорять про двійковий вибір. Це правда, що бінарний пошук - це тема для вчених-комп’ютерів, але, якщо це не є надійним посиланням на протилежне, я не вірю, що це походить з двійкових чисел будь-яким прямим способом.


"Згідно з Вікіпедією, двійковий пошук стосується пошуку в масиві відсортованих значень." - Ну, це не так, як я читаю Вікіпедію. Якщо Вікіпедія каже, що вона має бути в масиві, щоб добре вважати двійковим пошуком, то, я думаю, Вікіпедія з цього приводу веде дискусію - але ця стаття, схоже, не говорить про це. Далі в статті Вікіпедії сказано, що двійковий пошук "дозволяє шукати аргумент будь-якої монотонної функції для точки, при якій функція досягає довільного значення" - що не є пошуком у масиві.
DW

"Більш загальна концепція поділу та перемоги пошуку шляхом багаторазового розбиття простору пошуку називається дихотомічним пошуком" - Це не відповідає моєму власному досвіду. Я звичайно чую це під назвою двійковий пошук.
DW

@DW Як я вам казав раніше, моїй пам’яті не дуже довіряти. Але двійковий пошук, а то й розділення та перемоги - це алгоритмічна термінологія, яка дійшла до нас із комп’ютерами. Але я думаю, що навколо мене було не так багато комп’ютерів, коли я вперше почув про дихотомічний пошук, тоді хороша друкована посилання була б набагато кращою, ніж моя (е) больна пам'ять. Щодо вікіпедії, я не прочитав всю статтю. В основному я не думав, що отримаю остаточну відповідь ... і я сумніваюся, що є. Ідея загальна, термінологія приємна, і кожен повинен бути адаптований до будь-якої проблеми.
бабу

1

Кнут (V.3 Pg. 82) подає Мохлі як джерело для двійкового пошуку; він використовується для пошуку точки вставки під час сортування, який потім переміщує елементи вперед, щоб зробити вакансію, в процесі, який називається бінарною вставкою.

Так (2) було б дійсним, але я не бачу оригінального паперу; це затушовано тут: https://books.google.com/books?id=A6EEAQAAIAAJ&focus=searchwithinvolume&q=sorting+and+collating


1

Я намагався шукати посилання Маучлі, цитований Кнутом, але, схоже, моя бібліотека неправильно замінила їх копію.

Тим часом, розгляньте такі цитати, які раніше наводяться на увазі для "бінарного пошуку":

  • Гальперн, Марк. " Таблиці зі змінною шириною із засобом бінарного пошуку". Зв'язок ACM 1.2 (1958): 1-4.

    Сімейство підпрограм, описаних у цьому звіті, було розроблено для створення, пошуку та підтримки таблиць, які мають містити записи різної довжини, але ще підлягати пошуку за розділами або «двійковим» пошуком.

  • Наглер, Х. " Оцінка відносної ефективності двох методів внутрішнього сортування ". Комунікації ACM 3.11 (1960): 618-620.

    Цей звіт стосується IBM 705, моделей I та II. Це дослідження машинного часу, необхідного двома внутрішніми методами сортування, звичайним двостороннім злиттям та формою двійкового пошуку, що належить Д. Морді, корпорації IBM.

  • Петерсен, TL ПРОГРАМА СИНТЕЗУ ВИРОБНИЦТВА № STL / TR-60-0000-09103 (посилання у форматі PDF) . TRW SPACE TECHNOLOGY LABS LOS ANGELES CA, 1960.

    Значення V0 для котрого г(V0)=0зараз треба знайти. Це легко видног(0)=К3-1 і г(К1)=-1, так що необхідне значення V0 лежить між 0 і К1 якщо К3>1. Двійковий пошук ведеться для кореняг(V0); тоV0 Вибирається таке, для якого абсолютне значення різниці між послідовними значеннями V0 менше, ніж 0,01.

Зауважу, як у першому цитаті 1958 року використовуються лапки навколо "бінарних", але до третього цитування в 1960 році згадується двійковий пошук без будь-якого подальшого опису чи пояснення. Алюзія на "пошук за розділом", як правило, дозволяє припустити, що пояснення 2) ближче, але необхідна подальша перевірка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.