I1M2010: Operaciones con el TAD de los polinomios en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado la implentación en Haskell de las operaciones con los polinomios basadas su TAD estudiado en la clase anterior.

Las transparencias usadas en la clase son las páginas 43-55 del tema 21.

El código se encuentra en

  • PolRepTDA: Implementación de los polinomios mediante tipos de datos algebraicos.
  • PolRepDispersa: Implementación de los polinomios mediante listas dispersas.
  • PolRepDensa: Implementación de los polinomios mediante listas densas.
  • PolPropiedades: Propiedades del TAD de los polinomios.
  • PolOperaciones: Operaciones con el TAD de los polinomios.

I1M2010: El TAD de los polinomios en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado el tipo abstracto de los polinomios y su implementación en Haskell.

Comenzamos la clase analizando las posibles representaciones de los polinomios y, como consecuencia, establecer la signatura y las propiedades del TAD de los polinomios.

A continuación, estudiamos tres implementaciones del TAD de los polinomios: mediante tipos algebraicas, mediantes listas dispersas y mediante listas densas.

Finalmente, mediante QuickCheck, se comprobó que las distintas implementaciones verifican las propiedades del TAD.

Las transparencias usadas en la clase son las páginas 1-42 del tema 21.

El código se encuentra en

  • PolRepTDA: Implementación de los polinomios mediante tipos de datos algebraicos.
  • PolRepDispersa: Implementación de los polinomios mediante listas dispersas.
  • PolRepDensa: Implementación de los polinomios mediante listas densas.
  • PolPropiedades: Propiedades del TAD de los polinomios.

I1M2010: Programación dinámica en Haskell y el problema del producto de cadenas de matrices

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado el patrón de programación dinámica en Haskell.

Comenzamos la clase analizando los inconvenientes de la técnica del divide y vencerás en el cálculo de la sucesión de Fibonacci y cómo la corregirlos mediante programación dinámica.

A continuación, se vió la implementación del patrón de programación dinámica en Haskell y se aplicó el patrón a la sucesión de Fibonacci lo que permitió comprobar experimentalmente la ganancia en eficiencia respecto de la solución mediante divide y vencerás.

Finalmente, se aplicó el patrón de programación dinámica a la resolución del problema del producto de cadenas de matrices (en inglés, “matrix chain multiplication”) que consiste en dada una sucesión de matrices encontrar la manera de multiplicarlas usando el menor número de productos de elementos.

Las transparencias usadas en la clase son las páginas 1-39 del tema 24:
Read More “I1M2010: Programación dinámica en Haskell y el problema del producto de cadenas de matrices”

LI2011: Resolución en lógica de primer orden

En la clase de hoy del curso Lógica Informática se ha presentado la resolución en la lógica de primer orden como ampliación del presentado en el tema 5 para la lógica proposicional.

Las principales diferencias se encuentran en la unificación, separación de variables y factorización.

Además, se ha presentado el sistema Prover9 que busca automáticamente dem ostraciones por resolución.

Como tarea pendientes se propone la resolución de los ejercicios del tema 11 del libro de ejercicios.

Las transparencias de esta clase son las del tema 11
Read More “LI2011: Resolución en lógica de primer orden”