Sei sulla pagina 1di 3

ISIS 1105 Diseo de Algoritmos

Semestre 2015-1
Tarea 1
Prof. Rodrigo Cardoso
Por: Jhon Sebastin Ramos Martnez
Cdigo: 201315250

1. [30/100] El lenguaje GCL, elegido para expresar los algoritmos en el curso, tiene
peculiaridades que no son corrientes en los lenguajes de programacin comerciales.
D respuestas para las siguientes preguntas:
a. Suponga que GCL se enriquece con una instruccin nueva S, pero que sta se puede
implementar con instrucciones GCL ya conocidas. Es factible enriquecer el clculo
de Hoare con una regla que permita concluir la correccin de S con respecto a una
especificacin dada?
Si es factible enriquecer el clculo de Hoare que permita concluir la correccin de S.
b. Dados dos programas, S1 y S2, se dice que S1 simula S2 cuando, para toda
especificacin Q,R (pre / poscondicin) se tiene que
{Q} S2 {R} {Q} S1 {R}
Defina la relacin
S1 equivale S2 (S1 simula S2) (S2 simula S1)
Muestre que equivale es una relacin de equivalencia. Explique, en trminos
operacionales, cundo dos programas son equivalentes.
Ntese que, si S1 simula a S2, para cualesquiera Q,R:
Q wp(S2|R)
= Def correccin
{Q} S2 {R} S1 simula S2 {Q} S1 {R}
= Def correccin
Q wp(S1|R)
Por tanto, si Q wp(S2|R):
wp(S2|R) wp(S1|R).
Por otro lado, si wp(S2|R) wp(S1|R) es cierto: para Q,R cualesquiera:
{Q} S2 {R}
= Def correccin
Q wp(S2|R)
Debilitamiento
Q wp(S1|R)
= Def correccin
{Q} S1 {R}

ISIS 1105 Diseo de Algoritmos


Semestre 2015-1
Tarea 1
Prof. Rodrigo Cardoso
Por: Jhon Sebastin Ramos Martnez
Cdigo: 201315250

i.e., S1 simula a S2. Con este replanteo de la definicin de simulacin es fcil ver que
sta es una relacin de preorden (reflexividad, transitividad):
Reflexividad
Claramente, para todo Q, R:
wp(S|R) wp(S|R). de modo que S simula S.
2. [30/100] Dadas las funciones de variable real positiva
log |n|
3 log n
n
n!
(e/2)n
(e/3)n
(+k| 1kn: k/2k)
(*k| 1 k log |n|: k/2k)
Ordnelas en una secuencia f1, f2, , f8, de manera que fi = O(fi+1), para i=1,2,,8.
f1: (*k| 1 k log |n|: k/2k)
f2: (e/3)n
f3: (+k| 1kn: k/2k) 1.6897
f4: log |n|
f5: 3 log n
f6:(e/2)n
f7: n
f8: n!

3. [40/100] Dada una matriz de enteros A[0..m-1,0..n-1], donde cada fila est ordenada
ascendentemente, y un entero x:int, se quiere saber si xA. Para esto se usa la
funcin busa, abajo descrita; a su vez, dentro de su cuerpo, busa llama a la funcin
busbin:
funct busbin (b[0..n-1]: int; p,q:int, x:int):int
{Pre Q: (k|: 0k<n-1: b[k] b[k+1]) pq-1}
{Pos R: (busbin=n xb[0..n-1]) (0busbin<n x=b [busbin] }
|

if p=q-1
then

if b[p]=x

then busbin p
else busbin n

fi
else r (p+q) 2;
if b[r]<x
then busbin busbin (b,p,r)
else busbin busbin (b, r+1, q)

ISIS 1105 Diseo de Algoritmos


Semestre 2015-1
Tarea 1
Prof. Rodrigo Cardoso
Por: Jhon Sebastin Ramos Martnez
Cdigo: 201315250

fi
fi
|
funct busa (A[0..m-1,0..n-1]: int; x: int): boolean
{Pre Q: (i|: 0k<m: (j| 0j<n: A[i, j] A[i, j+1] )) }
{Pos R: (busa xA) (busa x=A[i,j])}
| i 0;
j n;
do im j=n

j busbin(A[i,.],0,n)
if jn skip
[] j=n i i+1
fi

od;
busa (im);
|
Para el problema de calcular busa(A[0..m-1,0..n-1],x) con el algoritmo anterior,
defina como operacin bsica la asignacin de variables.
3a Cul es el tamao del problema? (i.e., de qu variable(s) depende el tamao
del problema; o bien, defina el tamao en funcin de variables de la llamada).
Hay que hacer n-1 comparaciones en cada una de m, filas, en el peor caso. Es decir:
T(m,n) = m* (n-1)
= (mn)
3b Estime el peor caso del tiempo Tbusa (como ()).
Tbusa = (n*log2(m))
3c Cundo se presenta el peor caso?
Se da el peor caso si el elemento buscado no est en la matriz o que el
elemento a buscar este en la ltima columna, ya que el busbin se realiza por
el nmero de columnas.

Potrebbero piacerti anche