Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

38
Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL

Transcript of Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

Page 1: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

Mg. Samuel Oporto Díaz

LISP

INTELIGENCIA ARTIFICIAL

Page 2: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

22/37/37

Mapa Conceptual del Curso

Inteligencia Artificial y Robótica

Lenguaje Simbólico

LISP

Búsqueda

Búsqueda Ciega

Búsqueda Heurística

Robótica

Cálculo Vectorial

Cinemática

Movimiento

Inteligencia Artificial

Conceptos Generales

Conocimiento

Agentes

Lenguaje Simbólico

LISP

Lenguaje Simbólico

LISP

Búsqueda

Búsqueda Ciega

Búsqueda Heurística

Búsqueda

Búsqueda Ciega

Búsqueda Heurística

Robótica

Cálculo Vectorial

Cinemática

Movimiento

Robótica

Cálculo Vectorial

Cinemática

Movimiento

Inteligencia Artificial

Conceptos Generales

Conocimiento

Agentes

Inteligencia Artificial

Conceptos Generales

Conocimiento

Agentes

Page 3: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

33/37/37

Tabla de Contenido

1. Procesamiento Básico

2. Funciones en LISP

3. Recursión

4. Ejemplos

5. Conclusiones

6. Bibliografía

Page 4: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

44/37/37

Objetivos• Exponer los conceptos básicos del LISP.• Presentar las expresiones-s, los átomos y las listas.• Presentar las funciones básicas del LISP.• Crear nuevas funciones en LISP.• Recursión.

Page 5: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

55/37/37

LISP un lenguaje simple1. Únicamente dos tipos de objetos:

– átomos (identificadores/constantes) robot green 12.5– listas (de átomos o listas) (1 2 3.14) (robot (color green) (weight 100))

Las listas almacenan diferentes tipos de datos, no contiguos y sin acceso aleatorio)

2. Las funciones y llamadas a funciones son representadas como listas (programa = data) – (define (square x) (* x x))

3. Todos los cálculos son ejecutados mediante la aplicación de funciones a sus argumentos, como listas:– (+ 2 3) > 5– (square 5) > 25– (car (reverse '(a b c))) > c

Page 6: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

66/37/37

PROCESAMIENTO BÁSICO DE LISTAS

Page 7: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

77/37/37

Procesamiento Básico de Listas• FIRST (CAR).- toma una lista como argumento y regresa el

primer elemento

• REST (CDR).- toma una lista como argumento y regresa una lista sin el primer elemento

• CONS.- toma dos argumentos (normalmente el segundo es una lista) y regresa una lista con el primer argumento como primer elemento de la lista.

• NULL.- checa si una lista está vacía

• LISTP.- checa si el argumento es una lista o no.

Page 8: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

88/37/37

Procesamiento Básico de Listas> (first ‘(a b))

a

> (first ‘((a) (b) (c)))

> (first ‘(+ b c))

+

> (rest ‘(a b))

(b)

> (rest ‘(a b c))

(b c)

> (last ‘(a b c))

(c)

> (first (last ‘(a b c)))

c

Page 9: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

99/37/37

Ejercicio 1

Escriba una expresión Lisp aplicando first y rests a la siguiente lista de tal manera que se obtenga el símbolo X y el símbolo Y

1.(A (B ((X))) (C) (((Y)) E ))

2.((A B) (C D) (E F) (H (I X)(J L) Y))

3.(A B (C D E (F G H) (I J X (L M Y))))

4.(A B C (() () ((nil (X)))) ()()(((Y)))())

Page 10: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1010/37/37

Ejercicios 2• Represente el siguiente árbol mediante una lista.• Extraiga mediante las funciones FIRST Y REST, las

ocurrencias del número 6

+

9 6 2 *

-3 5

6 2

6

Page 11: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1111/37/37

Construcción de ListasCrear una lista, desde un átomo y una lista(cons a L)

(cons 'h '(o l a))

Crear una lista, con los átomos de dos o + listas(append L L)

(append '(e s t a m o s) '(f e l i c e s))

Crear una lista, con dos o + listas(list a a)

(list 'd 'e 'c 'o 'n 'o 'c 'e 'r 'e 'l 'l 'i 's 'p)

Page 12: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1212/37/37

Construcción de Listas> (cons ‘a ‘(b c d)) (a b c d)

> (cons nil '(a b c)) (NIL A B C)

> (append ‘(a b) ‘(c d)) (a b c d)

> (append '() '(a b c)) (A B C)

> (append nil '(a b c)) (A B C)

> (list ‘(a b) ‘(c d)) ((a b) (c d))

> (list '(a b) nil '(c d)) ((a b) nil (c d))

> (list '(a b) '() '(c d)) ((a b) nil (c d))

Page 13: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1313/37/37

Ejercicio 3• Construye las listas de los siguientes árboles y luego

“arma” la siguiente lista, haga uso de las funciones para construir listas

/

*

-3 5

6 -

6

6 2

*

6 2 /

- +

6 2 6 2

/

+ -

A B A B

A B

Page 14: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1414/37/37

Asignación de valores• La programación funcional del LISP no permite la

asignación de valores a variables, pueden existir programas donde no aparecen.

• La forma habitual es el uso de la vinculación en lugar de la asignación.– Parámetros de funciones.– Variables locales.

Page 15: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1515/37/37

Asignación de valoresAsignación de valores a variables

> (setq x 4 y 2 z 4)

> (setq a (1+ b) b (1+ a) c (+ a b))

Cambio de lugares (places)

> (setq var '(1 2 3 4 5))

(1 2 3 4 5)

> (setf (rest var) '(5 4))

(5 4)

> var

(1 5 4)

Page 16: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1616/37/37

Ejemplo> (setq x (cons 'a 'b) y (list 1 2 3))

(1 2 3)

> (setf (car x) 'x (cdr y) (car x))

X

> x

(X . B)

> y

(1 . X)

Page 17: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1717/37/37

CREACIÓN DE FUNCIONES EN LISP

Page 18: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1818/37/37

Definición de Funciones• LISP permite definir funciones y asignarles un nombre.

defun

• defun asocia a un símbolo (la función) un conjunto de sentencias, en las cuales se pueden utilizar una serie de parámetros formales declarados al inicio de la función.

• Al llamar a la función definida con defun se debe proporcionar los valores concretos con los que sustituir esos parámetros formales en la evaluación de las sentencias del cuerpo de la función.

• Tras terminar la evaluación del cuerpo de la función, el control del programa vuelve al lugar en donde se realizó la llamada.

Page 19: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

1919/37/37

Definición de funciones en LISP(defun <function-name> (<par-1> .... <par-n>)

<S-expression-1>

<S-expression-2>

....

<S-expression-m>

)

Page 20: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2020/37/37

Ejemplo de Función

(defun tercer_elemento (items)

(first (rest (rest items))))

> (tercer_elemento ‘(1 2 3 4 5))

3

Page 21: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2121/37/37

Condiciones(cond (<test-1> <action-1.1> .... <action-1.n1>)

(<test-2> <action-2.1> .... <action-2.n2>)

....

(<test-m> <action-m.1> .... <action-m.nm>)

)

Page 22: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2222/37/37

Funciones Lógicas• not toma un argumento y regresa t si es nil, o regresa nil

de otra manera.

• and toma cualquier número de argumentos y regresa nil si alguno de sus argumentos es nil, de otra manera regresa un no-nil.

• or toma cualquier número de argumentos y regresa nil si todos sus argumentos son nil, de otra manera regresa un no-nil.

Page 23: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2323/37/37

Ejemplo• Construir una función para calcular las raíces de una

ecuación cuadrática.• (raiz ‘(2 3 4))

• (defun raiz (a b c)• (list (/ (+ (- b) ((sqrt (- (* b b) (* 4 a c))) (* 2 a))• (/ (- (- b) ((sqrt (- (* b b) (* 4 a c))) (* 2 a))

• )• )

Page 24: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2424/37/37

RECURSION

Page 25: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2525/37/37

RecursiónAl construir una función, es posible confiar en esa definición para usarla como parámetro en la misma función.

(defun (multiply (x y)

(cond ((= x 0) 0)

(t (+ y (multiply (- x 1) y)

)

)

)

)

Page 26: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2626/37/37

Recursión

(defun ismemberof (item list)

(cond ((null list) nil)

((equal item (first list)) t)

(t (ismemberof item (rest list)))

)

)

Page 27: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2727/37/37

Funciones Simples de LISP

• SYMBOLP

• CONSP

• ATOM

• LISTP

• EQUAL

• EQL

• NULL

Page 28: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2828/37/37

Funciones Simples de LISP• ZEROP

• >

• <

• FIRST

• REST

• CONS

• LIST

Page 29: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

2929/37/37

Funciones Simples de LISP• APPEND

• REMOVE

• LAST

• ARITMETICAS: -, MAX, MIN, /, +, *, 1+, 1-

Page 30: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3030/37/37

EJEMPLOS

Page 31: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3131/37/37

Ejercicio 4 (LENGTH)• Implemente la función LENGTH usando sólo las funciones

de manipulación de listas y aritméticas

(defun len (L) (len-sub L 0))

(defun len-sub (L S) (cond ((null L) S ) (t (len-sub (cdr L) (+ S 1)) ) ))

Page 32: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3232/37/37

Ejercicio 5 (REMOVE)• Implemente la función REMOVE usando sólo las funciones

de manipulación de listas y aritméticas.

(defun remov (L a) (remov-sub L a nil))

(defun remov-sub (L a S) (cond ((null L) S ) ((equal a (first L)) (remov-sub (rest L) a S) ) ( t (remov-sub (rest L) a (append S (list (first L)))) ) ))

Page 33: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3333/37/37

Ejercicio 6 (APPEND)• Implemente la función APPEND usando sólo las funciones

de manipulación de listas y aritméticas.

Page 34: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3434/37/37

Ejercicio 7 (COUNT-A)• Construya una función llamada COUNT_A que tome un

argumento (que puede ser lista o átomo) y regrese un número entero que indique el número de elemento atómicos que existe en la estructura.

Page 35: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3535/37/37

CONCLUSIONES

Page 36: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3636/37/37

Conclusiones LISP es un lenguaje de alto nivel de tipo funcional que es LISP es un lenguaje de alto nivel de tipo funcional que es

utilizado en múltiples aplicaciones de IAutilizado en múltiples aplicaciones de IA

LISP se basa en manejo de listas y tiene desde LISP se basa en manejo de listas y tiene desde funciones simples hasta estructuras de datosfunciones simples hasta estructuras de datos

Page 37: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3737/37/37

Bibliografía• LISP

Winston and HornAddison Wesley

• The Little LisperDaniel Friedman and Mathias FelleisenSRA

• Apuntes de LISPGraeme Ritchie

Page 38: Mg. Samuel Oporto Díaz LISP INTELIGENCIA ARTIFICIAL.

3838/37/37

PREGUNTAS