El tipo abstracto de datos de las colas de prioridad en Haskell

En este artículo continúo la serie dedicada a los tipos de datos abstractos (TAD) en Haskell presentando el TAD de las colas de prioridad.

Una cola de prioridad (en inglés, priority queue) es una cola en la que cada elemento tiene asociada una prioridad y la operación de extracción siempre elige el elemento de menor prioridad. Un ejemplo de cola de prioridad es el formado por una lista de ciudades ordenadas por su distancia a un destino final.

El contenido del resto del artículo es el siguiente:

  • la signatura del TAD de las colas de prioridad;
  • las propiedades del TAD de las colas de prioridad;
  • la implementación, en Haskell, de las colas de prioridad mediante listas y
  • la comprobación con QuickCheck de sus propiedades.

Posteriormente, cuando se estudien los montículos, se presentará otra implementación de las colas de prioridad mediante montículos.
Read More “El tipo abstracto de datos de las colas de prioridad en Haskell”

El tipo abstracto de datos de las colas en Haskell

En este artículo continúo la serie dedicada a los tipos de datos abstractos (TAD) en Haskell presentando el TAD de las colas.

Al igual que hice en los anteriores TAD, usaré módulos, funciones de escritura y QuickCheck para conseguir la abstracción, independencia y certificación de los resultados de las implementaciones.

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción se realiza por un extremo (el posterior o final) y la operación de extracción por el otro (el anterior o frente). Las colas también se llaman estructuras FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir. Este comportamiento es análogo a las colas del cine.

El contenido del resto del artículo es el siguiente:

  • la signatura del TAD de las colas;
  • las propiedades del TAD de las colas;
  • la implementación, en Haskell, de las colas mediante listas;
  • la implementación, en Haskell, de las colas mediante pares de listas y
  • la comprobación con QuickCheck de sus propiedades.

Read More “El tipo abstracto de datos de las colas en Haskell”

Errores aritméticos en Haskell y en Lisp

La primera vez que uno se encuentra con los siguientes cálculos aritméticos en Haskell puede sorprenderse.

El mismo comportamiento se da en Common Lisp

Para comprender estos cálculos es aconsejable leer What Every Computer Scientist Should Know About Floating-Point Arithmetic.

I1M2010: Tercer examen de la evaluacion continua

En la clase de hoy de Informática de 1º del Grado en Matemáticas se ha realizado el tercer examen de la evaluación continua.

Las notas se han publicado en la WebCT.

El resumen estadístico del resultado del examen es el siguiente

Suspensos 0 00.0%
Aprobados 8 42.1%
Notables 8 42.1%
Sobresalientes 3 15.8%
Total 19

El porcentaje de aprobados (sobre presentados) es 100.0 y la nota media es 7.

A continuación se muestra el examen junto con su solución:
Read More “I1M2010: Tercer examen de la evaluacion continua”