Perché la ricerca binaria è chiamata ricerca binaria?


9

Ho sentito diverse possibili spiegazioni, quindi vorrei un riferimento attendibile.

Aggiornamento 05.19: Sono interessato alla domanda perché uno dei miei studenti ha scritto nella sua tesi che il nome deriva dalla seguente spiegazione (1). Fino ad ora ho pensato / sentito che deriva dalla spiegazione (2). Mi sentirei male sia per aver lasciato la cosa sbagliata nella sua tesi, sia per avergli detto di rimuoverla se potesse essere giusto.

(1) Considerare la ricerca di un numero intero nell'intervallo [0,2n1] . Possiamo trovarlo usando domande ponendo al punto la cifra binaria del numero.niith

(2) Se abbiamo uno spazio di ricerca con elementi, possiamo trovare un elemento sconosciuto per domande che dividono ripetutamente la parte rimanente dello spazio in due .2n

E sì, so che (2) può dare lo stesso algoritmo di (1) ma non è questo il punto. (2) può essere applicato anche per problemi più generali.


1
Inoltre, tieni presente che la domanda richiede riferimenti. Per favore, non rispondere dicendo che è a causa di un motivo del genere senza fornire una fonte affidabile.
David Richerby,

1
@DavidRicherby, No, la curiosità non è una motivazione sufficiente per richiedere un riferimento "affidabile". La curiosità sarebbe una motivazione sufficiente per chiedere "Perché la ricerca binaria è chiamata ricerca binaria?", Ma non è motivo sufficiente per richiedere un riferimento / fonte affidabile, e non è motivo sufficiente per dire "non rispondere con una spiegazione; vogliono fonti affidabili ". Se l'OP ha trovato più spiegazioni contrastanti, l'OP dovrebbe parlarci di loro nella domanda (si noti che la domanda Math.SE non ha portato a spiegazioni contrastanti).
DW

3
Penso che dovresti iniziare dando le spiegazioni che hai. Potremmo avere un'idea della fiducia che dovrebbero avere. E potrebbe essere utile se tu fornissi la tua, preferibilmente precisa, definizione di ciò che chiami ricerca binaria, in modo che possiamo essere sicuri di parlare dello stesso concetto, o in alternativa dare un riferimento a tale definizione.
babou,

2
Volume 3 di Knuth TAoCP, chiunque? Il mio è in ufficio ...
Hendrik,

Risposte:


1

La spiegazione (2) è una buona spiegazione.

(2) è la spiegazione migliore delle due, poiché si applica generalmente a tutti gli usi della ricerca binaria, non solo a un'istanza specifica. (1) non è un modo irragionevole di pensarci - non è così generale o completo come (2).

Non penso che tu debba sentirti obbligato a richiedere allo studente di correggere questa affermazione. Non sarebbe imbarazzante se uno studente fornisse una spiegazione (1) nella sua tesi, quindi non è necessario sentirsi male. Ma se vuoi insegnare loro qualcosa, puoi dire loro della spiegazione (2) e di come la ricerca binaria sia più generale e perché il nome "ricerca binaria" sia ragionevole anche per l'algoritmo generale. Ma è un punto minore e non qualcosa che considererei problematico o imbarazzante se lasciassero le cose come sono.


nessun riferimento! sembra più una questione storica :(
VZN

1

Secondo Wikipedia, la ricerca binaria riguarda la ricerca in una matrice di valori ordinati.

Il concetto più generale di divisione e conquista della ricerca suddividendo ripetutamente lo spazio di ricerca si chiama ricerca dicotomica (letteralmente: "che taglia in due"). L'uso della dicotomia può essere preso in considerazione in altri contesti, tanto quanto hai qualcosa da dividere. In realtà è la prima espressione che ho imparato (al liceo, penso, e questo è stato molto tempo fa), anche nei casi in cui potresti volerlo chiamare binario.

Afaik, "dicotomico" non implica che le due parti siano (quasi) uguali.

2n

Dichotomic è chiaramente il termine più generale, ma può sembrare pedante per alcuni che potrebbero invece usare in modo improprio binario.

Il tuo esempio (1) è stranamente dichiarato, poiché non si richiedono consapevolmente cifre binarie, ma piuttosto un confronto con la mediana di un intervallo. Ma potrebbe qualificarsi come binario.

Il tuo esempio (2) non è chiaro. Basta dividere in due dovrebbe essere chiamato dicotomico. Ora, poiché sembri ipotizzare (in modo strano) un modo di creare 2 parti uguali, non ne sono sicuro.

Ma un gioco d'ipotesi, in cui le persone fanno domande a cui si risponde sì o no, è chiaramente dicotomico.

La mia ipotesi, nessun riferimento dato:

L'espressione originale era probabilmente "dicotomica", ma con la popolarità di sistemi binari, computer binari, ecc., Il termine "binario" divenne più popolare.

Un altro fattore che può aver giocato un ruolo importante è che la ricerca binaria (oltre che dicotomica) si basa su scelte binarie. Ora esiste l'espressione " scelta dicotomica ", ma è molto meno utilizzata della " scelta binaria ", che appare circa 6 volte più spesso sul web.

Quindi questo potrebbe averlo influenzato. Dovremmo ricordare che sebbene siamo ampiamente immersi nel numero binario (intendo noi, scienziato informatico), la maggior parte delle persone non è e non si preoccupa dei numeri binari, ma parlerà facilmente di una scelta binaria. È vero che la ricerca binaria è un argomento per l'informatica, ma a parte un riferimento affidabile al contrario non credo che provenga da numeri binari in alcun modo diretto.


"Secondo Wikipedia, la ricerca binaria riguarda la ricerca in una matrice di valori ordinati." - Beh, non è così che ho letto Wikipedia. Se Wikipedia dice che deve essere in un array per contare bene come ricerca binaria, allora penso che Wikipedia sia discutibile su questo - ma l'articolo di Wikipedia non sembra dirlo. Più in basso l'articolo di Wikipedia afferma che la ricerca binaria "consente di cercare un argomento su qualsiasi funzione monotonica, in cui la funzione raggiunge il valore arbitrario" - che non è la ricerca in un array.
DW

"Il concetto più generale di divisione e conquista della ricerca suddividendo ripetutamente lo spazio di ricerca si chiama ricerca dicotomica" - Non corrisponde alla mia esperienza. Sento regolarmente questa chiamata ricerca binaria.
DW

@DW Come ti ho detto prima, la mia memoria non è molto affidabile. Ma la ricerca binaria, o persino la divisione e la conquista, sono una terminologia algoritmica che ci è venuta in mente con i computer. Ma penso che non ci fossero molti computer in giro quando ho sentito parlare per la prima volta della ricerca dicotomica, quindi un buon riferimento stampato sarebbe molto meglio della mia (f) memoria malata. Per quanto riguarda Wikipedia, non ho letto l'intero articolo. Fondamentalmente non pensavo che avrei avuto una risposta definitiva ... e ho qualche dubbio che ce n'è una. L'idea è generale, la terminologia gradevole e deve essere stata adattata da ciascuno a qualunque problema.
babou,


1

Ho cercato di cercare il riferimento di Mauchly citato da Knuth ma la mia biblioteca sembra aver smarrito la loro copia.

Nel frattempo, considera le seguenti citazioni iniziali per "ricerca binaria":

  • Halpern, Mark. " Tabelle a larghezza variabile con funzione di ricerca binaria. " Comunicazioni di ACM 1.2 (1958): 1-4.

    La famiglia di subroutine descritta in questo rapporto è stata progettata per creare, cercare e mantenere tabelle che devono contenere voci di lunghezze diverse, ma che possono essere ricercate per partizione o ricerca "binaria".

  • Nagler, H. " Una stima dell'efficienza relativa di due metodi di classificazione interni. " Comunicazioni dell'ACM 3.11 (1960): 618-620.

    Questo rapporto riguarda l'IBM 705, modelli I e II. È uno studio del tempo della macchina richiesto da due metodi di ordinamento interno, la fusione bidirezionale convenzionale e una forma di ricerca binaria, dovuta a D. Mordy, della IBM Corporation.

  • Petersen, TL RE-ENTRY PROGRAMMA DI SINTESI DEL VEICOLO. No. STL / TR-60-0000-09103 (link pdf) . LABORATORI TECNOLOGICI TRW SPACE LOS ANGELES CA, 1960.

    Il valore di per il quale g ( V 0 ) = 0 deve ora essere trovato. Si vede facilmente che g ( 0 ) = K 3 - 1 e g ( K 1 ) = - 1 , in modo che il valore richiesto di V 0 ∗ sia compreso tra 0 e K 1 se K 3 > 1 ) ; il V 0V0g(V0)=0g(0)=K31g(K1)=1V0K1K3>1g(V0)V0V00.01

Noterò come la prima citazione del 1958 utilizzi le virgolette intorno a "binario", ma con la terza citazione del 1960, una ricerca binaria viene menzionata senza ulteriori descrizioni o spiegazioni. L'allusione alla "ricerca per partizione" tende a suggerire che la spiegazione 2) è più stretta, ma sono necessarie ulteriori verifiche.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.