Tempo logaritmico
Salve a tutti!
Io ho ben chiaro cos'è un logaritmo ma non ho proprio la cognizione di tempo logaritmico o polinomiale o esponenziale.
Qualcuno potrebbe fare chiarezza in parole semplici magari con un esempio grazie
Io ho ben chiaro cos'è un logaritmo ma non ho proprio la cognizione di tempo logaritmico o polinomiale o esponenziale.
Qualcuno potrebbe fare chiarezza in parole semplici magari con un esempio grazie
Risposte
Forse intendi la "complessità temporale" di un algoritmo usando la notazione asintotica (aka $O()$)?
Sinceramente spesso sento dire ha una crescita esponenziale o polinomiale, intuitivamente credo che sia un concetto di funzione
ad esempio y:= log x ;
ad esempio y:= log x ;
Nell'analisi degli algoritmi si misurano le caratteristiche di un algoritmo con unità di misura prese dall'analisi matematica e dalla teoria della complessità, la complessità asintotica.
Di solito nei vari metodi di calcolo della complessità si usa la O() (O-grande) come ha detto Rggb, o la Theta.
Di solito si calcolano le quantità di risorse occupate (S()) e il tempo impiegato (T()), tempo non in cicli di cpu ecc, ma tempo algoritmico.
esempio:
- "tempo lineare" -> $O(n)$
- "tempo polinomiale -> $O(n^2)$
- " tempo esponenziale" -> $O(2^n)$
Va precisato che O() è un esempio di funzione e tutte hanno una definizione ben formata.
Di solito nei vari metodi di calcolo della complessità si usa la O() (O-grande) come ha detto Rggb, o la Theta.
Di solito si calcolano le quantità di risorse occupate (S()) e il tempo impiegato (T()), tempo non in cicli di cpu ecc, ma tempo algoritmico.
esempio:
- "tempo lineare" -> $O(n)$
- "tempo polinomiale -> $O(n^2)$
- " tempo esponenziale" -> $O(2^n)$
Va precisato che O() è un esempio di funzione e tutte hanno una definizione ben formata.
Per esempio, supponiamo di avere una lista di elementi:
Supponiamo di voler trovare l'elemento (unico) della lista con il campo intero uguale a 4.
Un metodo sarebbe quello di scorrere la lista dalla testa alla fine,avremo allora una complessità O(N).
Supponiamo adesso di effettuare inserimenti ordinati in lista.
Sicuramente avremo una complessità maggiore nell'inserimento stesso,da un O(1) inserimento in testa ad un O(n) per inserimento ordinato.
Va da se però che l'estrazione invece a questo punto può essere ottimizzata,mediante l'uso dell'algoritmo della ricerca Binaria, con complessità Logaritmica.
Conosci quest'ultimo Algoritmo?
struct elem { int a; elem*pun; }; elem*testa;
Supponiamo di voler trovare l'elemento (unico) della lista con il campo intero uguale a 4.
Un metodo sarebbe quello di scorrere la lista dalla testa alla fine,avremo allora una complessità O(N).
Supponiamo adesso di effettuare inserimenti ordinati in lista.
Sicuramente avremo una complessità maggiore nell'inserimento stesso,da un O(1) inserimento in testa ad un O(n) per inserimento ordinato.
Va da se però che l'estrazione invece a questo punto può essere ottimizzata,mediante l'uso dell'algoritmo della ricerca Binaria, con complessità Logaritmica.
Conosci quest'ultimo Algoritmo?
Si si ora inizio a capire!
Bene,devi dare l'esame di Algoritmi e Strutture dati?
No già dato.
"ybor4":
No già dato.
eh allora il tuo dubbio assume le dimensioni di un problema di non poco conto
dove studi?
con quanto hai passato l'esame?
"dzcosimo":
[quote="ybor4"]No già dato.
eh allora il tuo dubbio assume le dimensioni di un problema di non poco conto
dove studi?
con quanto hai passato l'esame?[/quote]
In effetti la definizione della complessità dovrebbe essere una nozione di base in qualsiasi corso di algoritmica