You are on page 1of 4

ANLISIS NUMRICO

1.7

ICM ESPOL

Eficiencia de los Mtodos Directos

La eficiencia de un algoritmo est relacionada con el tiempo necesario para obtener la solucin.
Este tiempo depende de la cantidad de operaciones aritmticas que se deben realizar. As, si se
tienen dos algoritmos para resolver un mismo problema, es ms eficiente el que requiere menos
operaciones aritmticas para producir el resultado. Adicionalmente, el algoritmo ms eficiente
acumular menos error si los resultados son nmeros reales que no pueden representarse en
forma exacta en el dispositivo de clculo.
Sea n el tamao del problema, y T(n) la eficiencia del algoritmo (cantidad de operaciones
aritmticas requeridas). Para obtener T(n) se pueden realizar pruebas en el computador con
diferentes valores de n registrando el tiempo de ejecucin. Siendo este tiempo proporcional a la
cantidad de operaciones aritmticas que se realizaron, se puede estimar la funcin T(n).
Esta forma experimental para determinar T(n) tiene el inconveniente que requiere la
instrumentacin computacional del algoritmo para realizar las pruebas. Es preferible conocer la
eficiencia del algoritmo antes de invertir esfuerzo en la programacin computacional.
Para determinar T(n) se puede analizar la formulacin matemtica del mtodo numrico o la
estructura del algoritmo.
Ejemplo. El siguiente algoritmo calcula la suma de los cubos de los primeros n nmeros
naturales. Encontrar T(n)
Sea T la cantidad de sumas que se realizan
...
s0
Para i=1, 2, ..., n
s s + i3
fin
...
La suma est dentro de una repeticin que se realiza n veces, por lo tanto,
T(n) = n

Ejemplo. El siguiente algoritmo suma los elementos de una matriz cuadrada a de orden n.
Encontrar T(n)
Sea T la cantidad de sumas
...
s0
Para i=1, 2, ..., n
Para j=1, 2, ..., n
s s + ai, j
fin
fin
...
La suma est incluida en una repeticin doble. La variable i, cambia n veces y para cada uno de
sus valores, la variable j cambia n veces. Por lo tanto.
T(n) = n2

Ing. Luis Rodrguez Ojeda, MSc

ANLISIS NUMRICO

ICM ESPOL

Ejemplo. El siguiente algoritmo es una modificacin del anterior. Suponga que se desea sumar
nicamente los elementos de la sub-matriz triangular superior. Obtener T(n)
...
s0
Para i=1, 2, ..., n
Para j=i, i+1, ..., n
s s + ai, j
fin
fin
...
Si no es evidente la forma de T(n), se puede recorrer el algoritmo y anotar la cantidad de sumas
que se realizan
i
j
1
n
2
n-1
Nmero de repeticiones
3
n-2
en el ciclo de j para cada
...
...
valor que toma i
n-1
2
n
1
n
n2 n
Entonces, T(n) = 1 + 2 + .... + n = (n + 1) =
(suma de una serie aritmtica)
+
2
2 2

1.7.1 La notacin O( )
Supongamos que para resolver un problema se han diseado dos algoritmos: A y B, con
eficiencias TA(n) = 10n+2, TB(n) = 2n2 + 3, respectivamente. Cual algoritmo es ms eficiente?.
La respuesta depende de n. Para valores pequeos de n, TB(n) < TA(n), pero para valores
grandes de n, TA(n) < TB(n). Es de inters prctico determinar la eficiencia de los algoritmos
para valores grandes de n. Por lo tanto el algoritmo A es ms eficiente que el algoritmo B como
se puede observar en el siguiente grfico

Si T(n) incluye trminos con n que tienen diferente orden, es suficiente considerar el trmino de
mayor orden pues es el que determina la eficiencia del algoritmo cuando n es grande. No es
necesario incluir los coeficientes y las constantes.

Ing. Luis Rodrguez Ojeda, MSc

ANLISIS NUMRICO

ICM ESPOL

Ejemplo. Suponga T(n) = n2 + n + 10. Evaluar T para algunos valores de n


T(2)
= 4 + 2 + 10
T(5)
= 25 + 5 + 10
T(20) = 400 + 20 + 10
T(100) = 10000 + 100 + 10
Se observa que a medida que n crece, T depende principalmente de n2. Este hecho se puede
expresar usando la notacin O( ) la cual indica el orden de la eficiencia del algoritmo, y se
puede escribir: T(n) = O(n2) lo cual significa que la eficiencia es proporcional a n2, y se dice que
el algoritmo tiene eficiencia cuadrtica o de segundo orden.

En general, dado un problema de tamao n, la medida de la eficiencia T(n) de un algoritmo se


puede expresar con la notacin O(g(n)) siendo g(n) alguna expresin tal como: n, n2, n3, ...,
log(n), n log(n), ..., 2n, n!, ... la cual expresa el orden de la cantidad de operaciones aritmticas
que requiere el algoritmo.
Es de inters medir la eficiencia de los algoritmos para problemas de tamao grande, pues para
estos valores de n se debe conocer la eficiencia. En el siguiente cuadro se ha tabulado T(n) con
algunos valores de n y para algunas funciones tpicas g(n).
Tabulacin de T(n) con algunos valores de n para algunas funciones tpicas g(n)
n [log(n)] n [n log(n)]
1
3
5
7
9
11
13
15
17
19
21
23
25
50
100

0
1
1
1
2
2
2
2
2
2
3
3
3
3
4

1
3
5
7
9
11
13
15
17
19
21
23
25
50
100

n2

n3

0
1
1
3
9
27
8
25
125
13
49
343
19
81
729
26
121
1331
33
169
2197
40
225
3375
48
289
4913
55
361
6859
63
441
9261
72
529
12167
80
625
15625
195 2500 125000
460 10000 1000000

2n
2
8
32
128
512
2048
8192
32768
1.31x105
5.24x105
2.09x106
8.38x106
3.35x107
1.12x1015
1.26x1030

n!
1
6
120
5040
3.62x105
3.99x107
6.22x109
1.30x1012
3.55x1014
1.21x1017
5.10x1019
2.58x1022
1.55x1025
3.04x1064
9.33x10157

Los algoritmos en las dos ltimas columnas son de tipo exponencial y factorial
respectivamente. Se puede observar que an con valores relativamente pequeos de n el valor
de T(n) es extremadamente alto. Los algoritmos con este tipo de eficiencia se denominan nofactibles pues ningn computador actual pudiera calcular la solucin en un tiempo aceptable
para valores de n grandes
La mayora de los algoritmos que corresponden a los mtodos numricos son de tipo polinomial
con g(n) = n, n2, n3
.

Ing. Luis Rodrguez Ojeda, MSc

ANLISIS NUMRICO

ICM ESPOL

EJERCICIOS
1) Suponga dos algoritmos A, B diseados para resolver el mismo problema de tamao n:
TA(n) = 2n2 + 3n + 5
TB(n) = 20n + 5
A partir de que valor de n es mas eficiente el algoritmo B?
2) Exprese la eficiencia de los algoritmos A, B con la notacin O( )
3) Los computadores actuales pueden realizar 100 millones de operaciones aritmticas en un
segundo. Calcule cuanto tiempo tardara este computador para resolver un problema de tamao
n=50 si el algoritmo es de tipo:
a) Polinomial de tercer grado
b) Exponencial
c) Factorial
4) Determine la funcin de eficiencia T(n) del algoritmo Triangular incluido en el captulo 1 y
exprsela con la notacin O( ). Suponga que es de inters conocer la cantidad total de
multiplicaciones que se realizan.
5) El siguiente algoritmo recibe un nmero natural n y produce cada uno de los dgitos d del
nmero equivalente en el sistema binario.
Ingresar n
Mientras n>0 repita
d mod(n, 2)
El residuo entero de la divisin n/2 es el dgito d
n fix(n/2)
El cociente entero de la divisin n/2 es el nuevo n
Mostrar d
fin
a) Recorra el algoritmo con n = 73
b) Suponga que T(n) representa la cantidad de operaciones aritmticas de divisin que se
realizan para resolver el problema de tamao n. Encuentre T(n) y exprsela con la notacin O( )
Para obtener T(n) observe el hecho de que en cada ciclo, el valor de n se reduce
aproximadamente a la mitad.
6) 4.- Suponga que tiene tres algoritmos: A, B, C con eficiencia respectivamente:
TA(n) = 5n + 50
TB(n) = 10n ln(n) + 5
TC(n) = 3n2 + 1
a) Determine n a partir del cual A es mas eficiente que B
b) Determine n a partir del cual B es mas eficiente que C

Ing. Luis Rodrguez Ojeda, MSc