I1M2015: El TAD (tipo abstracto de datos) de las tablas en Haskell

En la segunda parte de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas se ha estudiado el TAD (tipo abstracto de datos) de las tablas y tres implementaciones en Haskell: como funciones, como listas de asociación y como matrices.

Una tabla es una colección de elementos (valores) a los que se accede mediante sus índice.

Se ha seguido el mismo patrón que en los anteriores tipos de datos:

  • elección de las operaciones básicas,
  • especificación de sus propiedades,
  • implementación en Haskell mediante funciones,
  • implementación en Haskell mediante listas de asociación,
  • implementación en Haskell mediante matrices,
  • análisis de la complejidad de las definiciones de las operaciones básicas en las tres implementaciones y
  • verificación con QuickCheck de sus propiedades características.

Las transparencias usadas en la clase son las del tema 18.

La signatura del TAD de las tablas

Las signatura de las operaciones del TAD de las tablas son las siguientes:

con el siguiente significado

  • (tabla ivs) es la tabla correspondiente a la lista de asociación ivs (que es una lista de pares formados por los índices y los valores).
  • (valor t i) es el valor del índice i en la tabla t.
  • (modifica (i,v) t) es la tabla obtenida modificando en la tabla t el valor de i por v.

Propiedades del TAD de las tablas

Las propiedades son las siguientes:

  1. modifica (i,v') (modifica (i,v) t) = modifica (i,v') t
  2. Si i /= i', entonces modifica (i',v') (modifica (i,v) t) = modifica (i,v) (modifica (i',v') t)
  3. valor (modifica (i,v) t) i = v
  4. Si i /= i', entonces valor (modifica (i,v) (modifica (k',v') t)) i' = valor (modifica (k',v') t) i'

Implementación de las tablas mediante funciones

Implementación de las tablas mediante listas de asociación

Implementación de las tablas mediante matrices

Propiedades de las tablas