Please enable JavaScript.
Coggle requires JavaScript to display documents.
Entrega Final Verificación de algoritmos - Coggle Diagram
Entrega Final Verificación de algoritmos
Trabajo realizado por
Harold Senider Alvarez Carrillo
Andres Felipe Chacon Cifuentes
Fundamentos de la Verificación
Especificación de programas
Precondición y poscondición
Uso de variables semánticas
Ejemplo: {Pre: a ≥ 0 ∧ b ≥ 0} mcd(a,b) {Pos: a = MCD(A,B)}
Precondición más Débil
Deriva el estado mínimo necesario para que se cumpla la poscondición
Aplicaciones:
Vacía: wp(⌀, R) ≡ R
Asignación: wp(x:=E, R) ≡ R[x := E]
Condicional: wp(if C then A else B, R) ≡ (C ⇒ wp(A, R)) ∧ (¬C ⇒ wp(B, R))
Secuencia: wp(S1; S2, R) ≡ wp(S1, wp(S2, R))
Programas Iterativos
Invariante de ciclo - Se mantiene antes y después de cada iteración
Cota del ciclo - Función que decrece hasta terminar
Ejemplo:
sumatoria(n)
suma := 0
i := 1
while i ≤ n
suma := suma + i
i := i + 1
return suma
Invariante: suma = suma(1..i-1), i ∈ [1, n+1]
Cota: t = (n + 1) - i
Análisis de Algoritmos
Tiempo de ejecución T(n) - Cuántas operaciones básicas realiza
Casos:
Mejor caso
Peor caso
Notación asintótica - O(n), Θ(n), Ω(n)
Técnicas de Diseño de Algoritmos
Dividir y Conquistar
Divide en subproblemas, resuelve y combina
Ejemplo: Merge Sort
Usa Teorema Maestro para T(n)
Programación Dinámica
Usa memoria para evitar cálculos repetidos
Ejemplo: fib(n)
F[0] := 0
F[1] := 1
Algoritmos Voraces
Decisiones óptimas locales en cada paso
Ejemplo 1: Cambio de monedas- Minimiza número de monedas
Ejemplo 2: Codificación de Huffman- Asocia códigos binarios más cortos a símbolos frecuentes
Complejidad Computacional
Problemas de Decisión - Salida booleana: sí/no
Clases:
P: resolubles en tiempo polinomial
NP: verificables en tiempo polinomial
NP-Completo: no se sabe si son tratables
Reducción de Karp
Transformación en tiempo polinomial
Si A ≤ B y B ∈ P ⇒ A ∈ P
Conclusiones
La verificación formal supera las pruebas empíricas
Garantiza corrección, eficiencia y finitud
Elige el diseño algorítmico adecuado según el problema
Referencias
Hoare (1969) – Lógica de Hoare
Kaldewaij (1990) – Derivación de algoritmos
Cormen et al. (2009) – Introduction to Algorithms
Dasgupta et al. (2006) – Algorithms
Material del Politécnico Grancolombiano