Вы находитесь на странице: 1из 4

Practica 2

503309 - Analisis y Diseno de Algoritmos

Profesora: Andrea Rodriguez


Ayudante: Luis Cabrera Crot

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:

Algoritmo 1 M aximo Comun Divisor


Entrada: Dos n umeros enteros a y b.
Salida: El maximo comun divisor entre a y b.
1: mientras b != 0 hacer
2: r a mod b
3: ab
4: br
5: fin mientras
6: retornar a

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.

mcd(a, b) = mcd(b, r) a, b con r = a b c y c = ba/bc.

Sea d cualquier divisor com


un entre a y b (En el peor caso es solo el uno).
Como r = a b c entonces d tambien es divisor de r.
d es divisor de a y b = d es divisor de b y r.
Sea d0 cualquier divisor com
un entre b y r (En el peor caso es solo el uno).
Como a = r + b c entonces d0 tambien es divisor de a.
d0 es divisor de b y r = d0 es divisor de a y b.
Todos los divisores de a y b, son exactamente los mismos divisores de b y r.
MCD(a,b) = MCD(b,r)

El algoritmo entrega el valor esperado.


El algoritmo es correcto. 

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

1 n(n + 1)(2n + 1) 1 n(n + 1) 2n3 + 6n2 + 4n n3 + 3n2 + 2n


+ = = veces
2 6 2 2 12 6

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) 

Вам также может понравиться