Algoritmia
  • Algoritmia
    • Tema 2 - Diseño de Algoritmos Recursivos
      • Introducción
      • Inducción
      • Funciones recursivas
      • Tipos de recursión
      • Ejemplos y ejercicios
      • Especificación formal de algoritmos
      • Inmersión
      • Verificación formal
    • Tema 3 - Divide y Vencerás
      • Introducción
      • Ejemplos
    • Tema 4 -Programación Dinámica
      • Introducción
      • Problemas de optimización
    • Tema 5 - Algoritmos Voraces
      • Introducción
      • Esquema voraz
      • Algoritmos voraces que producen la solución óptima
      • Planificación de tareas
    • Tema 6 - Vuelta Atrás (Backtracking)
      • Introducción
      • Esquemas generales
      • Ejemplos
Powered by GitBook
  1. Algoritmia
  2. Tema 2 - Diseño de Algoritmos Recursivos

Verificación formal

Last updated 1 year ago

Con el fin de dar rigor y formalizar el proceso de verificación, enunciamos a continuación las 6 propiedades que necesitamos demostrar para tener garantía de que un algoritmo es correcto.

La demostración de estas propiedades es, en general, bastante sencilla, y nos asegura la corrección del algoritmo. Obsérvese que todos los símbolos que intervienen en las propiedades anteriores aparecen en el esquema general de las funciones recursivas.

Los puntos 1 y 2 son condiciones que expresan que la función f está bien definida:

La función f ha de estar bien definida dentro del dominio, es decir, la instrucción condicional no aborta en los estados que satisfacen Q.

La función f se invoca siempre en estados que satisfacen su precondición.

Base de la inducción

Paso de la inducción

Los puntos 5 y 6 demuestran que las llamadas que se hacen sobre datos forman una secuencia estrictamente decreciente y finita:

Factorial

Potencia n-ésima de 3

Ejercicio 1 propuesto de verificación formal: Suma de los elementos de un vector

donde 𝑹(𝒔(xˉ\bar{x}xˉ,yˉ\bar{y}yˉ​) representa la hipótesis de inducción