La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INTELIGENCIA ARTIFICIAL

Presentaciones similares


Presentación del tema: "INTELIGENCIA ARTIFICIAL"— Transcripción de la presentación:

1 INTELIGENCIA ARTIFICIAL
LISP Mg. Samuel Oporto Díaz Lima, 3 de Octubre 2005

2 Mapa Conceptual del Curso
Inteligencia Artificial y Sistemas Expertos Lenguaje Simbólico LISP Búsqueda Búsqueda Ciega Búsqueda Heurística Planeación Lógica y Razonamiento Lógica Proposicional Lógica de Predicados Inferencia y Razonamiento Inteligencia Artificial Conceptos Generales Conocimiento Agentes

3 Tabla de Contenido Historia. Introducción Expresiones y Átomos Listas
Funciones Evaluación de Expresiones Conclusiones Bibliografía

4 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.

5 HISTORIA

6 Historia Creado por John McCarthy
Responsable de introducir el término “inteligencia Artificial”, lo hizo en la Conferencia de Dartmouth en 1955 McCarthy inventó el lenguaje de programación Lisp y publicó su diseño en Comunicaciones del ACM en 1960 El primer Lisp se desarrolló en una IBM-704, y en 1962 apareció la versión 1.5. A mediados de los 60's, MIT desarrolló MacLisp, Xerox - Interlisp, Stanford - UCI Lisp. En los 70's, G. Steele y G. Sussman - Scheme. En los 80's - Common Lisp.

7 INTRODUCCION

8 Aspectos Generales LISP es un lenguaje:
orientado a computación no-numérica lenguaje interactivo No visual La programación funcional usa definiciones de funciones y llamadas de funciones como las únicas construcciones de programación. Una función pura toma ciertos argumentos y regresa un resultado nada más (no tiene efectos secundarios en el ambiente). (función arg1 arg2 ...)

9 Aspectos Generales LISP (LISt Processor)
LISP puede usa recursión, evita datos y asignaciones globales, pero la I/O es difícil. Basado en el cálculo Lambda (A. Church) e.g., LISP (LISt Processor)

10 Ejercicio 1 Convierta en notación lambda las siguientes expresiones en notación infija. λ(x, y).(3x + xy - x/y)  λ(x).(3x3 + x2 + 5x -5)  λ(x, y, z).(2+3*x/y –x*y*z +z3) 

11 Ejercicio 2 Convierta a notación prefija las siguientes expresiones:
(2+3-4)/(4*4+5) (2*34 - 3(3*5 - 1)+4/3)/(2*4(3-4+5*6)+3) (3 – 4 – 6 - 4*5)/((2 + 3/4)*(3*5/2 + 1)/( )) (2*3 – 4 + (5*6)/(4 - 6) - 3*55/( *7))/(4+2)

12 ¿Por qué Lisp? En LISP los programas y datos usan la misma estructura, lo que permite escribir programas que escriban programas. Se pueden desarrollar prototipos rápidamente. Se pueden probar programas y funciones aisladas. En otros lenguajes las variables tienen un tipo asociado (no se puede usar una variable sin especificar su tipo). En LISP los valores tienen tipos no las variables (manifest typing) a diferencia (implicit typing). Tiene un garbage collector o recolector de basura y manejo de memoria automático.

13 ¿Por qué Lisp? Se pueden escribir programas que realicen tareas que no se pueden hacer en otros lenguajes, > (defun sumaN (n)  Se crea una función #'(lambda(x) (+ x n))) > (setf suma3 (sumaN 3))  Se asigna a una variable > (funcall suma3 4) 7  Se llamar a la variable Se ha utilizado en el desarrollo de sistemas complejos: EMACS, AutoCad, MACSYMA, etc. FUNCALL llama a una función con varias entradas (funcall #'cons 'a '(b c)) (A B C)

14 Computación Simbólica
Las reglas léxicas son mucho más simples en LISP. Solo existen paréntesis, comillas (sencilla y doble), espacios y comas. El punto y coma no separa expresiones (no es necesario debido a los paréntesis) sino que inicia comentarios. LISP permite la manipulación de símbolos, y la construcción de estructuras de datos complejas a partir de ellos. > (append '(Carlos Antonio) '(Carmen Rosa)) (CARLOS ANTONIO CARMEN ROSA)

15 Computación Simbólica
La parte extraña es el ('), que sirve para bloquear la evaluación de una expresión y devolverla literalmente. > '(Carlos Antonio) CARLOS ANTONIO > 'A A > '2 2 > A Error: A is not a bound variable > (Luis ‘Maria) Error: Luis is not a function > 2 2 > '(+ 2 2) (+ 2 2) > (+ 2 2) 4

16 Computación Simbólica
Los cálculos simbólicos y numéricos se pueden mezclar. > (+ 2 (length '(a b c d))) 6 LISP no otorga semántica a los símbolos que manipula. LISP contiene un conjunto de funciones predefinidas que es necesario conocer. Como +, append, length Los símbolos en LISP no son casesensitive. Muchos signos de puntuación son autorizados para formar parte de los símbolos: '?!$/<=>'

17 Ejercicio 3 ¿Diga que entrega el LISP cuando se le entrega las siguientes expresiones?: 123  ‘  ABC  ‘ABC  ‘(123)  (ABC)  ‘(ABC)  (+ 12 3)  ‘(+ 12 3)  page

18 Ejercicio 3 ¿Diga que entrega el LISP cuando se le entrega las siguientes expresiones?: 123  123 ‘  123 ABC  the variable ABC is unbound ‘ABC  ABC ‘(123)  (123) (ABC)  Undefind function ABC called ‘(ABC)  (ABC) (+ 12 3)  15 ‘(+ 12 3)  (+ 12 3)

19 EXPRESIONES-S Y ATOMOS

20 Expresiones-S Son estructuras con la que trabaja LISP y están formadas por: Átomos Estructuras de la forma (S1 . S2): Cada celda tiene dos partes llamadas: CAR (S1) y CDR (S2). (1 .2) (1 .(2 .3)) (D1 .(D2 .(D (DN.())))

21 Expresiones-S Hay una notación abreviada:
Los elementos no están en parejas, es decir desaparecen los ( ) El punto se sustituye por un espacio en blanco Se obvia la segunda parte de la cadena de estructuras simbólicas que contiene NIL. (D1 D2 D3 ... DN)

22 Átomos En general, en Lisp se tiene ó átomos ó listas.
Son uno de los posibles componentes de una S-expression. Esta formado por una cadena de caracteres que comienza con una letra, o un dígito o un carácter especial distinto de los paréntesis “(“ , “)” Ejemplos: Asunto C.P. Pi

23 LISTAS

24 Listas Las listas permiten representar una gran cantidad de cosas. Inclusive los programas en Lisp se expresan como listas. Las listas tienen una representación escrita e interna. La representación interna son cadenas de celdas cons. (a b c) (uno) (esto es 1 lista) Corresponden a una colección de expresiones-s encerradas entre paréntesis y separadas por uno o más espacios. Formalmente, una lista es una expresión tal que es: Un átomo, nil o () es una lista. Una lista (S1 .S2) , donde S2 es una lista. ‘(1 .(2 .(3 )))  (1 2 3)

25 Ejemplos de Listas > (1 2 3) > ((a b) (c d) (e f))
> (1 2 3) > ((a b) (c d) (e f)) > (a (1 2 3) d) > ((1 uno) (2 dos) (3 tres)) > ‘(1 .(2)) (1 2) > ‘(1 .(2 .(()))) (1 2 nil) > (Dos .(hombres .(y .(un .(destino . nil))))) (Dos hombre y un destino) > ( ((masa . nil) .(velocidad . nil) .(luz . nil))) ( ((masa) velocidad) luz)

26 Representación de Listas
(setf lista-ejemplo 666) (setf lista-ejemplo .(666))

27 Lista vacía o nula Las listas pueden ser Vacías o No vacías
Listas vacías: S-expresión especial que es a la vez un átomo y una lista Se representa por NIL o “( )” Representación tradicional: Para diferenciar las listas de las funciones, se empieza la lista con el signo del apóstrofe ´

28 Listas no vacías La más sencilla es la que tiene un único elemento.
Cualquier lista no vacía de n elementos se puede ver como una estructura en la que se repite n veces la estructura de la lista con un único elemento. La lista elemental de un solo elemento, tiene dos tipos de información: El dato correspondiente a esa posición de la lista. El dato correspondiente al siguiente elemento de la lista.

29 Listas no vacías Variable lista-ejemplo que tiene un único elemento 666: (setf lista-ejemplo '(666))

30 Listas Ejemplo de la variable vocales que tiene como valor la lista LISP (a e i o u): > (setf lista '(a e i o u)) (A E I O U)

31 FUNCIONES (f A1 A2 A3)

32 Funciones con Números Funciones aritméticas simples: suma, resta, multiplicación y división: Clases de números Enteros: números sin decimales Punto flotante: siempre se escribe con un punto decimal Ratios (fracciones): simplifica automáticamente las fracciones para usar un denominador los mas pequeño posible. 5 6 11

33 Orden de las entradas La primera entrada de una función: flecha mas alta de la caja La segunda entrada: la flecha de mas abajo. (8/2) (2/8) /4

34 Símbolos Son otra clase de datos en Lisp
Pueden contener cualquier combinación de letras y números, y algunos caracteres especiales. Ejemplos: BANANAS COMPUTADOR Símbolos especiales T y NIL T  Verdadero, Yes NIL  Falso, No, Vacío

35 Operaciones (+ n1 n2 ... nN) retorna la suma n1+n2+…+nN. Si N = 0, da 0. (+)  0 (+ 3)  3 ( )  15 ( )  ERROR (*) ( )  (- n1 n2 ... nN) retorna el valor de n1-n2-….-nN. Si N = 1, da -n1 (- 3)  -3 ( )  111 (ABS n) devuelve el valor absoluto de n. (ABS 3)  3 (ABS -3.6)  3.6

36 Operaciones (/ n1 n2) devuelve el valor de dividir n1 por n2.
(/ 6 2)  3.0 (/ 5 2)  2.5 (/ n) es lo mismo que (/ 1 n); es decir, devuelve el inverso de n. (/ 2)  0.5 (/ 0.5)  2.0 (MOD n1 n2) devuelve el resto de la división entera de n1 por n2. (MOD 7 2) ---> 1 (MAX n1 ... nN) devuelve el mayor valor de n1,..., nN. (MAX 3)  3 (MAX )  5 (MAX )  7.0 (MIN n1 ... nN) devuelve el menor valor de n1,..., nN. (MIN 3)  3 (MIN )  1 (MIN )  -2.3

37 Ejercicio 4 Indicar qué retorna el LISP para las siguientes expresiones: (+ 2 3)  (* 2 (+ 4 6))  (+ 2/7 7/67)  (- 8 6)  (* 2/7 6/5)  (/ 4 5)  (exp 9)  (expt 2 4)  (sqrt 11) 

38 Ejercicio 5 Calcular 2*(4 - 1)*6 + (8 - 6)*7 18 Solución:
> (+ (* 2 (- 4 1) (/ 6 18)) (* (- 8 6) 7)) > 16.0 > (+ (* 2 (- 4 1) (/ 6 18)) (* (- 8 6) 7))

39 Número de entradas en una función
Muchas funciones aceptan un numero variable de entradas Ejemplo: ( ) (+ (+ 4 3) 2)  9 ( ) (- (- 4 3) 2)  -1 (* 4 3 2) (*(* 4 3) 2)  24 (/ 6 3 2) (/ (/ 6 3) 2)  1.0 (- 4)  -4 (/ 4)  0.25 (su reciproco)

40 EVALUACION DE EXPRESIONES

41 Evaluación La evaluación de las expresiones S se lleva a cabo siguiendo el algoritmo de la función Eval. IF L is atomic THEN IF L is numeric THEN result is corresponding number ELSE IF L currently has value V THEN result is V error- unbound variable IF L is a call of a known function F THEN determine which arguments are to be evaluated apply EVAL to appropriate arguments apply F to accumulated results error - undefined function

42 Función especial QUOTE
Esta función toma un argumento y NO lo evalúa Ejemplo: > (quote (+ 2 3)) > (+ 2 3) La función quote puede ser sustituida por un el símbolo ’ > ’(+ 2 3)

43 Ejercicios 3 Indique lo que aparecería después de teclear lo siguiente
(* 8 9)  '(* 8 9)  (+ (* 1 2) (+ 3 4))  (+ '(* 1 2) '(+ 3 4))  (+ '(* 1 2) (+ 3 4))  '(+ (* 1 2) (+ 3 4))  '(+ '(* 1 2) (+ 3 4)) 

44 CONCLUSIONES

45 Conclusiones LISP es un lenguaje de alto nivel de tipo funcional que es utilizado en múltiples aplicaciones de IA LISP se basa en manejo de listas y tiene desde funciones simples hasta estructuras de datos

46 Bibliografía LISP Winston and Horn Addison Wesley The Little Lisper
Daniel Friedman and Mathias Felleisen SRA Apuntes de LISP Graeme Ritchie

47 PREGUNTAS


Descargar ppt "INTELIGENCIA ARTIFICIAL"

Presentaciones similares


Anuncios Google