Algoritmo in loco
Da Wikipedia, l'enciclopedia libera
Da Wikipedia, l'enciclopedia libera
In informatica un algoritmo si dice in loco oppure in place quando è in grado di trasformare una struttura dati utilizzando soltanto un piccolo e costante spazio di memoria extra. I dati in ingresso sono solitamente sovrascritti con il risultato prodotto durante l'esecuzione dell'algoritmo.
Un algoritmo è a volte chiamato in modo informale in loco quando sovrascrive i suoi input con i suoi output. In realtà questo non è sufficiente (come dimostra il caso del quicksort) né è necessario; la quantità di spazio occupato dall'output potrebbe essere costante, oppure potrebbe non essere nemmeno quantificabile, per esempio nel caso di output su stream. D'altro canto a volte potrebbe essere più pratico quantificare lo spazio occupato dai risultati in output e determinare se l'algoritmo è definibile come in loco, come si vede nell'esempio di rovesciamento sottostante.
Gli algoritmi in loco sono più efficienti in termini di memoria e, spesso, anche in termini di CPU, rispetto alle controparti non in loco e tendono quindi ad essere preferiti rispetto a questi ultimi.
Supponiamo di dover rovesciare un array di n elementi. Questo è un modo semplice:
Sfortunatamente questo richiede O(n) spazio per creare b e l'allocazione è anche spesso un'operazione lenta. Se nel seguito del programma non abbiamo più necessità di conservare a possiamo sovrascriverlo con il suo rovescio utilizzando un algoritmo in loco:
Ecco una serie di algoritmi di ordinamento che operano in loco:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.