INTELIGENCIA ARTIFICIAL

Slides:



Advertisements
Presentaciones similares
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities scuola.
Advertisements

SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
Rogelio Dávila Pérez Profesor - Investigador
Propiedades de los Reales
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
INTELIGENCIA ARTIFICIAL
INTELIGENCIA ARTIFICIAL
INTELIGENCIA ARTIFICIAL
Universidad San Martín de Porres
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 5.- 1ª PARTE. EL A.O. Y SUS APLICACIONES
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.
Respuestas Buscando a Nemo.
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
MOVIMIENTO ARMÓNICO SIMPLE MOVIMIENTO ARMÓNICO SIMPLE
SISTEMA DE NUMEROS NÚMEROS ENTEROS DIVISIBILIDAD NÚMEROS PRIMOS
Álgebra 2010 Clase N° 1 Conjuntos numéricos I
5 pt 5 pt 5 pt 5 pt 5 pt 10 pt 10 pt 10 pt 10 pt 10 pt 15 pt 15 pt
Los elementos invertibles de Z6 son 1 y 5
Estrategias en el aula con alumnos con problemas de atención y comportamiento Curso Actividad formativa: Seminario CRA “Entreviñas” - Fuensaldaña.
Funciones Excel. Parte 1. Introducción 2 Una función Excel es una fórmula o un procedimiento que se realiza en el ambiente de Visual Basic, fuera de.
Parte 3. Descripción del código de una función 1.
Elementos de Pascal Escribir un programa en Pascal que lea los valores de los catetos de un triángulo rectángulo y calcule y muestre la hipotenusa. program.
TEORÍA DE CONJUNTOS.
2.1 – Expresiones algebraicas
UNIDAD 2: FUNCIONES.
FUNCIONES DE UNA VARIABLE REAL
EL OSO APRENDIZ Y SUS AMIGOS
50 principios 1. Los clientes asumen el mando.
Técnico en programación de Software
INTELIGENCIA ARTIFICIAL
Fundamentos de programación
Profr. Ricardo A. Castro Rico
Ecuaciones Cuadráticas
Ecuaciones y Resolución de Ecuaciones Lineales
Expresiones Racionales
Exponentes Racionales y Radicales
¡Primero mira fijo a la bruja!
Lógica Proposición Ejemplos
Expresiones Algebraicas
Otra forma es representando lo que hay de cada lado
¿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.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
Números enteros.
Funciones exponenciales
La transformada de Laplace
Algoritmo y Estructura de Datos I
REGLAS DE LOS SIGNOS.
Unidad 2 Expresiones algebraicas
Learning Zone Matemáticas 101
ESCUELA: NOMBRES: LÓGICA DE LA PROGRAMACIÓN UNIDAD 2: Naturaleza de los Datos FECHA: Ing. Patricio Abad Espinoza OCTUBRE 2009 – FEBRERO Ciencias.
MSc. Lucía Osuna Wendehake
Calendario 2009 “Imágenes variadas” Venezuela Elaborado por: MSc. Lucía Osuna Wendehake psicopedagogiaconlucia.com Enero 2009.
Conceptos Básicos de Java
El compilador usa una técnica llamada “unificación” que comprueba que en cualquier aplicación, los tipos coinciden con los tipos correspondientes de los.
ALGORITMOS Y ESTRUCTURA DE DATOS
SUCESIONES Y PROGRESIONES.
Señales y sistemas de tiempo discreto
Estructuras de control
Introducción a LISP Sergio Jiménez Celorrio Departamento Ingeniería Informática – UC3M.
El lenguaje LISP.
UNIVERSIDAD TECNICA PERTICULAR DE LOJA
PRINCIPIOS DE PROGRAMACIÓN
Lenguaje de Programación LISP
Transcripción de la presentación:

INTELIGENCIA ARTIFICIAL LISP Mg. Samuel Oporto Díaz

Mapa Conceptual del Curso

Tabla de Contenido Objetivos Historia. Introducción Expresiones-S Átomos y Listas Funciones en LISP 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.

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.

INTRODUCCIÓN

Aspectos Generales LISP es un lenguaje: orientado a computación no-numérica lenguaje interactivo, recursivo No visual La programación funcional usa definiciones de funciones y llamadas de funciones como las únicas construcciones de programación. Basado en la notación prefija (o cálculo Lambda). LISP (LISt Processor) Notaciones Prefija /*+ABCF *+AB/CF Infija ((A+B)*C)/F Postfija AB+C*F/ AB+CF/*

Ejercicio 1 Convierta en notación prefija las siguientes expresiones (3x + xy - x/y)  (3x3 + x2 + 5x -5)  (3/x + x2y - x/y)*xy  (2+3*x/y –x*y*z +z3) 

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 + 4 + 3)) (2*3 – 4 + (5*6)/(4 - 6) - 3*55/(3 + 4 - 5*7))/(4+2)

¿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 de los lenguajes convencionales (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)  Se crea una función #'(lambda(x) (+ x n))) > (setf suma3 (sumaN 3))  Se asigna a una variable > (funcall suma3 4)  Se llamar a la variable > 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 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 no otorga semántica a los símbolos que manipula. Los símbolos en LISP no son case-sensitive. Muchos signos de puntuación son autorizados para formar parte de los símbolos: '?!$/<=>*'

Computación Simbólica La parte extraña es el ('), que sirve para bloquear la evaluación de una expresión y devolverla literalmente. Se dice que todo lo que está a continuación de la ‘ se entrega literalmente, no se evalúa. > '(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

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

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

EXPRESIONES-S (ÁTOMOS y LISTAS)

Símbolos 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

Expresiones-S Son estructuras del LISP y están formadas por: Átomos. Son elementos que no contienen paréntesis. Corresponde a símbolos 53 puca Listas. Es un conjunto de átomos o de otras listas agrupadas dentro de paréntesis. Una lista tiene cabeza CAR y cola CDR (D1 D2 D3 D4 D5 . . . DN) CAR CDR

Listas Corresponden a una colección de expresiones-s encerradas entre paréntesis y separadas por espacios. Las listas permiten representar una gran cantidad de cosas. Los programas en Lisp se expresan como listas. Las listas tienen una representación escrita e interna. nil, es una lista vacía. ‘(), es una lista vacía. nil es equivalente a ‘() nil no es nulo (null) > (atom nil) T > (listp nil) > (atom T) > (listp T) NIL > (atom '()) > (listp '()) > (listp ()) > (atom ())

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 mujeres y un destino) > (300000 .((masa . nil) .(velocidad . nil) .(luz . nil))) (300000 ((masa) velocidad) luz)

Ejercicio 4 Diseñe una lista para representar: Los días de la semana. Recuerde que el lisp no administra la semántica. La lista diseñada debe ser entendible por computador y fácil de ser procesado. Los tipos de datos son implícitos. Los días de la semana. El calendario (sólo para un mes). La disposición de ficha en un puzzle. La disposición del juego de michi Un laberinto Las notas obtenidas por los alumnos del curso. 5 4 6 1 8 7 3 2

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

Evaluación Toda expresión-S si se coloca en la línea de comandos intentará evaluarse. Si la expresión se inicia con una ‘ se devuelve lo que se encuentra a continuación. Si la expresión es un átomo, verifica si es un valor o el valor de una variable, devolviendo el dato. Si la expresión-S se inicia en una función se ejecuta la función, si no es una función retorna una mensaje de error (Illegal function name o the variable ??? is unbound)

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

FUNCIONES DEL LISP (f A1 A2 A3)

Operaciones matemáticas (- number [number ...]) Resta (floor number) Menor entero (* number [number ...]) Producto (gcd integer, integer) Máximo común divisor (/ number [number ...]) División (lcm [number …]) Mínimo común múltiplo (+ number number ...) Suma (log number) Logaritmo natural (1- number) cremento en 1 (logand integer integer ...) AND de bits, ret entero (1+ number) incremento en 1 (logior integer ...) OR de bits, ret entero (abs number) valor absoluto (max number number ...) máximo (atan num1 [num2]) arco tangente (min number number ...) mínimo común múltiplo (ceiling number) Mayor entero (rem num1 num2 ...) Resto de num1/num2 (cos angle) coseno (round number) Rodendeo (exp number) exponencial (sin angle) Seno en radianes (expt base power) Potencia. (sqrt number) Raíz cuadrada (float number) Convierte real (truncate number) Trunca, sin signo

Número 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)

Operaciones matemáticas (+ 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 (/ 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

Operaciones matemáticas (ABS n) devuelve el valor absoluto de n. (ABS 3)  3 (ABS -3.6)  3.6 (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

Ejercicio 6 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) 

Ejercicio 7 Calcular 2*(4 - 1)*6 + (8 - 6)*7 – 5/(4*7+9) + 3/4-5 18

Constantes > pi 3.141592653589793 > (exp 1) 2.718282

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

Predicados (/= atom atom .....) (atom item) (< atom atom .....) Desigualdad (atom item) Es un átomo (< atom atom .....) Menor (listp list) Es lista (<= atom atom .....) Menor o igual (boundp atom) Está inicializado (= atom atom .....) Igualdad (null item) Está inicializado en nil (> atom atom .....) Mayor (endp list) Lista vacía (>= atom atom .....) Mayor o igual (evenp number) Es par (or expression .....) or (nil si todos nil) (oddp number) Es impar (and expression .....) and (T si todos T) (numberp item) Es real o entero (not item) Es nil (symbolp symbol) Es símbolo (boole func int1 int2 ...) función booleana (zerop number) Es cero (eq exp1 exp2) igualdad (idénticos) (minusp item) T si es negativo (equal exp1 exp2) igualdad (estructural)  

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

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

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

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

Átomos, listas, listas vacías lista vacía es lista   atom null listp endp '(1 2) nil T () '() 'a is not LIST '1 1 a is unbound

Ejercicio 8 Diga qué retorna el LISP en los siguientes casos: (and (atom 'a) (atom '()) (atom (+ 2 3))) (and (oddp 3) (evenp 2) (minusp -3) (zerop 0.0)) (and (> -3.0 (truncate -3.1))(= -3.0 (round -3.1)) (> -3.0 (ceiling -3.1))(= 4 (floor 4.31))) (and (listp '()) (atom '()) (symbolp 'a) (listp '('1)) (atom 'abc)) 5. (and (symbolp 'anr) (symbolp "anr") (symbolp '()))

Ejercicio 9 Diga qué retorna el LISP en los siguientes casos: (and (atom 'hola) (null 'hola) (listp '() ) (andp '() )) (and (atom (+ 3 4)) (atom '(+ 3 4)) (listp (* 3 4)) (listp '(* 3 4))) (and (listp '("(2 3)")) (listp '(nil)) (listp ()))

not Predicado NOT Realiza la negación lógica de su único argumento (not <argumento>) Ejemplos: (NOT T)  NIL (NOT NIL) T

igualdad = compara reales, enteros o imaginarios. eq compara átomos eql compara átomos, es más flexible que eq. retorna nil si alguno de sus argumentos es list equal compara objetos, devuelve T si su dos entradas son iguales, y NIL en caso contrario (equal <objeto1> <objeto2>) equalp compara objetos, es más flexible que equal.

igualdad números átomos objetos objetos G a1 a2 = eq eql equal equalp '(1 2) '(1.0 2.0) error type nil T '(A A) '(a a) 1 1.0 '1 '1.1 1.1 (+ 2 3) 5.0 '5 5 'A 'a "abc" 'abc "ABC"

Ejercicio 10 Diga qué retorna el LISP en los siguientes casos: (= (+2 3 4) ‘9) (eq 1234 “1234”) (eq ‘1234 1234) (eq ‘(12 12) ‘(12 12)) (eql ‘(12 12) ‘(12 12)) (equal ‘(12 12) ‘(12 12)) (equal ‘(12.1 12) ‘(12 12.1))

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