I1M2015: El patrón de búsqueda en espacios de estados en Haskell

En la la segunda parte de la clase de hoy de del curso Informática de 1º del Grado en Matemáticas hemos estudiado la técnica de resolución de problemas mediante búsqueda en espacios de estados.

La clase comenzó analizando los árboles de búsquedas para el problema de las 4 reinas y para el problema del 8-puzzle

De este análisis se extrae el patrón de resolución de problemas mediante búsqueda en espacios de estados (EE) y sus argumentos:

  • cuál es el estado inicial,
  • cómo se calculan los sucesores de un estado y
  • cómo decidir si un estado es un estado final.

A continuación se implementa el patrón de búsqueda en espacio de estados en Haskell, usando su posibilidad de programar en orden superior para abstraer los argumentos del problema.

Finalmente, se aplica el patrón para implementar las soluciones de los problemas de las N reinas y del cambio de monedas.

Las transparencias usadas en la clase son las páginas 11-28 del tema 23:

El código del patrón de búsqueda en espacio de estados es
Read More “I1M2015: El patrón de búsqueda en espacios de estados en Haskell”

I1M2015: El patrón de divide y vencerás en Haskell

En la primera parte de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas hemos estudiado la técnica de resolución de problemas mediante divide y vencerás.

La clase comenzó analizando los árboles de ordenación de una lista de números mediante la ordenación por mezcla y la ordenación rápida.

De este análisis se extrae el patrón de resolución de problemas mediante divide y vencerás (DyV) y sus argumentos:

  • cómo reconocer si el problema es elemental,
  • cómo se resuelven los problemas elementales,
  • cómo se descompone un problema y
  • cómo se combinan las soluciones de los subproblemas.

A continuación se implementa el patrón DyV en Haskell, usando su posibilidad de programar en orden superior para abstraer los argumentos del problema.

Finalmente, se aplica el patrón DyV para implementar los algoritmos de ordenación por mezcla y ordenación rápida.

Las transparencias usadas en la clase son las páginas 1-10 del tema 23:

El código del patrón divide y vencerás es
Read More “I1M2015: El patrón de divide y vencerás en Haskell”

I1M2015: Ejercicios sobre la implementación del TAD de grafos mediante listas

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha comentado las soluciones de los ejercicios de la relación 35 que consiste en la implementación del TAD de los grafos mediante lista.

Las soluciones de los ejercicios de la relación es el siguiente
Read More “I1M2015: Ejercicios sobre la implementación del TAD de grafos mediante listas”

I1M2015: División y factorización de polinomios mediante la regla de Ruffini en Haskell

En la segunda parte de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los ejercicios de la relación 34. El objetivo de la relación es implementar la regla de Ruffini y sus aplicaciones utilizando las implementaciones del TAD de polinomio estudiadas en el tema 21.

Los ejercicios, y sus soluciones, se muestran a continuación.
Read More “I1M2015: División y factorización de polinomios mediante la regla de Ruffini en Haskell”