Come menzionato nella risposta alla domanda collegata, un modo comune per un algoritmo di avere complessità temporale O(log n) è che quell'algoritmo funzioni riducendo ripetutamente la dimensione dell'input di un fattore costante ad ogni iterazione.
Qual è il significato di log n?
O(log N) significa fondamentalmente il tempo sale linearmente mentre n sale esponenzialmente. Quindi, se ci vuole 1 secondo per calcolare 10 elementi, ci vorranno 2 secondi per calcolare 100 elementi, 3 secondi per calcolare 1000 elementi e così via. È O(log n) quando dividiamo e conquistiamo il tipo di algoritmi, ad esempio la ricerca binaria.
Che cos'è O e log n?
Per l'input di dimensione n, un algoritmo di O(n) eseguirà passi proporzionali a n, mentre un altro algoritmo di O(log(n)) eseguirà passi approssimativamente log(n). Chiaramente log(n) è minore di n quindi l'algoritmo di complessità O(log(n)) è migliore.
Come calcoli il log n?
L'idea è che un algoritmo sia O(log n) se invece di scorrere una struttura 1 per 1, dividi la struttura a metà più e più volte ed esegui un numero costante di operazioni per ogni divisione. Gli algoritmi di ricerca in cui lo spazio delle risposte continua a essere diviso sono O(log n).
Cos'è log n Square?
Log ^2 (
) significa che è proporzionale al log del log per un problema di dimensioni
. Registro(
)^ 2 significa che èproporzionale al quadrato del log.