El%20algoritmo%20X - PowerPoint PPT Presentation

About This Presentation
Title:

El%20algoritmo%20X

Description:

Algoritmo para encontrar todas las soluciones al problema del recubrimiento ... Bertram Felgenhauer, Frazer Jarvis, 'Enumerating possible Sudoku grids'. A o 2005 ... – PowerPoint PPT presentation

Number of Views:78
Avg rating:3.0/5.0
Slides: 21
Provided by: lcc6
Category:

less

Transcript and Presenter's Notes

Title: El%20algoritmo%20X


1
El algoritmo X
  • Antonio Jesús Roa Valverde

2
Contenido
  • Introducción
  • Descripción
  • Filosofía
  • Implementación vía Dancing Links
  • Aplicaciones
  • Bibliografía

3
Introducción
  • Debido a Donald Knuth (año 2000)
  • http//www-cs-faculty.stanford.edu/uno/
  • Algoritmo de búsqueda para problemas de
    recubrimiento como N-reinas, sudoku,

4
Descripción
  • Algoritmo para encontrar todas las soluciones al
    problema del recubrimiento (exact cover problem).
  • Recursivo
  • No determinista
  • Primero en profundidad
  • Fuerza bruta

5
Filosofía
  • La siguiente matriz representa un problema de
    recubrimiento donde el objetivo es elegir un
    subconjunto de filas de forma que el dígito 1
    aparezca en cada columna una sola vez.

6
Filosofía
  • OJO Si al iterar aparece una columna sin 1s
    hacemos backtrack y descartamos la fila
    elegida.
  • El funcionamiento es el siguiente
  • Elegir una columna c de forma determinista.
  • De forma indeterminista escoger una fila f que
    tenga un 1 en la columna c, y añadir r al
    conjunto solución.
  • Eliminar cualquier fila no seleccionada que tenga
    un 1 en cualquier columna en la que r tenga un 1.
  • Eliminar de la matriz cualquier columna para la
    que r tenga un 1.
  • Repetir el algoritmo sobre la matriz reducida
    hasta que quede vacía.

7
Filosofía
  • La solución se obtiene cuando llegamos a la
    matriz vacía.
  • Los elementos representados por las filas
    seleccionadas constituyen el conjunto solución.
  • Knuth sugiere el siguiente heurístico para
    reducir el número de iteraciones
  • Elegir primero aquella columna que presenta menor
    número de 1s

8
Ejemplo (pizarra)
  • La siguiente matriz surge como resultado de
    modelar un determinado problema de recubrimiento.

9
Implementación
  • Dancing Links (DLX) es la técnica propuesta por
    Knuth para implementar su algoritmo X usando
    listas circulares doblemente enlazadas.
  • El nombre viene por la forma en que trabaja el
    algoritmo las operaciones entre punteros
    recuerda a los pasos de baile de una coreografía.

10
Implementación
  • DLX se basa en que en una lista circular
    doblemente enlazada
  • x.left.right lt- x.right
  • x.right.left lt- x.left (borrar nodo x)
  • x.left.right lt- x
  • x.right.left lt- x (restaurar nodo x)

11
Implementación
  • Estructura de datos

12
Implementación
13
Implementación
14
Implementación
  • Los nodos realmente no se eliminan de la
    estructura. Este mecanismo es lo que permite
    realizar el backtrack.
  • OJO Cuidado con el recolector de basura en
    determinados lenguajes.

15
Aplicaciones
  • Sudoku (2006)

16
Sudoku
  • En la matriz DLX, las filas representan los
    posibles movimientos y las columnas las
    restricciones que una solución válida debe
    satisfacer.
  • Cada fila puede ser etiquetada como ltd,r,cgt,
    donde d,r,c toman valores entre 1 y 9.
  • lt2,5,7gt Colocar el dígito 2 en la celda5,7
  • Puesto que hay 9 dígitos y 9x9 celdas, tenemos un
    total de 9x81729 filas.

17
Sudoku
  • Existen 4 tipos de restricciones
  • Cada celda debe tener un único dígito ltr,cgt
  • Cada dígito debe aparecer una vez en una fila
    ltd,rgt
  • Cada dígito debe aparecer una vez en una columna
    ltd,cgt
  • Cada dígito debe aparecer una vez en una caja
    ltd,bgt
  • Ejemplo del tipo 1 la restricción lt5,7gt
    significa que la celda 5,7 tiene un único
    dígito. La columna para esta restricción tiene un
    1 en las filas lt1,5,7gtlt9,5,7gt y un 0 en el
    resto. La solución DLX seleccionará sólo una de
    estas filas.
  • Existen 9x9 restricciones de cada tipo. Por
    tanto, tenemos 4x81324 columnas

18
Sudoku
  • La matriz DLX tiene dimensión 729x324
  • Cada fila contiene sólo cuatro 1s, el resto son
    ceros.
  • Cada columna contiene sólo nueve 1s, el resto
    son ceros.
  • De aquí la importancia de guardar solamente los
    nodos con un 1.

19
Sudoku
  • Solución C
  • Solución Lisp

20
Bibliografía
  • Donald E. Knuth, Standford University, Dancing
    Links. Año 2000
  • http//en.wikipedia.org
  • Bertram Felgenhauer, Frazer Jarvis, Enumerating
    possible Sudoku grids. Año 2005
  • http//www-cs-faculty.stanford.edu/knuth/index.ht
    ml
  • Página de Donald E. Knuth
  • http//www.jalat.com/blogs/lisp?id4
  • Solución Sudoku en Lisp
  • http//www.codigoescrito.com/archivos/000194.html
  • Solución Sudoku en C
  • http//www.puzzle.jp/en/
  • Página donde se muestran otros posibles puzzles
Write a Comment
User Comments (0)
About PowerShow.com