Complessità temporale dell’algoritmo di ricerca binaria
Sì, si può dire che la complessità del tempo di esecuzione nel caso migliore per l’algoritmo di ricerca binaria è Theta(1) e che la complessità del tempo di esecuzione nel caso peggiore per l’algoritmo di ricerca binaria è Theta(log n). Per spiegarlo, approfondiamo le definizioni di Big O, Big Omega e Big Theta, che sono tutte notazioni asintotiche per descrivere il tempo di esecuzione e le complessità spaziali degli algoritmi.
Quando ci si riferisce al tempo di esecuzione nel caso migliore e peggiore di un algoritmo, ci si riferisce tipicamente a una singola funzione. La notazione Big O è usata per descrivere gli algoritmi dal loro tempo di esecuzione limite superiore e la notazione Big Omega è usata per descrivere gli algoritmi dal loro tempo di esecuzione limite inferiore.
In modo più semplice, Big O significa che l’algoritmo non può e non può essere eseguito più lentamente della funzione limitata all’interno di Big O. Big Omega significa che l’algoritmo non può e non può essere eseguito più velocemente della funzione limitata all’interno di Big Omega. Per usare la notazione Big Theta per descrivere la complessità del tempo di esecuzione di un algoritmo, il tempo di esecuzione dell’algoritmo deve includere la stessa funzione per entrambe le notazioni Big O e Big Omega.
Nel caso della ricerca binaria, il caso migliore è descritto come il caso in cui il primo elemento nell’algoritmo di ricerca è l’elemento o la voce che si sta cercando. Questo significa che, qualunque cosa accada, l’algoritmo dovrà guardare solo non più e non meno di un singolo elemento. Pertanto, questa situazione può essere descritta per avere un tempo di esecuzione di O(1) e Omega(1). Poiché queste due funzioni sono uguali, è corretto dire che il tempo di esecuzione del caso migliore dell’algoritmo di ricerca binaria è Theta(1).
Il caso peggiore della ricerca binaria è descritto come il caso in cui ogni elemento deve essere esaminato e l’ultimo elemento controllato è l’elemento che la ricerca sta cercando, o l’elemento semplicemente non esiste nella struttura dei dati. Poiché la ricerca binaria utilizza il concetto di Divide and Conquer per esaminare ogni elemento, è banale che il tempo di esecuzione dell’algoritmo nel suo caso peggiore debba essere limitato da qualche forma di (log n). In particolare, possiamo dire che avrebbe un tempo di esecuzione sia di O(log n) che di Theta(log n) perché l’algoritmo non potrebbe essere più veloce o più lento a causa del numero di elementi che deve esaminare. In questo caso, le due funzioni sono le stesse, quindi è corretto dire che il tempo di esecuzione nel caso peggiore dell’algoritmo di ricerca binaria è Theta (1).