You are on page 1of 4

Complejidad Espacial de Algoritmos

Universidad Privada del Norte


Ingeniera de Sistemas Computacionales
Trujillo Per
Ing. Blancas Nez Mitchell

Espinoza Lombardi Sara Alicia


943733505
lombardi_24@hotmail.com

Facultad de Ingeniera Semestre


2016-1
Ing. de Sistemas Computacionales Fecha: 28 de
Marzo
Palabras Clave. Lista de palabras que son indispensables para la comprensin del texto.

1. Complejidad Espacial.

La complejidad de espacio se refiere a la memoria que utiliza un programa para su ejecucin. Lo


que implica que la eficiencia, en el uso de la memoria de un algoritmo, lo indica el espacio en
memoria que ocupan todas las variables propias del algoritmo (Usualmente RAM).

Sin embargo, resulta casi imposible conocer el tamao del programa en memoria pues depende del
lenguaje y arquitectura del computador.

Existen 4 aspectos relevantes a considerar:

La cantidad de memoria requerida por el cdigo del algoritmo.

La cantidad de memoria requerida para almacenar los datos de entrada.

La cantidad de memoria requerida para los datos de salida ya que algoritmos como los de
ordenacin suelen reorganizar los datos de entrada y por ello no necesitan memoria extra para
la salida.

La cantidad de memoria requerida en cuanto a espacio de trabajo del algoritmo para


realizar los clculos y asignaciones tanto para variables como cualquier espacio necesario en la
pila para almacenar llamadas a subrutinas, este espacio es particularmente significativo para
algoritmos que utilizan tcnicas recursivas.

Las primeras computadoras electrnicas y computadoras de escritorio, contaban con muy poca
capacidad de memoria operativa. E.g. la EDSAC 1949 tena un mximo de 1024 17-bit words,
mientras que la SinclairZX80 1980 surgi con solo 1024 8-bit bytes de memoria operativa.

Las computadoras actuales cuentan con una memoria operativa suficientemente grande de16 Gb y
ms , o sea que obligar a un algoritmo a ejecutarse reducidamente en cierta cantidad de memoria ya
no representa el mismo problema que sola ser.

Pero la presencia de tres categoras diferentes de memoria pudiera ser significativa:

Memoria Cach (usualmente RAM-esttica): esta opera a una velocidad comparable a la


del CPU.

Memoria fsica principal (usualmente RAM-dinmica): esta opera un tanto ms lenta que el
CPU.

Memoria virtual (usualmente en disco): esta da la impresin de una gran cantidad de


memoria utilizable y opera en el orden de los miles ms lenta que el CPU.
Un algoritmo cuyas necesidades pueden ser satisfechas con la memoria cach ser mucho ms
rpido que uno que necesite de la memoria principal y en consecuencia mucho ms rpido que uno
que necesita recurrir a la memoria virtual. Si se quiere profundizar an ms dicho problema,
existen sistemas que tienen hasta tres niveles de memoria cach, con diferentes y variadas
velocidades. Sistemas diferentes tendrn diferentes cantidades asignadas a los tipos de memoria
comentados, lo que conlleva a que las necesidades de memoria de un algoritmo varen
significativamente entre un sistema y otro.

La memoria que utiliza un programa para su ejecucin; es decir el espacio de memoria que
ocupan todas las variables propias del algoritmo se dividen en Memoria Esttica y Memoria
Dinmica.

1.1. Memoria Esttica.


Para calcular la memoria esttica, se suman la cantidad de memoria que ocupa cada una de las
variables declaradas en el programa, tomando en cuenta los tipos de datos primitivos del lenguaje
de programacin, podemos determinar el espacio que requiere cada una de las variables de un
programa, de acuerdo a lo siguiente:

Tipo de dato primitivo Tamao en bits Tamao en Bytes


byte 8 1
char 16 2
short 16 2
int 32 4
float 32 4
long 64 8
double 64 8

1.2. Memoria Dinmica.


El clculo de la memoria dinmica, no es tan simple ya que depende de cada ejecucin del
programa o algoritmo y el tipo de estructuras dinmicas que se estn utilizando.
Una de las caractersticas primordiales en la seleccin de un algoritmo es que este sea sencillo
de entender, calcular, codificar y depurar, as mismo que utilice eficientemente los recursos de
la computadora y se ejecute con la mayor rapidez posible con un eficaz uso de memoria
dinmica y esttica.

2. Seleccin de un ptimo Algoritmo.

Como seleccionar un mejor algoritmo a base de estas preguntas:

1) Qu grado de orden tendr la informacin que vas a manejar?


- Si la informacin va a estar casi ordenada y no quieres complicarte, un algoritmo sencillo
como el ordenamiento burbuja ser suficiente. Si por el contrario los datos van a estar muy
desordenados, un algoritmo poderoso como Quicksort puede ser el ms indicado. Y si no
puedes hacer una presuncin sobre el grado de orden de la informacin, lo mejor ser elegir un
algoritmo que se comporte de manera similar en cualquiera de estos dos casos extremos.
2) Qu cantidad de datos vas a manipular?
- Si la cantidad es pequea, no es necesario utilizar un algoritmo complejo, y es preferible uno
de fcil implementacin. Una cantidad muy grande puede hacer prohibitivo utilizar un
algoritmo que requiera de mucha memoria adicional.
3) Qu tipo de datos quieres ordenar?
- Algunos algoritmos slo funcionan con un tipo especfico de datos (enteros, enteros positivos,
etc.) y otros son generales, es decir, aplicables a cualquier tipo de dato.

4) Qu tamao tienen los registros de tu lista?


- Algunos algoritmos realizan mltiples intercambios (burbuja, insercin). Si los registros son
de gran tamao estos intercambios son ms lentos.

3. Conclusiones.

La memoria que usamos puede ser esttica y dinmica segn las variables que
usemos y la estructura que desarrolle el algoritmo respectivamente.
Antes de realizar un programa conviene elegir un buen algoritmo, que utilice
pocos recursos, siendo usualmente los ms importantes el tiempo que lleve
ejecutarse y la cantidad de espacio en memoria que requiera. Es engaoso
pensar que todos los algoritmos son "ms o menos iguales" y confiar en
nuestra habilidad como programadores para convertir un mal algoritmo en un
producto eficaz.

4. Referencias.

4.1 Webgrafa.
Bustamante Dayana, Complejidad Espacial, [BLOG], 2008 , Disponible en:
http://estructuradedatosfacil.blogspot.pe/2008/09/complejidad-en-el-espacio.html
Apolinar Osvaldo, Anlisis de los Algoritmos, [Scribd], 2011, Disponible en:
https://es.scribd.com/doc/2873588/4/Complejidad-en-Espacio
Tutorial de Programacin Multiplataforma, Anlisis de Algoritmos, [TMP], 2013,
Disponible en: http://itslr.edu.mx/archivos2013/TPM/temas/s3u7.html
Estructura de Datos, Anlisis de los Algoritmos, [SitiesGoogle], Disponible en:
https://sites.google.com/site/estdatjiq/home/unidad-vii

You might also like