Inteligencia artificial

Slides:



Advertisements
Presentaciones similares
INTELIGENCIA ARTIFICIAL
Advertisements

MODELOS ORIENTADOS A OBJETOS
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
Secuencia finita, ordenada y lógica de instrucciones (ó pasos), los cuales permiten realizar una ó varias tareas.
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Lenguajes de programación
Computación PROGRAMACIÓN.
Resolución de Problemas Algoritmos y Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Historia La base del C proviene del BCPL (lógica programable en codigo binario), escrito por Martin Richards, y del B escrito por Ken Thompson en 1970.
Sistemas de Razonamiento Lógico
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
Tipo de Dato Abstracto Tipos de datos:
UNIVERSIDAD LATINA (UNILA) INTRODUCCION A LA PROGRAMACIÓN
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERSIDAD LATINA (UNILA) V. EVALUACION DE ALGORITMOS.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Programación 1 Introducción
6. Operadores en PROLOG Definición de operadores propios
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
METODOLOGIA DE LA PROGRAMACION
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
ALGORITMOS Y ESTRUCTURAS DE DATOS
PROGRAMACIÓN LÓGICA.
UNIDAD I Conceptos Básicos.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
Paradigmas de Programación
Semana 5 Subprogramas..
M.C. Meliza Contreras González
Inteligencia artificial
1 LENGUAJES DE PROGRAMACIÓN Javier Martín Centro Asociado de Móstoles UNED.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Tema 1 Entorno de la programación. Conceptos elementales Algoritmo  Secuencia ordenada de pasos exentos de ambigüedad que conduce a la resolución de.
PROGRAMACIÓN PROCEDIMENTAL
Programación I MC José Andrés Vázquez Flores
FUNDAMENTOS DE PROGRAMACIÓN ISC. GABRIEL ZEPEDA MARTÍNEZ EST. ABRAHAM F. MACHUCA VAZQUEZ.
Introducción a los Sistemas Operativos
Un sistema de gestión de bases de datos: Es un conjunto de programas que permite a los usuarios crear y mantener una base de datos. Por tanto, el SGBD.
U1. Introducción a la programación
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
LENGUAJES DE PROGRAMACIÓN
Programación de Sistemas
FUNDAMENTOS DE PROGRAMACION
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
 Un LENGUAJE DE PROGRAMACION es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas al cabo por maquinas como las computadoras.
¿Qué son Los Lenguajes de Programación?
Facultad de Ingeniería
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
Términos algoritmo diseñar algoritmo implementar algoritmo
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Metodología de la programación
“PARADIGMAS Y LENGUAJES DE PROGRAMACION”
TEMA1:Introducción 1 1. Programación 2. Lenguajes de Programación 3. Ordenador.
Prof. Flor Narciso Departamento de Computación
Elaboración de algoritmos usando lógica de programación
ARQUICTECTURA DE SERVIDORES
Lic. Carla Aguirre Montalvo
Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
Aspectos de diseñó de los lenguajes de programación
Programación de Sistemas
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
Fundamentos de Programación Unidad I Conceptos Básicos.
SOFTWARE DE COMPUTADORAS
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Inteligencia artificial Algunos procedimientos interconstruidos en el lenguaje

Keyword

¿Cómo diseñar un lenguaje? Se tiene que tomar en cuenta tres influencias principales: La computadora subyacente en donde se van a ejecutar los programas escritos en el lenguaje. El modelo de ejecución, o computadora virtual, que apoya a ese lenguaje en el equipo real. El modelo de computación que el lenguaje implementa.

Componentes fundamentales de una computadora Descripción Datos Son los elementos de información integrados a la computadora, manipulables directamente a través de operaciones primitivas de hardware. Operaciones primitivas Debe contener un conjunto de operaciones primitivas interconstruidas, útiles para la manipulación de datos. Control de secuencia Proporciona los mecanismos para controlar el orden en el que se van a ejecutar las operaciones primitivas. Acceso a datos Incorporar algún medio para designar operandos y un mecanismo para recuperar operandos de un designador de operandos dado. Gestión de almacenamiento Proveer mecanismos para la asignación de almacenamiento para programas. Entorno de operación. El entorno de operación de una computadora consiste ordinariamente en un conjunto de dispositivos periféricos de almacenamiento de entrada / salida

Máquina virtual Son las estructuras de datos y algoritmos de un lenguaje que se emplean durante el tiempo de ejecución de un programa.

Relación entre lenguaje y máquina virtual Una máquina define un lenguaje. Un lenguaje define una máquina.

Jerarquía de máquinas virtuales Una computadora con n niveles puede verse como n máquinas virtuales diferentes, cada una de las cuales tiene un lenguaje especial.

Traductor para la máquina virtual Se debe suministrar un traductor para traducir programas de usuario al lenguaje de la máquina de la computadora virtual definida por el lenguaje.

Jerarquía de máquinas virtuales Cada nivel representa una abstracción con objetos y operaciones diferentes. Cada nivel está construido sobre su predecesor. Si se quiere escribir programas para la máquina virtual del nivel n, no se necesita conocer los intérpretes ni los traductores de los niveles de abajo. Las computadoras están diseñadas como una serie de niveles. Para diseñar nuevos niveles, se necesita conocer todos.

Enlaces y tiempo de enlace Un enlace es la asignación de atributos a una celda de memoria para un elemento de programa. El momento en que el programa hace esta elección se conoce como el tiempo de enlace.

Tipos de tiempos de enlace Tiempo de ejecución El enlace de parámetros formales a reales. A través de la asignación de valores a variables. Tiempo de compilación Tipos para las variables. Cómo se guardan las estructuras de datos y sus descriptores. Tiempo de carga Fusionar los subprogramas en un ejecutable único enlazando las variables a direcciones reales de memoria. Tiempo de implantación del lenguaje Representación de números y operaciones aritméticas en la computadora del hardware subyacente. Tiempo de definición del lenguaje Todas las posibles formas opcionales de enunciados, tipos de estructuras de datos, estructuras de programa. Por ejemplo, cuántos tipos de enlace tiene este sencillo enunciado de asignación escrito en un lenguaje L: X := X + 10

Tipos de tiempos de enlace Cuando un enlace se efectúa durante el tiempo de ejecución, se dice que es de tipo dinámico. Ejemplos: Prolog, LISP y ML. El enlace que ocurre durante el tiempo de compilación es de tipo estático. Ejemplos: C, Pascal y Fortran.

Alcance de una variable Es el conjunto de enunciados en el que el identificador de la variable es válido. Alcance estático: El alcance se determina de acuerdo al lugar donde el identificador es definido. Se le llama también alcance lexicográfico. El alcance estático se determina fácilmente utilizando diagramas de contorno.

Paradigmas de los lenguajes de programación En ciencias de la computación un paradigma se puede definir como un conjunto de conceptos que permiten modelar el mundo. Un paradigma es usado para formular una solución de cómputo a un problema. Lenguajes imperativos o de procedimientos. Lenguajes aplicativos o funcionales. Lenguajes con base en reglas o lógicos. Lenguajes orientados a objetos. Lenguajes concurrentes.

1. Lenguajes imperativos o de procedimientos Se caracterizan por ser claros, formales y elegantes. Son controlados por enunciados imperativos: enunciado 1; enunciado 2; ... La ejecución de un enunciado hace que el intérprete cambie el valor de una o más localidades en memoria. Ejemplos: Fortran, Pascal, C, Algol, Ada, PL/1. Fortran

2. Lenguajes aplicativos o funcionales Se caracterizan por ser muy eficientes, expresivos y semánticamente elegantes. Los lenguajes aplicativos hacen uso de las funciones puras con composición funcional, recursión y expresiones condicionales. Tienen 4 componentes: Un conjunto de funciones primitivas. Un conjunto de formas funcionales. La operación de aplicación. Un conjunto de objetos de datos. Ejemplos: LISP, ML. LIPS

3. Lenguajes con base en reglas o lógicos Se caracterizan por ser eficaces y veloces Se ejecutan verificando una condición, que cuando se satisface ejecutan una acción: condición 1 entonces acción 1 condición 2 entonces acción 2 ... Ejemplo: Prolog. Prolog

4. Lenguajes orientados a objetos Java Se caracterizan por trabajar con entes abstractos (objetos) que reflejan las propiedades y características de objetos o entes reales. Las actividades a realizarse se tornan alrededor de los objetos mediante métodos (funciones). La comunicación con el objeto se da a través de mensajes. Un aspecto fundamental es el concepto de herencia que se da cuando los objetos pertenecen a la misma clase. Ejemplos: Simula, Smalltalk, Java.

5. Lenguajes concurrentes Su principal objetivo es mejorar la velocidad de cómputo, compartir recursos y distribuir la carga de trabajo. Diferentes tipos de arquitecturas: Redes de cobertura amplia. Redes locales. Multiprocesadores (Clusters). Comunicación y cooperación entre aplicaciones a través de: Envío y recepción de mensajes. Llamado a procedimiento remoto. Comunicación de grupo. Memoria Virtual Distribuida. Ejemplos: PVM, CSP, Ada. Ada

Determinación del tipo de un término var(X) Se satisface si en ese momento X es una variable no instanciada Permite saber si una variable ya tiene o no un valor, pero sin fijárselo como efecto lateral ?- var(X). yes ?- var(23). no ?- X = Y, Y = 23, var(X). ¿? listing(A). Se muestran por el canal de salida activo todas las cláusulas asociadas al átomo al que esté instanciado A. El formato depende del intérprete. Útil para descubrir errores. Ejemplo: ?- [recorrer_fichero]. ?- listing(mostrar_fichero). mostrar_fichero :- write('Nombre de fichero: '), read(A), see(A), muestra_contenido, seen.Manejo de cláusulas nonvar(X) Comportamiento opuesto al anterior atom(X) Se cumple si X identifica en ese momento un átomo ?- atom(23). no ?- atom(libros). yes ?- atom(“esto es una cadena”). ¿? integer(X) Se satisface si X representa en ese momento a un entero atomic(X) Se cumple si en ese momento X es un entero o un átomo atomic(X):- atom(X). atomic(X):- integer(X).

Functor Una función entre categorías que mapea objetos a los objetos y morfismos a morfismos. Existen Functors en ambos tipos covariantes y contravariantes.

Name name(A, L) Permite manejar átomos arbitrarios. Relaciona un átomo (A), con la lista de caracteres ASCII que lo compone (L). Ejemplos: ?- name(prueba, X). X = [112, 114, 117, 101, 98, 97] ?- name(prueba, “prueba”). yes ?- name(X, [112, 114, 117, 101, 98, 97]). X = prueba

Manipulación de la base de datos Programa Prolog <----> Base de datos Base de datos: Conjunto de cláusulas que hemos ensamblado antes de iniciar la ejecución del programa. Prolog dispone de un conjunto de predicados predefinidos para modificar la base de datos de forma dinámica.

Predicados para manipulación de la base de datos Descripción asserta(X) Añade la cláusula X como la primera cláusula de este predicado. Como otros predicados de E/S siempre falla en el backtracking y no deshace sus propios cambios. assertz(X) Como asserta/1, sólo que añade la cláusula X como la última cláusula del predicado. retract(X) Borra la cláusula X de la base de datos. Como en los casos anteriores no es posible deshacer los cambios, debido a este predicado en el backtraking. retract/assert: Modificar la base de datos de cláusulas. Compilan el término que se les pasa como argumento. Son costosas. recorda/erase: Permiten grabar/borrar una base de datos de términos. Mecanismo más rápido que assert/retract, pero no son cláusulas del programa.

Construcción y descomposición de términos Existen tres predicados predefinidos para descomponer términos o construir nuevos términos: Term =.. L functor(Term, F, N) arg(N, Term, A) ?- f(a,b) =.. L. L = [f, a, b] ?- T =.. [progenitor, miguel, maría ] T = progenitor(miguel, maría) ?- Z =.. [p, X, g(X,Y) ]. Z = p(X, g(X,Y)) Prolog VI

Los procedimientos Findall findall(Instance, Goal, List) List se unifica con la lista de todas las instancias de Instance que hacen cierto a Goal. Si Goal no es cierto para ningún valor de Instance, entonces List se unifica con la lista vacía [].

Predicados standard de orden superior Ejemplo map Permite aplicar un predicado de "mapeo" a una lista de datos. Dicho predicado debe admitir el siguiente modo de uso: MapPred(+Dato,-DatoMapeado). Debe tratarse, por tanto, de un predicado que transforma (mapea) un dato en otro. La función de map es la siguiente: para cada dato existente en una lista dada, se pasa como primer argumento a MapPred. El resultado de MapPred, es decir, el segundo argumento, se almacena en una lista resultado. El modo de uso es el siguiente: map(+ListaInicial, +MapPred, -ListaResultado). %Predicado de mapeo: %Dado un numero le suma una unidad mapeo(Dato, DatoMapeado) :- DatoMapeado is Dato + 1. %% Ejecucion en el top-level: ?- map([6,9,12],mapeo,L). L = [7,10,13] ? yes ?-

Predicados estándar de orden superior Genera una lista con todas las soluciones del predicado dado según el orden en que se van sucediendo. findall nunca falla, si no hay soluciones genera una lista vacía. Naturalmente, el propio findall/3 solamente tiene una solución. "findall" Se trata de un conjunto de predicados cuya finalidad es almacenar en una lista todas las soluciones de un predicado dado, entendiendo como tales, las ligaduras que se producen en una o varias variables libres que se indican explícitamente. Los predicados que componen la familia son: El modo de uso es el siguiente: findall(+Termino_o_variable, +Objetivo, -ListaResultado).

findall( X, predicado(X), Resultado). Uso de findall uso erróneo usos correctos findall( X, predicado(Y), Resultado). findall( X, predicado(Y,Z), Resultado). findall( solucion(X,Y), predicado(Y,Z), Resultado). findall( X, predicado(X), Resultado). findall( X, predicado(X,Y), Resultado). findall( solucion(X,Y), predicado(X,Y), Resultado).

findall( X, predicado(X), Resultado). Uso de findall uso erróneo usos correctos findall( X, predicado(Y), Resultado). findall( X, predicado(Y,Z), Resultado). findall( solucion(X,Y), predicado(Y,Z), Resultado). findall( X, predicado(X), Resultado). findall( X, predicado(X,Y), Resultado). findall( solucion(X,Y), predicado(X,Y), Resultado).

Los procedimientos Bagof bagof(Instance, Goal, List) Similar a Findall, excepto en cómo trata las variables que aparecen en Goal y no en Instance (conocidas como variables libres). Bagof hace backtracking y produce una lista List para cada posible ligadura de las variables libres. Se puede convertir una variable libre a no-libre usando ^ . Si Goal no es cierto para ningún valor de Instance, entonces List se unifica con la lista vacía [].

Los procedimientos Setof setof(Instance, Goal, List) Similar a Bagof, salvo en que List está ordenada (según el orden estándar) y sin repetidos.

Frase “La primera regla de cualquier tecnología utilizada en los negocios es que la automatización aplicada a una operación eficiente magnificará la eficiencia. La segunda es que si la automatización se aplica a una operación ineficiente, magnificará la ineficiencia”  Bill Gates