Examen1 Seccion1 Solucion
Examen1 Seccion1 Solucion
Examen1 Seccion1 Solucion
Solución Examen 1
Este examen es individual. Tiene una duración de 1 hora 20 min. Está prohibido usar el
libro, apuntes, impresiones y cualquier tipo de dispositivo electrónico (celulares,
agendas electrónicas, cámaras digitales, etc.).
1. Verificar la corrección del siguiente programa que calcula las diferencias al cuadrado
entre dos arreglos
{0≤n}s,i:=0,0{i≤n Λ s=S(p,r,i)}
≡ <Axioma de corrección con wp>
0≤n ⇒ wp(s,i:=0,0|i≤n Λ s=S(p,r,i))
≡ <wp de asignación>
0≤n ⇒ (i≤n Λ s=S(p,r,i))[s,i:=0,0]
≡ <Definición de sustitucion>
0≤n ⇒ (0≤n Λ 0=S(p,r,0))
≡ <Definición de S. orden total de enteros>
0≤n ⇒ (0≤n Λ 0=(∑k| 0≤k<0 : (r[k] - p[k])2))
≡ <Rango vacio.>
0≤n ⇒ ( 0<n Λ 0=0)
≡ <Identidad Λ y reflexividad de = >
0≤n ⇒ 0<n
≡ <Reflexividad de ⇒ >
true
Se calcula primero la wp
d. [15%] Determinar una función de cota para verificar que el ciclo termina
Se calcula primero:
wp (e:= p[i]-r[i];s,i := s+e*e,i+1 | n-i<C)
≡ <wp de secuencia>
wp(e:= p[i]-r[i] | wp(s,i := s+e*e,i+1 | n-i<C))
≡ <wp de asignación>
wp(e:= p[i]-r[i] | (n-i<C)[s,i := s+e*e,i+1])
≡ <wp de asignación>
(n-i<C)[s,i := s+e*e,i+1][e:= p[i]-r[i]]
≡ <Definición de sustitución>
(n-(i+1)<C)[e:= p[i]-r[i]]
≡ <Aritmética, Definición de sustitución>
n-i-1<C
Se prueba ahora
i≤n Λ s=S(p,r,i) Λ i<n Λ n-i=C ⇒ n-i-1<C
≡ <Orden total de enteros>
i≤n Λ s=S(p,r,i) Λ i<n Λ n-i-1<C ⇒ n-i-1<C
≡ <Debilitamiento>
true
2. Determinar la complejidad temporal T(n) del programa del punto 1
a. [10%] Determinar cuáles son las operaciones que se ejecutan en tiempo constante y
cuantas veces se ejecuta cada operación en función de n.
Multiplicación (*) c4 n
b. [10%] Utilizando el resultado del punto anterior, describir una fórmula para la
complejidad temporal T(n) del programa. Determinar el orden de complejidad de esta
función
T(n) es O(n)
3. [20%] Calcular la complejidad temporal para el siguiente programa que
invierte un arreglo de números enteros
Asignación (=) c1 0 3
Comparación (>=) c2 1 1
T(0) = T(1) = c2
T(n) = 3c1 + c2 + 2c3 + T(n-2)
= k1 + T(n-2)
T(n) - T(n-2) = k1
λ2 - 1 = 0
donde d1 y d2 son constantes. Como la función constante soluciona h(n), se busca una
solución particular p(n) = d3*n Reemplazando en la ecuación original:
T(n) - T(n-2) = k1
d3*n - d3*(n-2) = k1
2 d3 = k1
d3 = k1/2
La solución es entonces
0 = 2d2 - k1/2
Finalmente