Ho la definizione di un algoritmo in situ del professore, ma non lo capisco.
Gli algoritmi in situ si riferiscono ad algoritmi che funzionano con Θ (1) memoria.
Cosa significa?
Ho la definizione di un algoritmo in situ del professore, ma non lo capisco.
Gli algoritmi in situ si riferiscono ad algoritmi che funzionano con Θ (1) memoria.
Cosa significa?
Risposte:
Innanzitutto, scompattiamo il significato di .
Big e big Θ sono classi di funzioni. C'è una definizione formale qui , ma per gli scopi di questa domanda, diciamo che una funzione f è O ( 1 ) se c'è una costante c in cui, per tutti x , f ( x ) ≤ C . Cioè, f cresce al più velocemente di una funzione costante.
Big- non significa molto per le funzioni costanti, perché quando si descrive il tempo dell'algoritmo o l'utilizzo dello spazio, non c'è molto sotto la costante. Ma per spiegare cosa significa, f ∈ Θ ( 1 ) se ci sono alcune costanti c , d tali che, per tutte x , d ≤ f ( x ) ≤ c . Cioè, f cresce almeno altrettanto velocemente, e al massimo altrettanto velocemente, come una funzione costante.
Cosa c'entra questo con l'uso della memoria? Consideriamo alcuni algoritmo . Esiste una funzione (matematica) che, dato un input n , fornisce il massimo utilizzo di memoria dell'algoritmo A su qualsiasi input di dimensione n . Chiamiamo questa funzione m e m .
Quindi, ora uniamo i nostri due concetti. Se un algoritmo utilizza la memoria , la sua funzione di utilizzo della memoria è in Θ ( 1 ) , il che significa che esiste qualche d , c tale che, per qualsiasi input, la memoria utilizzata è compresa tra d e c .
In breve, ciò significa che l'utilizzo della memoria dell'algoritmo è in un intervallo costante, indipendentemente dall'input.
Di solito, la funzione di memoria non tiene conto della memoria utilizzata per memorizzare l'input nell'algoritmo, poiché altrimenti l'utilizzo della memoria sarebbe sempre almeno .
Costante complessità spaziale dell'algoritmo
La quantità di memoria utilizzata dall'algoritmo è indipendente dall'input.
Si dice che un algoritmo abbia una complessità spaziale costante se utilizza una quantità fissa di spazio. Può essere variabili o un array di esattamente 10 elementi.
Tuttavia, gli algoritmi in situ svolgono la funzione prevista sull'input stesso e quindi richiedono pochissimo spazio o niente spazio aggiuntivo. L'input viene in genere sovrascritto dall'output durante l'esecuzione dell'algoritmo. ( rif )
Gli algoritmi in situ non considerano lo spazio occupato dall'input e tengono conto solo dello spazio extra, nel calcolo della complessità dello spazio.