Razonamiento Automático ACL 2: Diagramas de Decisión Binarios F.-J. Martı́n-Mateos Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Razonamiento Automático - Trabajo ACL 2 – p. 1/13 Diagramas de Decisión Binarios • Un diagrama de decisión binario (DDB) es un grafo binario acíclico dirigido en el que los nodos internos representan decisiones binarias que llevan a una acción representada en los nodos finales • Ejemplo: cualquier árbol binario d1 d2 d2 d3 d3 d4 b d4 a a d4 b a a b d4 a a b Razonamiento Automático - Trabajo ACL 2 – p. 2/13 Diagramas de Decisión Binarios • El interés de los DDB es que evitan el almacenamiento de información redundante, al poder compartir los nodos de la estructura d1 d1 d2 d2 d2 d3 d4 a d3 d3 d4 b d2 a d4 b a a b d4 d4 a a b d4 a b Razonamiento Automático - Trabajo ACL 2 – p. 3/13 Diagramas de Decisión Binarios • La eliminación de información redundante en un DDB se consigue mediante ciertos procesos de reducción • Un proceso de reducción es la eliminación de nodos redundantes: si un nodo n1 de un DDB tiene como hijos izquierdo y derecho a un mismo nodo n2 , entonces se puede eliminar el nodo n1 , reemplazando en la estructura cualquier arco dirigido a n1 por un arco dirigido a n2 d1 d1 d2 d2 d3 a b d1 d3 b b b a b b a b Razonamiento Automático - Trabajo ACL 2 – p. 4/13 Formalización en ACL 2 • Representamos los nodos internos como listas con: ◦ Un identificador de nodo ◦ El identificador del nodo hijo izquierdo ◦ El identificador del nodo hijo derecho ◦ Para este trabajo se puede prescindir de la decisión asociada al nodo • Para los nodos finales usamos la misma representación, en la que los identificadores de los nodos hijos no están asociados a ningún nodo • Para asegurar la aciclicidad de la estructura exigimos que los identificadores de los nodos hijos sean estrictamente mayores que el identificador del nodo Razonamiento Automático - Trabajo ACL 2 – p. 5/13 Formalización en ACL 2 • Caracterización de los nodos (defun nodo-p (nodo) (and (true-listp nodo) (equal (len nodo) 3) (< (car nodo) (cadr nodo)) (< (car nodo) (caddr nodo)))) • Un DDB es una lista de nodos (defun ddb-p (ddb) (if (endp ddb) t (and (nodo-p (car ddb)) (ddb-p (cdr ddb))))) Razonamiento Automático - Trabajo ACL 2 – p. 6/13 Formalización en ACL 2 • Un nodo redundante es aquel cuyo segundo y tercer elementos son iguales (defun redundante (nodo) (= (cadr nodo) (caddr nodo))) • La siguiente función busca un nodo redundante en un DDB (defun busca-redundante (ddb) (cond ((endp ddb) nil) ((redundante (car ddb)) (car ddb)) (t (busca-redundante (cdr ddb))))) Razonamiento Automático - Trabajo ACL 2 – p. 7/13 Formalización en ACL 2 • La eliminación de un nodo redundante supone sustituir en la estructura unos identificadores por otros • La siguiente función reemplaza el indice i por el indice j en un nodo (defun reemplaza-nodo (i j nodo) (list (car nodo) (if (= (cadr nodo) i) j (cadr nodo)) (if (= (caddr nodo) i) j (caddr nodo)))) • La siguiente función reemplaza el indice i por el indice j en un ddb (defun reemplaza-ddb (i j ddb) (if (endp ddb) nil (cons (reemplaza-nodo i j (car ddb)) (reemplaza-ddb i j (cdr ddb))))) Razonamiento Automático - Trabajo ACL 2 – p. 8/13 Formalización en ACL 2 • El proceso de eliminación de nodos redundantes en un DDB consiste en localizar un nodo redundante en el DDB, eliminarlo y sustituir cualquier referencia al identificador del nodo redundante por el identificador de su nodo hijo izquierdo (o derecho) • La siguiente función elimina un nodo de un ddb (defun elimina-nodo (nodo ddb) (cond ((endp ddb) nil) ((equal nodo (car ddb)) (cdr ddb)) (t (cons (car ddb) (elimina-nodo nodo (cdr ddb)))))) Razonamiento Automático - Trabajo ACL 2 – p. 9/13 Formalización en ACL 2 • Finalmente la siguiente función implementa el proceso de eliminación de nodos redundantes (defun reduce-redundantes (ddb) (let ((nodo (busca-redundante ddb))) (if nodo (reduce-redundantes (reemplaza-ddb (car nodo) (cadr nodo) (elimina-nodo nodo ddb))) ddb))) Razonamiento Automático - Trabajo ACL 2 – p. 10/13 Trabajo: Propiedades de la eliminación de nodos redundantes • La eliminación de nodos redundantes en un DDB mantiene la estructura de DDB (defthm reduce-redundantes-es-ddb (implies (ddb-p ddb) (ddb-p (reduce-redundantes ddb)))) • La estrutura obtenida como resultado de eliminar los nodos redundantes de un DDB no tiene más nodos redundantes (defthm reduce-redundantes-funciona (implies (ddb-p ddb) (not (busca-redundante (reduce-redundantes ddb))))) Razonamiento Automático - Trabajo ACL 2 – p. 11/13 Trabajo: Propiedades de la eliminación de nodos redundantes • Valoración del trabajo: 2 puntos • Se evaluarán ◦ corrección de la solución ◦ documentación del trabajo ◦ presentación del trabajo (si se estima necesario) Razonamiento Automático - Trabajo ACL 2 – p. 12/13 Trabajo: Propiedades de la eliminación de nodos redundantes • Condiciones del trabajo ◦ el trabajo se desarrollará en un único fichero admisible como fichero ◦ ◦ ◦ ◦ de entrada para el sistema ACL 2; la documentación del trabajo se incluirá en dicho fichero como comentario el trabajo es individual: en caso de coincidencia extrema entre varios trabajos la nota será repartida forma parte tanto de la evaluación tradicional como de la alternativa la entrega se realizará vía Web a través de la página de la asignatura el plazo de entrega es hasta el día 31 de Enero de 2007 Razonamiento Automático - Trabajo ACL 2 – p. 13/13