Está en la página 1de 9

Taller 1

Carlos Alberto Castao (1153563)


Claudia Marcela Velez (1053635)
Edwin Ramiro Ospina (1053542)
13 de abril de 2012

1. Variacin para el INSERTION-SORT

Pseudocdigo 1 INSERTION-SORT
Entrada: A[1...n]
Salida: A[1...n]
1: key 0
2: i 0
3: para j 2 hasta n hacer
4:
key A[j]
5:
ij1
6:
mientras i > 0 y A[i] < key
7:
A[i + 1] A[i]
8:
n mientras
9:
A[i + 1] key
10: n para

hacer

Para el arreglo {45, 21, 95, 37, 21, 64}, este algoritmo funcionara de la siguiente manera:
22 < 45, sin intercambio
45, 21, 95, 37, 21, 64
95 > 45 > 21, intercambio
95, 45, 21, 37, 21, 64
37 > 21, intercambio
95, 45, 37, 21, 21, 64
21 = 21, sin intercambio
95, 45, 37, 21, 21, 64
64 > 21 > 21 > 37 > 45, intercambio
95, 64, 45, 37, 21, 21

2. Suma de binarios

Pseudocdigo 2 SUMA DE BINARIOS


Entrada: A[1...n], B[1...n]
Salida: C[1...n]
1: acarreo falso

2: C[] A.length + 1
3: para i B.length 1 bajar hasta 0 hacer
4:
si A[i] = 0 y B[i] = 0 entonces
5:
si acarreo = verdadero entonces
6:
C[i + 1] 1
7:
acarreo falso
8:
si no
9:
C[i + 1] 0
10:
n si
11:
si no, si A[i] = 0 y B[i] = 1 o A[i] = 1 y B[i] = 0
12:
si acarreo = verdadero entonces
13:
C[i + 1] 0
14:
si no
15:
C[i + 1] = 1
16:
n si
17:
si no, si acarreo = verdadero entonces
18:
C[i + 1] 1
19:
si no
20:
C[i + 1] 0
21:
acarreo verdadero
22:
n si
23:
si acarreo = verdadero entonces
24:
C[0] 1
25:
n si
26: n para

entonces

3. Pseudocidigo, tiempo de ejecucin, mejor y peor caso para SELECTION-SORT

Pseudocdigo 3 SELECTION-SORT
Entrada: A[1...n]
Salida: A[1...n]
1: menor 0
2: posM enor 0
3: para i 0 hasta n 1 hacer
4:
posM enor i
5:
menor A[posM enor]
6:
para j i + 1 hasta n hacer
7:
si A[j] < menor entonces
8:
posM enor j
9:
menor A[posM enor]
10:
n si
11:
n para
12:
A[posM enor] A[i]
13:
A[i] menor
14: n para

El bucle externo se ejecuta n 1 veces y el bucle interno se ejecuta n veces por cada bucle externo
comenzando desde i + 1, es decir n i veces para j = 1. Se toma la lnea 7 como medida del tiempo de
ejecucin total del algoritmo, por tanto se tiene que:

n1
ni
XX

T (n) =

k, k = 1

i=1 j=1

Mejor caso (Cuando el arreglo est previamente ordenado):


En este caso la comprobacin de la lnea 7 sera falsa hasta que j = n, por lo tanto las lneas 8 y

9 no se ejecutarn.

ni
n1
XX

i=1 j=1
ni
X

1 = (n i)

j=1
n1
X

n1
X

i=1

i=1

(n i) =

n1
X

i=1

(n 1)[(n1)+1]
2


n(n 1)
n(n 1)
2
 2

n n
n(n 1)
n2 n
=
2
2
n(n 1)

(n2 )

Peor caso (Cuando el arreglo est en orden inverso):


En este caso la comprobacin de la lnea 7 sera verdadera hasta que j = n, por lo tanto se ejecutarn las lineas 8 y 9 cuyo tiempo de ejecucin es constante, entonces se concluye que para el peor caso el
algoritmo se comporta:
(n2 )

4. Si n = 1,000,000 entonces:
a ) T (n) = Clg(n)

Si

T (1000) = Clg1000
Clg1000 = 1000
C = 1000/lg1000

Entonces
T (1000000) = Clg1000000
Clg1000000
1000
lg1000 lg1000000
1000lg1000000
lg1000000

2000mls

b ) T (n) = C n

Si

T (1000)
= C 1000

C 1000 =1000
C = 1000/ 1000

Entonces

T (1000000)
= C 1000000

C 1000000

1000
1000000
1000

1000
1000000
1000000
1000000

1000

31622, 77mls

c ) T (n) = Cn

Si

T (1000) = C1000
C1000 = 1000
C=1

Entonces
T (1000000) = Cn
n = 1000000

d ) T (n) = Cnlg(n)

Si

T (1000) = Cnlg1000
Cnlg1000 = 1000
C = 1000/nlg1000
C = 1000/1000lg1000

C = 1000/1000 3
C = 1000/3000 = 1/3

Entonces
T (1000000) = Cnlg1000000
C1000000 lg1000000
1
3 1000000lg1000000

2000000

e ) T (n) = Cn2

Si

Cn2 = 1000
C = 1000/n2
C = 1000/10002
C = 1000/1000000
C = 1/1000
C = 0, 001

Entonces

T (1000000) = Cn2
Cn2 = 1/1000 10000002
10000002 /1000
1000000000

f ) T (n) = Cn3
T (n) = Cn3
C = 1000/10003
C = 1/1000000

Entonces

10000003 /1000000
1x101 3/1x10
10000000

g ) T (n) = C2n
T (n) = C2n
C2n = 1000
C = 1000/2n
C = 1000/21000000
h ) T (n) = Cn!
T (n) = Cn!
Cn! = 1000
C = 1000/n!
C = 1000/1000000!

5. Mostar que a y b R, donde b > 0, (n + a)b = (nb )


Por denicin de (g(n)) se tiene que:
C1 nb (n + a)b C2 nb

a ) Para C1 nb (n + a)b Si a 0, n0 1 entonces:


C1 nb (n + 0)b
C1 nb nb
C1 1

Por lo tanto para cualquier a > 0 tambin se cumple que: C1 nb (n + a)b


b ) Para (n + a)b C2 nb Si n a, n0 1 entonces:
(n + n)b C2 nb
C2 nb (2n)b
C 2 nb 2 b nb
C2 2b

Por lo tanto para cualquier n a tambin se cumple que: C2 nb (n + a)b

6.

a ) Es 2n+1 = O(2n )?
2n+1 C1 2n
2n 2
C1
2n
2 C1

Verdadero, por lo tanto 2n+1 = O(2n )


b ) Es 22n = O(2n )?

2n 2n C1 2n
2n 2n
C1
2n
2n C1

Falso, ya que no existe una constante C1 que limite todas las potencias de 2.
7. La funcin g(n) = nO(1) signica que hay alguna funcin f (n) tal que g(n) = nf (n) , y f (n) = O(1). En
otras palabras, f (n) es solo un valor constante f , y de esta forma g(n) = nf .
Suponiendo T (n) = nO(1) . As T (n) = nf para alguna constante f . Entonces T (n) = O(nf ).
Suponiendo T (n) = O(nk ). As T (n) Cnk para alguna constante C .
Asumiendo aqu que la notacin O() est denida para ser aplicada a n sucientemente grande.
Notar que para n 2 se tiene que C nC . As, para n 2, tenemos T (n) nC nk = nC+k . Aqu C y k
son constantes, As C + k = O(1). Finalmente T (n) = nO(1) .
8.
9.

a ) T (n) = T (bn/2c) + 1, Solucin: T (n) = O(lgn)


T (bn/2c) clg(bn/2c)
T (n) clg(bn/2c) + 1
T (n) c(lgn lg2) + 1
T (n) clgn clg2 + 1
T (n) clgn c + 1
T (n) clgn
c = 1, n = 1, 1 = T (1) 1lg1
c = 1, n = 2, 2 = T (2) 1lg2
c = 2, n = 2, 2 = T (2) 2lg2 c 2, n0 2

b ) T (n) = 2T (bn/2c + 17) + n, Solucin: T (n) = O(nlgn)


T (n)
n

T (bn/2c + 17)
bn/2c + 17
)
T ( n+102
4

T (bn/2c + 17)
bn/2c + 17

)
T ( n+102
4

n+102
4

n+102
4

)
T ( n+102
4
n+102
4

)
T ( n+102
4
n+102
4

Hasta T(1) = 1
Para cada nivel del arbol: n, n/21 , n/22 , n/23 , respectivamente.
n/2h = 1
n = 2h
h = log2 n
T (n) = nlgn

c ) T (n) = T ( n) + 1, Solucin: T (n) = O(lg(lgn))


T (n) clglgn

T ( n) clglg n

T (n) = clglg n + 1
1
T (n) = clg lgn + 1
2
T (n) = clglgn
T (n) = O(lglgn)

10. Resolver por iteracin


a ) T (n) = 3T (bn/2c) + n
T (n) = 3T (n/2c) + n
n + (3/2)n + (3/2)2 n + ... + (3/2)lgn1 n + (nlg3 )
n

lgn1
X

(3/2)2 + (nlg3 )

i=0

(3/2)lgn 1
+ (nlg3 )
(3/2) 1

2(n(3/2)lgn n) + (nlg3 )
2n

3lgn
2n + (nlg3 )
2lgn

2(3lgn ) 2n + (nlg3 )
2nlg3 2n + (nlg3 )
(nlg3 )

T (n) = 3T (bn/2c) + n
3cbn/2clg3 cbn/2c + n

cn
3cnlg3

+n
lg3
2
2

cnlg3 cn/n + n
cnlg3
c2

b ) T (n 1) + 1/n
T (n) = T (n 1) + 1/n
T (n) = T (n 1) + 1/n = 1/n + 1/n 1 + 1/n 2 + ... + 1/2 + 1/T (1)
n
X
1
k

k=1

1+

n
X
k=2

1
1+
k

1
dx
x

1 + lnn O(lnn)
T (n) = (lnn)
lgn

11.

a ) T (n) = 4T (n/2) + n a = 4, b = 2, f (n) = n, Primer Caso


f (n) = O(nlogb a ), > 0
n = O(n2 ), 2 1, 1
T (n) = (n2 )

b ) T (n) = 4T (n/2)n2 a = 4, b = 2, f (n) = n2 , Segundo Caso


f (n) = (nlogb a )
n2 = (n2 )
T (n) = (n2 lgn)

c ) T (n) = 4T (n/2)n3 a = 4, b = 2, f (n) = n3 , Tercer Caso


n3 = (n2+ ), 2+ 3, 1
4f (n/2) cn3
4(n/2)3 cn3
 3
n
4
cn3
8
n3
cn3
2
c = 1/2
T (n) = (n3 )

12.

a ) Resuelto con C1; T (n) = 7T (n/2) + n2 ; a = 7, b = 2, f (n) = n2 T (n) = 7T (n/2)n2


f (n)/(nl og7)
n2 /(nl og7)
n2 log7)
T (n) = (n2 )

b ) Resuelto con C2; T (n) = aT 0 (n/4) + n2 ; T (n) = aT (n/4)n2


T (n) = aT (n/4)n2 =
T (n) = a(aT (n/42 + n/4)n2
T (n) = a2 T (n/42 + a/4n + n2

T(n) = a3 (T (n/43 ) + (a/4)2 n + (a/4)1 n(a/4)0 n


xi
X

(a/4)i = n

i=0

T (1) = T (n/4x ) = n/4x = 1, n = 4x , x = log4 n


A0 = 48 = loga 48 = 2,79
A = 42 ,8 < 48,5

Esto quiere A' es mas rpida que A.

También podría gustarte