Representación en LISP

Slides:



Advertisements
Presentaciones similares
Solución de Problemas en AI
Advertisements

Rogelio Dávila Pérez Profesor - Investigador
REPRESENTACION GRAFICA DE LAS FUNCIONES
INTELIGENCIA ARTIFICIAL
INTELIGENCIA ARTIFICIAL
INTELIGENCIA ARTIFICIAL
JUEGO CUBO NUMERICO Inteligencia Artificial y Robótica – 46J
INTEGRANTES Aguilar Pastor, Sara Blancas Tunqui, Alicia
Universidad San Martín de Porres
CREANDO HABITACIONES Para crear un cuarto, selecciona Add Room en el menu Add. Se muestra la siguiente ventana: : En la parte.
Curso de Microsoft® Word 2010
1.1 selecciona el protocolo de comunicación según terminal (Modbus, Unitilway etc) y presiona el Botón Crear.
¿Qué es formato? Conjunto de fuentes, números y simbolos en un estilo o diseño específicos. Aspecto del texto o de los objetos en una diapositiva. Fuente.
4º E.S.O. Fuerzas U.2 Las leyes de la dinámica A.17 ¿Qué trayectoria seguirá la bola?
a) Guardar b) Guardar como c) Opciones de PowerPoint d) preparar.
Actividad 12 Daniel Esaú flores Jiménez 5-C T/M. MOVER Y CAMBIAR EL TAMAÑO DE UN GRAFICO Después de crear un grafico puedes hacer modificaciones en su.
Compilación de Lenguajes Funcionales Perezosos
El lenguaje de Programación Perl
Estructuras de Datos Punteros y algo más.
Unidad III Programación Funcional
Estructuras dinámicas de datos, TAD Lista, parte 2
Eduardo Morales/L. Enrique Sucar
M.C. Juan Carlos Olivares Rojas
14/04/ Implementación de un lenguaje basado en reglas. José Angel Bañares. V LenguajeReglas.ppt ImplementaciónReglas Implementación de motores.
Lección El botón de Microsoft office esta ubicada. a. Derecho b. arriba c. abajo d. izquierda.
Operaciones Básicas Excel Por Eric Adames Escribo los datos 2-Coloco el cursor donde deseo obtener la respuesta, en este caso celda F6 3-Escribo.
Introducción a LISP Sergio Jiménez Celorrio Departamento Ingeniería Informática – UC3M.
Etiqueta y Protocolo en la Mesa
Extensiones sintácticas Revisaremos formas especiales que son sintácticamente equivalentes a patrones que son expresables en términos de formas básicas.
Primera diapositiva. Vamos a ir viendo lo que podemos hacer en el Power Point. (Click para pasar a la siguiente). Arriba hacemos click para agregar titulo.
3 elementos clave en Mindomo. Es un zoom que acerca o aleja todo el esquema Determina el número de niveles que se muestra desde el nodo en el que nos.
JUAN SEBASTIAN OROZCO. En este grupo encontramos englobadas todas las opciones que necesitaremos para dar forma al texto de nuestro documento. Partes.
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
Protocolo de pausas activas para técnicos en contabilización de operaciones comerciales y financieras.
 CREAR TABLAS CREAR TABLAS  COMBINAR CORRESPONDENCIA COMBINAR CORRESPONDENCIA  USAR ESTILOS Y REALIZAR CAMBIOS  MACROS  DISEÑO DE PÁGINA WEB.
Traslación.
1 LISP II l Contenido de la sesión  Organización de memoria y Operaciones destructivas  Funciones anónimas. Variables. Alcances.  A-listas. Pattern.
1 TEMA IMPLEMENTACION DE LENGUAJES FUNCIONALES. Lecciónes.
El lenguaje LISP.
LISP I.
1 El lenguaje LISP “LISP is an easy language to learn” (Henry et.al., 1984)
El mundo de bloques en lenguaje natural Borja Buera y Mapi Torres.
Resolución de Objetivos Se recorren las reglas de arriba abajo y de izquierda a derecha Buscamos hechos o cabezas de reglas que unifiquen con la meta actual.
Presentación Grupo 8 de prácticas de ISG2 Trabajo: 42 Express Highway Nombres: o Álvaro Manuel Brazo García o Moisés Gómez López o Zeneida Rial Muñoz o.
Sistemas masa - resorte
José Eugenio Ortega Go / No go José Eugenio Ortega
La transición es un efecto especial que se usa para indicar la aparición de una diapositiva durante una presentación con diapositivas. Existen muchos.
Sistema de Referencia sistema de coordenadas cartesiano o
ENTORNO DE MICROSOFT WORD
Colisiones.. Introducción Algo que vemos mucho en bastantes videojuegos, y que por el momento no se ha visto “bien”, son las colisiones, pero, para empezar;
(-11)+(-66) (+3)+(-7) LOS NÚMEROS ENTEROS (+15)+(+3) (-8)+(-9)
El ratón.
Trabajar en el esquema Recuerda que trabajar en la vista normal, el panel de navegación puede mostrar las diapositivas como miniaturas o como esquema.
Tema: Suma y Resta de decimales
¡Las figuras se transforman!
Lenguaje de Programación LISP
Se considera la expresión (a-b)*(c+(d/e)) su árbol es:
Informática Ingeniería en Electrónica y Automática Industrial
En este tema se analizan los movimientos en dos dimensiones, en los que la posición, la velocidad y la aceleración están representados por vectores. Las.
Departamento de Informática Universidad Técnica Federico Santa María Lenguajes Funcionales Francisco Bórquez Departamento de Informática Universidad Técnica.
 ANÁLOGO  DIGITAL.
DIRECCION DE PROYECTOS.
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).
LATERALIDAD Y ESPACIALIDAD
Docente : Sandra H.,Paz Z, Makarena R., M° Luisa S. Área : Matemática Nivel : 4º básico TRANSFORMACIONES, CONGRUENCIAS Y SIMETRÍA.
UI 3 Cómo funciona el mundo
área de matemáticas ACTIVIDAD Nº 3: figuras con palillos
Reglas del juego de mesa
F UERZA ¿Cómo se representan?. Fuerza ¿Quién hace fuerza? ¿Quién hace más fuerza?
Prof. Eduardo Vidal Huarcaya
Transcripción de la presentación:

Representación en LISP Problema del 8-puzzle Representación en LISP

Ejemplo A, (1/4) ;;; EJEMPLO DE REPRESENTACION DE UN PROBLEMA (sin variables) (setf *estado0* '((0 1) (1 2) (2 3) (3 4) (4 NIL) (5 5) (6 6) (7 7) (8 8))) (setf *problema-8-puzle* '(:8-puzle (:estado-inicial *estado0*) (:operadores (:mueve-arriba (:accion #'mueve-arriba)) (:mueve-abajo (:accion #'mueve-abajo)) (:mueve-izquierda (:accion #'mueve-izquierda)) (:mueve-derecha (:accion #'mueve-derecha))) (:estados-objetivo #'reconoce)))

Ejemplo A, (2/4) (defun reconoce (estado) (equal estado '((0 1) (1 2) (2 3) (3 4) (4 8) (5 5) (6 6) (7 7) (8 NIL)))) (defun posible-mover-arriba-p (estado) (let ((posicion (posicion NIL estado))) (not (member posicion '(0 1 2))))) (defun posible-mover-abajo-p (estado) (not (member posicion '(6 7 8))))) (defun posible-mover-izquierda-p (estado) (not (member posicion '(0 3 6))))) (defun posible-mover-derecha-p (estado) (not (member posicion '(2 5 8)))))

Ejemplo A, (3/4) (defun mueve-arriba (estado) (if (posible-mover-arriba-p estado) (let* ((nuevo-estado (copy-tree estado)) (posicion-vacia (posicion NIL nuevo-estado)) (posicion-arriba (- posicion-vacia 3)) (ficha-arriba (ficha posicion-arriba nuevo-estado))) (coloca posicion-arriba NIL nuevo-estado) (coloca posicion-vacia ficha-arriba ;;; Análogos mueve-abajo, mueve-izquierda ;;; y mueve-derecha

Ejemplo A, (4/4) (defun posicion (ficha estado) (first (first (member ficha estado :test #'(lambda (x y) (eql x (second y))))))) (defun coloca (posicion ficha estado) (setf (second (nth posicion estado)) ficha)) (defun ficha (posicion estado) (second (nth posicion estado)))

Ejemplo B, (1/6) ;;; EJEMPLO DE REPRESENTACION DE UN ;;; PROBLEMA (con variables) (setf *estado0* '((0 1) (1 2) (2 3) (3 4) (4 NIL) (5 5) (6 6) (7 7) (8 8))) (setf *problema-8-puzle* '(:8-puzle (:estado-inicial *estado0*) (:operadores (:mueve (:variables (direccion '(arriba abajo derecha izquierda))) (:accion #'mueve))) (:estados-objetivo #'reconoce)))

Ejemplo B, (2/6) (defun reconoce (estado) (equal estado '((0 1) (1 2) (2 3) (3 4) (4 8) (5 5) (6 6) (7 7) (8 NIL)))) (defun posible-mover-p (direccion estado) (cond ((eql direccion 'arriba) (posible-mover-arriba-p estado)) ((eql direccion 'abajo) (posible-mover-abajo-p estado)) ((eql direccion 'izquierda) (posible-mover-izquierda-p estado)) ((eql direccion 'derecha) (posible-mover-derecha-p estado)))) (defun posible-mover-arriba-p (estado) (let ((posicion (posicion NIL estado))) (not (member posicion '(0 1 2))))) ;;; Análogo para posible-mover-abajo-p, ;;; posible-mover-izquierda-p y posible-mover-derecha-p

Ejemplo B, (3/6) (defun mueve (direccion estado) (if (posible-mover-p direccion estado) (let* ((nuevo-estado (copy-tree estado)) (posicion-vacia (posicion NIL nuevo-estado)) (posicion-nueva (nueva-posicion direccion posicion-vacia)) (ficha-nueva (ficha posicion-nueva nuevo-estado))) (coloca posicion-nueva NIL nuevo-estado) (coloca posicion-vacia ficha-nueva

Ejemplo B, (4/6) (defun nueva-posicion (direccion posicion-vacia) (cond ((eql direccion 'arriba) (- posicion-vacia 3)) ((eql direccion 'abajo) (+ posicion-vacia 3)) ((eql direccion 'izquierda) (- posicion-vacia 1)) ((eql direccion 'derecha) (+ posicion-vacia 1)))) (defun posicion (ficha estado) (first (first (member ficha estado :test #'(lambda (x y) (eql x (second y)))))))

Ejemplo B, (5/6) (defun coloca (posicion ficha estado) (setf (second (nth posicion estado)) ficha)) (defun ficha (posicion estado) (second (nth posicion estado))) ;;; REPRESENTACION CON ESTRUCTURAS DE LISP (defstruct problema nombre estado-inicial operadores test-objetivo) (defstruct operador accion (variables nil))

Ejemplo B, (6/6) (setf *operadores* (list (make-operador :nombre 'mueve-arriba :accion #'mueve-arriba) :nombre 'mueve-abajo :accion #'mueve-abajo) :nombre 'mueve-derecha :accion #'mueve-derecha) :nombre 'mueve-izquierda :accion #'mueve-izquierda))) (setf *problema-8-puzle* (make-problema :nombre '8-puzle :estado-inicial *estado0* :operadores *operadores* :estados-objetivo #'reconoce))