|
Algoritmo In-situ (in place) |
|
sábado, 10 de noviembre de 2007 |
|
Se dice que un algoritmo es in-situ (ésto es un latinajo. En español sería algo así como "en el sitio". En inglés dicen In place) cuando la cantidad de memoria que requiere para resolver el problema para el que fue diseñado es siempre constante, independientemente del tamaño del problema a resolver.
- Dicho de otros modos:
Su complejidad espacial está acotada por una función constante
- Su complejidad espacial pertenece al orden O(1)
- No necesita solicitar memoria dinámicamente... puede resolver problemas de distinta talla con una cantidad fija de memoria.
Ejemplos: Los algoritmos de ordenación básicos como BubbleSort, SelectionSort o InsertionSort pueden ordenar arrays de distinto tamaño utilizando siempre la misma cantidad de variables. Son algoritmos In-situ. El algoritmo de ordenación QuickSort necesita "apuntarse" ciertos valores a medida que va ejecutándose... cuanto más grande es el array a ordenar, más de estos valores intermedios tiene que apuntarse. Para ello, necesita más memoria adicional cuanto más grande es el array que tiene que ordenar. Cuando QuickSort se implementa recursivamente, esa memoria se toma de la pila de ejecución (stack), y cuando se implementa iterativamente se toma del montículo (heap). Por lo tanto, es un algoritmo no in-situ.
Más: en wikipedia (en inglés)
|