Académique Documents
Professionnel Documents
Culture Documents
Complejidad en el espacio
COMPLEJIDAD
Otra consideracin a tener en cuenta a la hora de tratar con la complejidad es que si
estamos contando el tiempo que tarda un algoritmo en resolver un problema En qu
ordenador lo ejecutamos? Parece obvio que el mismo algoritmo ejecutado en un
ordenador el doble de rpido que otro tardar la mitad en encontrar la solucin. Cul
debera ser entonces la unidad de medida de la complejidad? Ninguna unidad de tiempo
nos vale: ni segundos ni milisegundos, porque el resultado variara de un ordenador a
otro.
Adems el mismo algoritmo tardar ms o menos en solucionar un problema de una talla
u otra. Es decir, no puede tardarse lo mismo en ordenar un array de 100 valores que uno
de 100000.
Nos podemos permitir esa simplificacin porque lo que realmente queremos saber es
cmo crece el nmero de instrucciones necesarias para resolver el problema con respecto
a la talla del problema. Eso es realmente la complejidad.
Por ejemplo, observa sta funcin (da igual cul sea su propsito)
COMPLEJIDAD EN ESPACIO
Es la memoria que utiliza un programa para su ejecucin. Lo que implica que la eficiencia en
memoria de un algoritmo lo indica la cantidad de espacio requerido para ejecutarlo, es decir, el
espacio memoria que ocupan todas las variables propias del algoritmo.
Es la memoria que utiliza un programa para su ejecucin; es decir, el espacio de memoria que
ocupan todas las variables propias del algoritmo.
Memoria esttica. Para calcularla se suma de memoria que ocupan las variables declaradas en el
algoritmo.
Memoria dinmica. Su clculo no es tan simple ya que depende de cada ejecucin del algoritmo
Time
Memory
111
.1 second
11 Kb
11111
11 second
1 Mb
Ejemplo2:
Complejidad espacial:
Como no podemos saber el nmero de elementos que tiene este arreglo decimos que
tiene n elementos int, adems tenemos un elemento int (sum)
Utilizando la notacin O podemos representar eso de la siguiente manera: O(n+1)
Ahora analicemos el siguiente mtodo:
Public void initMatrix (int mat [ ] [ ] ) {
for ( int i = 0; i < mat.length; i++ ) {
for ( int j = 0; j < mat[i].length; j++) {
mat [ i ][ j ] = 0;
}
}
}