23 Marzo 2017
1. Correctitud
P1. Demuestre que el Algoritmo de Euclides para la obtencion del Maximo Com
un Divisor entre dos n
umeros
es correcto.
Resp:
Lo primero que se debe demostrar es que el algoritmo termina: Como se puede ver en la lnea (1) el
programa dejar a de iterar cuando la variable b sea igual a 0. Como inicialmente la variable b revise el
elemento menor, si este es 0 el programa retorna a (por definicion de Identidad de MCD: mcd(a,0) =
mcd(0,a) = a). En el caso que b sea distinto de 0, b recibira el valor del residuo de dividir a/b, el
cual siempre estara en el intervalo 0 <= r < b, por lo que despues de un numero finito de iteraciones (en
el peor caso, b iteraciones) siempre llegara a ser 0.
El algortimo termina.
Para demostrar que algoritmo entrega el valor esperado, debemos identificar la siguiente invariante.
1
2. Notaci
on de Complejidad
P2. Proporcione un an
alisis asint
otico de peor caso en notacion O() para el tiempo de ejecucion de los siguientes
fragmentos de programa.
1)
para i = 0 to 2n hacer
xx+1
fin para
Resp:
Como la asignaci
on de x se realiza:
2n
X
1 = 2n + 1 veces
i=0
El tiempo de ejecuci
on es O(n)
2)
para i=0 to 2n hacer
para j=1 to n hacer
xx+1
fin para
fin para
Resp:
Como la asignaci
on de x se realiza:
X n
2n X 2n
X
1= n = (2n + 1)n = 2n2 + n veces
i=0 j=1 i=0
on es O(n2 )
El tiempo de ejecuci
3)
para i = 1 to n hacer
para j = 1 to i hacer
para k = 1 to j hacer
xx+1
fin para
fin para
fin para
Resp:
Como la asignaci
on de x se realiza:
n X j
i X n X
i n n n
X X X i(i + 1) 1X 2 1X
1= j= = i + i=
i=1 j=1 k=1 i=1 j=1 i=1
2 2 i=1 2 i=1
2
on es O(n3 )
El tiempo de ejecuci
4)
para i = 1 to n hacer
para j = 1 to i hacer
para k = 1 to i hacer
xx+1
fin para
fin para
fin para
Resp:
Como la asignaci
on de x se realiza:
n X
i X
i n X
i n
X X X n(n + 1)(2n + 1) 2n3 + 3n2 + n
1= i= i2 = = veces
i=1 j=1 k=1 i=1 j=1 i=1
6 6
on es O(n3 )
El tiempo de ejecuci
5)
i=n
mientras i 1 hacer
xx+1
i i/2
fin mientras
Resp:
En este algoritmo el conjunto se va dividiendo en mitades, por lo que la asignacion de x se realiza:
log2 n veces
El tiempo de ejecuci
on es O(log n)
3
6)
j=n
mientras j 1 hacer
para i = 1 to j hacer
xx+1
fin para
j j/3
fin mientras
Resp:
Como la asignaci
on de x se realiza:
log3 n log3 n
X n X 1
j
= n
j=1
3 j=1
3j
Serie Geometrica:
log3 n j
X 1 (1/3)logn+1 1 1 (1/3) (1/3)logn 2/3 1/3 1/3n n1
= 1= = =
j=1
3 2/3 2/3 2/3 2n
log3 n
X 1 n1 n1
n =n =
j=1
3j 2n 2
El tiempo de ejecuci
on es O(n)
7)
i=n
mientras i 1 hacer
para j = 1 to n hacer
xx+1
fin para
i i/2
fin mientras
Resp:
Como la asignaci
on de x se realiza:
logn
XX n logn
X logn
X
1= n=n 1 = (n logn) veces
i=1 j=1 i=1 i=1
El tiempo de ejecuci
on es O(nlogn)