Antonio Jesús Roa Valverde

Slides:



Advertisements
Presentaciones similares
Las Barras La barra de título Contiene el nombre del documento sobre el que se está trabajando en ese momento. Cuando creamos un libro nuevo se le asigna.
Advertisements

Hojas electrónicas Curso de Nivelación. Capitulo IV Software de aplicación Hojas Electrónicas Macros - Introducción  Si hay tareas de Microsoft Excel.
Estructura de Datos Luis Humeau Waldi Saturno
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN.
8-Puzle consiste en un tablero cuadrado (3x3) en el que hay situados 8 bloques cuadrados numerados (con lo cual se deja un hueco del tamaño de un bloque).
TERMINOLOGÍAS DE EXCEL Excel es una aplicación tan completa que presenta su propia terminología de trabajo. a continuación podrá conocer los diversos nombres.
¿Qué es Excel? Taller Básico de Excel (3/5)
COMPONENTES DE INTERNET
MANEJO DE TEXTO Y OBJETOS AVANZADOS ENCABEZADOS Y PIES DE PÁGINA
Como crear una página Web usando CMS
Instituto Profesional Virginio Gómez
VISUALIZACION DE ARCHIVOS EN QUARKXPRESS
Generación de Certificados
Optimización: Programación Lineal
“POLIMORFISMO PARAMETRICO”
INVESTIGACIÓN DE OPERACIONES
Statistic Package for Social Sciencies
Curso de Excel Básico Sesión 4.
TAD’s ARBOLES GENERALIZADOS
Luis Alfonso Sánchez Brazales
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2016
INTRODUCCIÓN AL PROGRAMA QUARKXPRESS
Listas enlazadas particulares
CONFIGURAR PÁGINA Antes de imprimir una hoja de cálculo, es conveniente que configuremos la página, para modificar factores que afectan a la presentación.
UNIDAD II INTERNET.
Sonia Rueda Herencia y Polimorfismo
Autofiltro en Excel.
CREAR DIAGRAMA DE FLUJO
CAPÍTULO 8: DETERMINACIÓN DE ESQUINAS
Listas Dinámicas.
Carpetas y archivos.
Lenguaje y representación técnica
SCHEDULING Ing. Andrés Porto. Cuando se usan máquinas múltiples en paralelo, se supone que cualquier trabajo puede ser procesado en cualquiera de las.
CODIGOS DE BLOQUE LINEALES
LENGUAJE DE PROGRAMACION III Estructuras Estáticas de Datos
Introducción a las estructuras de datos
METODO DE LA GRAN M SANDRA PAOLA FORERO JHON SEBASTIAN GUATAVITA
Conceptos Relacionados Unidad I. Parte A.
Excel.
Excel.
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
Una aproximación a Vectores y Matrices
LOCALIZACIÓN ÓPTIMA DEL PROYECTO
ÁRBOLES ESTRUCTURA DE DATOS II ING. CARLOS ALBERTO PULLAS.
Agentes que planifican. 1. Introduccion En la actualidad todas la mayoría de actividades en un empresa o compañía, como en el hogar o el medio ambiente.
ABSTRACCION DE DATOS   Estructura de Datos Básicos: En programación una estructurad de datos, es una forma particular de organizar datos en una computadora.
Árboles Binarios de Búsqueda (ABB)
GRAFOS ESTRUCTURAS DE DATOS.
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
MÉTODO DE MÍNIMO COSTO DANIELA NARANJO LAURA RUBIO RENGIFO
Estructuras Dinámicas
Listas ligadas Dra. María de Lourdes López García
ESTADO CUENTA CHEQUERA_APELLIDOS:
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Colas ESTRUCTURA DE DATOS. Colas Definición. Es una lista lineal de elementos en la que las operaciones de insertar y eliminar se realizan en diferentes.
UNIDAD 3 LISTAS LISTAS CIRCULARES Integrantes: Galmiche Vera Orlando Mandujano González Ramón Enrique Salvador Magaña Kelyn Osmara.
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
MÉTODO SIMPLEX. Ejemplo de Simplex: Vamos a resolver el siguiente problema: MaximizarZ = f(x 1,x 2 ) = 3x 1 + 2x 2 Sujeto a:2x 1 + x 2 ≤ 18 2x 1 + 3x.
R.A 1.1 Da tratamiento de datos e información mediante la herramienta de hoja de cálculo electrónica. Excel ¿Qué es y para qué sirve? Excel es un programa.
Algoritmos de caminos más cortos
Minimum Spanning Tree (Árbol de Expansión Mínima)
TEMARIO DEFINICIÓN ………………………………………………………..………..
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Espacio de estados: un problema se divide en un conjunto de pasos de resolución desde el inicio hasta el objetivo. Los estados y su relación de accesibilidad.
EVOLUCIÓN DE LOS PARADIGMAS DE PROGRAMACIÓN Integrantes: Christian Abad, Kevin Colcha.
Estrategia algorítmica
EXCEL INTERMEDIO FILTROS AVANZADOS – TABLA DINAMICA – AUDITORIA DE FORMULAS JORGE LUIS AGUILAR ALCALDE.
Transcripción de la presentación:

Antonio Jesús Roa Valverde El algoritmo X Antonio Jesús Roa Valverde 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Contenido Introducción Descripción Filosofía Implementación vía “Dancing Links” Aplicaciones Bibliografía 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada 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, … 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Descripción Algoritmo para encontrar todas las soluciones al problema del recubrimiento (exact cover problem). Recursivo No determinista Primero en profundidad Fuerza bruta 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada 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. 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Filosofía 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. OJO: Si al iterar aparece una columna sin 1’s hacemos backtrack y descartamos la fila elegida. 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada 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 1’s 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Ejemplo (pizarra) La siguiente matriz surge como resultado de modelar un determinado problema de recubrimiento. 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada 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. 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Implementación DLX se basa en que en una lista circular doblemente enlazada: x.left.right <- x.right; x.right.left <- x.left; (borrar nodo x) x.left.right <- x; x.right.left <- x; (restaurar nodo x) 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Implementación Estructura de datos 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Implementación 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Implementación 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada 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. 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Aplicaciones Sudoku (2006) 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada 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 <d,r,c>, donde d,r,c toman valores entre 1 y 9. <2,5,7> Colocar el dígito 2 en la celda[5,7] Puesto que hay 9 dígitos y 9x9 celdas, tenemos un total de 9x81=729 filas. 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Sudoku Existen 4 tipos de restricciones: Cada celda debe tener un único dígito: <r,c> Cada dígito debe aparecer una vez en una fila: <d,r> Cada dígito debe aparecer una vez en una columna: <d,c> Cada dígito debe aparecer una vez en una caja: <d,b> Ejemplo del tipo 1: la restricción <5,7> significa que la celda [5,7] tiene un único dígito. La columna para esta restricción tiene un 1 en las filas <1,5,7>…<9,5,7> 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 4x81=324 columnas 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Sudoku La matriz DLX tiene dimensión 729x324 Cada fila contiene sólo cuatro 1’s, el resto son ceros. Cada columna contiene sólo nueve 1’s, el resto son ceros. De aquí la importancia de guardar solamente los nodos con un 1. 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada Sudoku Solución C Solución Lisp 21/11/2018 Programación Declarativa Avanzada

Programación Declarativa Avanzada 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.html Página de Donald E. Knuth http://www.jalat.com/blogs/lisp?id=4 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 21/11/2018 Programación Declarativa Avanzada