INTELIGENCIA ARTIFICIAL

Slides:



Advertisements
Presentaciones similares
ULTRASONDO EN RODILLA MENISCOS Y LIGAMENTOS
Advertisements

Rogelio Dávila Pérez Profesor - Investigador
Conocimiento, Uso y Evaluación de Medicamentos Genéricos
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
La mediana La mediana es el valor tal que el 50 % de las observaciones son menores y 50 % de ellas son mayores a dicho valor. En otra palabras, la mediana.
Noviembre 2007Estudio Rostros de Noticias 2007Collect-GfKWikén Estudio Rostros de Noticias de la TV Chilena Desarrollados para Revista Wikén El Mercurio.
INTELIGENCIA ARTIFICIAL
INTELIGENCIA ARTIFICIAL
INTELIGENCIA ARTIFICIAL
Universidad San Martín de Porres
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Aladdín-respuestas 1.Vivía 2.Era 3.Amaba 4.Quería 5.Gustaban 6.Se sentía 7.Salía 8.Tenía 9.Decidió 10.escapó 11. Se vistió 12. Conoció 13. Vio 14. Pensó
Respuestas Buscando a Nemo.
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
SISTEMA DE NUMEROS NÚMEROS ENTEROS DIVISIBILIDAD NÚMEROS PRIMOS
Álgebra 2010 Clase N° 1 Conjuntos numéricos I
Objetivo: Los estudiantes van a usar vocabulario del desayuno para comprender un cuento. Práctica: 1. ¿Te gusta comer? 2. ¿Te gusta beber Mt. Dew.
DEFINICION DE TERMINOS SEMEJANTES
Mulán /75 puntos. 1.Querían 2.Gustaban 3.Escuchó 4.Dijo 5.Tenía 6.Ayudaron 7.Maquillaron 8.Arreglaron 9.Dio 10.Estaba 11.Iba 12.Quería 13.Salió 14.Gritó
CLASE 3 SOFTWARE DEL MICROPROCESADOR
William Shakespeare ( greg.), fue un dramaturgo, poeta y actor inglés. Conocido en ocasiones como el Bardo de Avon (o.
TELEFONÍA IP.
Parte 3. Descripción del código de una función 1.
Vocabulario querer comerlo -paja por supuesto - madera
FUNCIONES DE UNA VARIABLE REAL
EL OSO APRENDIZ Y SUS AMIGOS
INTELIGENCIA ARTIFICIAL
Fundamentos de programación
Profr. Ricardo A. Castro Rico
Ecuaciones Cuadráticas
RAZONAMIENTO MATEMATICO Mg. CORNELIO GONZALES TORRES
¡Primero mira fijo a la bruja!
Lógica Proposición Ejemplos
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
CONSTRUCCIONES - 2 Construcciones, divisiones, transposiciones, ... con palillos, cerillas, monedas, triángulos, cuadrados, trapecios, polígonos, etc.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Un ejemplo de agrupación de datos Problema 1 del capítulo 2 del libro de texto.
CONSTRUCCIONES - 2 Construcciones, divisiones, transposiciones, ... con palillos, cerillas, monedas, triángulos, cuadrados, trapecios, polígonos, etc.
Quetzalpapalotl Quetzalpapalotl – Gevederde Slang, vlindergod.
0 1 ¿Qué hora es? By: Craig Tillmann Revised by: Malinda Seger Coppell High School Coppell, TX.
REGLAS DE LOS SIGNOS.
Unidad 2 Expresiones algebraicas
The top ten of the world 全球前十名 李常生 Eddie Lee 9/28/2010 Taipei 1 手動翻頁 LOS “TOP TEN” DEL MUNDO.
Learning Zone Matemáticas 101
Introducción al lenguaje R Sesión 2: Objetos en R
ESCUELA: NOMBRES: LÓGICA DE LA PROGRAMACIÓN UNIDAD 2: Naturaleza de los Datos FECHA: Ing. Patricio Abad Espinoza OCTUBRE 2009 – FEBRERO Ciencias.
Vocabulario: (Los números)
Los Numeros.
SUCESIONES Y PROGRESIONES.
SUMA DE FRACCIONES DEL TERCER TIPO.
FACULTAD DE DERECHO PROTAGONISTAS PROMOCIÓN aniversario
Estructuras de control
Herramienta FRAX Expositor: Boris Inturias.
CARACTERÍSTICAS DE LOS PROGRAMAS
Introducción a LISP Sergio Jiménez Celorrio Departamento Ingeniería Informática – UC3M.
LISP I.
Términos algoritmo diseñar algoritmo implementar algoritmo
PRINCIPIOS DE PROGRAMACIÓN
Presente un cuestionario con los aspectos mas importantes sobre los
Lic. Carla Aguirre Montalvo
Lenguaje de Programación LISP
Departamento de Informática Universidad Técnica Federico Santa María Lenguajes Funcionales Francisco Bórquez Departamento de Informática Universidad Técnica.
Transcripción de la presentación:

INTELIGENCIA ARTIFICIAL LISP Mg. Samuel Oporto Díaz Lima, 14 de mayo 2005

Tabla de Contenido Historia. Introducción Expresiones y Átomos Listas Funciones Evaluación de Expresiones Procesamiento Básico Funciones en LISP Recursión Ejemplos Conclusiones Bibliografía

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.

HISTORIA

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.

INSTRODUCCION

Aspectos Generales Lisp es un lenguaje: orientado a computación no-numérica lenguaje interactivo 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 mas (no tiene efectos secundarios en el ambiente). (función arg1 arg2 ...)

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)

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.

¿Por qué Lisp? Se pueden escribir programas que realicen tareas que no se pueden hacer en otros lenguajes, > (defun sumaN (n) #'(lambda(x) (+ x n))) > (setf suma3 (sumaN 3)) > (funcall suma3 4) 7 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)

Computación Simbólica Las reglas léxicas son mucho más simples en LISP. Solo hay paréntesis, comillas (sencilla, doble y backquote) 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 partior de ellos. > (append '(Carlos Antonio) '(Carmen Rosa)) (CARLOS ANTONIO CARMEN ROSA)

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

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: '?!$/<=>'

EXPRESIONES-S Y ATOMOS

Expresiones-S 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 .(D3 .... .(DN.()))) 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)

Á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 3.1415927

LISTAS

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: Un átomo, nill o () es una lista. Una lista (S1 .S2) , donde S2 es una lista. ‘(1 .(2 .(3 )))  (1 2 3)

Listas Listas anidadas: ((1 uno) (2 dos) (3 tres)) Longitud de listas: > (Dos .(hombres .(y .(un .(destino . nill))))) (Dos hombre y un destino) > (300000 .((masa . nill) .(velocidad . nill) .(luz . nill))) (300000 ((masa) velocidad) luz) Listas anidadas: ((1 uno) (2 dos) (3 tres)) Longitud de listas: (1 2 3) ((a b) (c d) (e f)) (a (1 2 3) d)

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

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 ´

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. Variable lista-ejemplo que tiene un único elemento 666:

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)

FUNCIONES (f A1 A2 A3)

Números 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ños posibles. 5 6 11

Orden de las entradas 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) 8 2 4 1/4 2 8

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

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

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 1 2 3 4 5 2)  5 (MAX -2.3 7 0)  7.0 (MIN n1 ... nN) devuelve el menor valor de n1,..., nN. (MIN 3)  3 (MIN 1 2 3 4 5 2)  1 (MIN -2.3 7 0)  -2.3

Ejercicios 1 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)  5 20 183/469 2 12/35 4/5 8103.083927575385 16 3.3166247903554

Ejercicios 2 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))

Numero de entradas en una función Muchas funciones aceptan un numero variable de entradas Ejemplo: (+ 4 3 2) (+ (+ 4 3) 2)  9 (- 4 3 2) (- (- 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)

EVALUACION DE EXPRESIONES

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

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)

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))  17 (* 8 9) 9 error (+ (* 1 2) (+ 3 4)) (+ (QUOTE (* 1 2)) (+ 3 4))

PROCESAMIENTO BASICO

Predicados Las funciones cuyo resultado es un valor booleano atom numberp, symbolp listp, null, endp zerop, oddp, evenp, >, < equal, not

atom Identificación de átomos: atom Identifica todo aquello que no es una lista no vacía No sirve para diferenciar una lista vacía nil de algo que no sea una lista. (atom <objeto>) > (setf x '123) > (atom x) T

numberp, symbolp Identificación de números: numberp Identifica átomos numéricos, (numberp <objeto>) Ejemplos: (NUMBERP 2)  T (NUMBERP ‘PERRO)  NIL Identificación de símbolos: symbolp Identifica símbolos (symbolp <objeto>) (SYMBOLP 2)  NIL (SYMBOLP ‘PERRO)  T

listp, null, endp Identificación de listas: listp Identifica listas Sirve para distinguir lo que es nil o una lista no vacía de cualquier otra cosa. (listp <objeto>) Identificación de listas vacías (null <objeto>) (endp <lista>)

zerop, oddp, evenp, <, > ZEROP devuelve T si su entrada es 0 ODDP devuelve T si su entrada es un numero impar EVENP devuelve T si su entrada es un numero par < devuelve T si su primera entrada es menor que la segunda > devuelve T si su primera entrada es mayor que la segunda (ZEROP 0)  T; (ODDP 28)  NIL; (EVENP 28)  T; (ZEROP 4)  NIL; (ODDP 27)  T; (EVENP 27)  NIL; (< 2 3)  T (> 2 3)  NIL

equal, not Predicado EQUAL Predicado NOT Devuelve T si su dos entradas son iguales, y NIL en caso contrario (equal <objeto1> <objeto2>) Predicado NOT Realiza la negación lógica de su único argumento (not <argumento>) Ejemplos: (NOT T)  NIL (NOT NIL) T

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.

(A (B (X)) (C) (((Y)) E )) Ejercicios 4 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 (A (B (X)) (C) (((Y)) E ))

Ejercicios 5 Representa el siguiente árbol mediante una lista. Extrae mediante las funciones FIRST Y REST, las ocurrencias del número 6 + 9 6 2 * - 3 5

Listado de funciones Asignación de valores Construcción de Listas (setf x 2) (setq x 4) Construcción de Listas (cons a L) (cons 'h '(o l a)) (append L L) (append '(e s t a m o s) '(f e l i c e s)) (list a a) (list 'd 'e 'c 'o 'n 'o 'c 'e 'r 'e 'l 'l 'i 's 'p)

Ejercicio 6 Construye las listas de los siguientes árboles y luego “arma” la siguiente lista, haga uso de las funciones para construir listas / * - 3 5 6 2 * 6 2 / - + / + - A B A B

FUNCIONES EN LISP

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.

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

Ejemplo de Función 3 (defun third-element (items) (first (rest (rest items)))) > (third-element ‘(1 2 3 4 5)) 3

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>) )

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.

RECURSION

Recursión Al 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))) )

Recursión (defun ismemberof (item list) (cond ((null list) nil) ((equal item (first list)) t) (t (ismemberof item (rest list))) )

Funciones Simples de LISP SYMBOLP CONSP ATOM LISTP EQUAL EQL NULL

Funciones Simples de LISP ZEROP > < FIRST REST CONS LIST

Funciones Simples de LISP APPEND REMOVE LAST ARITMETICAS: -, MAX, MIN, /, +, *, 1+, 1-

EJEMPLOS

Ejercicio 7 (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))

Ejercicio 8 (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))))

Ejercicio 9 (APPEND) Implemente la función APPEND usando sólo las funciones de manipulación de listas y aritméticas.

Ejercicio 10 (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 hay en la estructura.

CONCLUSIONES

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

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

PREGUNTAS