Inteligencia Artificial.




Universidad Nacional de Ingeniería.   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



PRIMERA UNIDAD:
GENERALIDADES EN INTELIGENCIA ARTIFICIAL.
1.1 Concepto de Inteligencia Artificial.
1.2 Alcance de la Inteligencia Artificial.

     a)   Percepción
     b)   Sistemas expertos.
     c)   Hardware (Memoria, rapidez y arquitectura)
     d)   Robótica (Automatización).
     e)   Cibernética (Interdisciplina para control de automatización)

1.3 Algunos programas de la Inteligencia Artificial.

     a) Eliza.
     b) Mycin
     c) Dendral

1.4 El proyecto Japonés de la Quinta Generación.


1.1. INTRODUCCIÓN.

En primer lugar, revisemos algunas definiciones generales de inteligencia, antes de intentar definir
inteligencia artificial. Inteligencia es la aptitud de crear relaciones. Esta creación puede darse de
manera puramente sensorial, como en la inteligencia animal; también puede darse de manera
intelectual, como en el ser humano, que pone en juego el lenguaje y los conceptos. También se la
puede conceptuar como la habilidad para adquirir, comprender y aplicar conocimiento; o como la
aptitud para recordar, pensar y razonar.

La IA es una nueva generación de tecnología informática, caracterizada no sólo por su arquitectura
(hardware), sino también por sus capacidades. El énfasis de generaciones previas fue en las
computaciones numéricas para aplicaciones científicas o de negocios. La nueva generación de
tecnología informática incluye además la manipulación simbólica, con el objetivo de emular el
comportamiento inteligente; y, la computación en paralelo, para tratar de conseguir resultados
prácticamente en tiempo real. La capacidad predominante de la nueva generación, también
conocida como la Quinta Generación, es la habilidad de emular (y tal vez en algunos casos
superar) ciertas funciones inteligentes del ser humano. Por ejemplo:

Aprendizaje: Captación automática de conocimientos.

Razonamiento:

     •    Sistemas basados en conocimientos.
     •    Bases de datos inteligentes.
     •    Prueba de teoremas y juegos.


Universidad Nacional de Ingeniería.                                Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Percepción:

     •    Comprensión de lenguaje natural.
     •    Interpretación de escenas visuales (Visión por computadora).

Locomoción y Manipulación: Realizar procesos mecánicos y tareas manuales (Robótica).

Creación: Generación, verificación, depuración y optimización automática de programas.

Algunas de las tareas que estos sistemas realizan en el campo de la IA son:

Tareas generales

     •    Percepción: Visión, Fonemas.
     •    Lenguaje Natural: Comprensión, generación y traducción.
     •    Razonamiento de sentido común.
     •    Control de robots.

Tareas formales

     •    Juegos: Ajedrez, Backgammon, Damas.
     •    Matemáticas: Geometría, Lógica, Cálculo Integral.

Tareas expertas

     •    Ingeniería: Diseño, Localización de fallas, Planeamiento.
     •    Análisis Científico.
     •    Diagnóstico Médico.
     •    Análisis Financiero.



La inteligencia artificial, en su sentido más amplio, indica la capacidad de un artefacto de
realizar los mismos tipos de funciones que caracterizan al pensamiento humano. La
posibilidad de desarrollar un artefacto así ha despertado la curiosidad del ser humano desde
la antigüedad; sin embargo, no fue hasta la segunda mitad del siglo XX, cuando esa
posibilidad se materializó en herramientas tangibles.

La Inteligencia Artificial comenzó como el resultado de la investigación en psicología
cognitiva y lógica matemática. Se ha enfocado sobre la explicación del trabajo mental y
construcción de algoritmos de solución a problemas de propósito general. Punto de vista
que favorece la abstracción y la generalidad.

El término inteligencia artificial (IA) fue acuñado en 1956 por John McCarthy, del Instituto
de Tecnología de Massachussets. En ese año se celebró la conferencia de Dartmouth, en
Hanover (Estados Unidos), y en ella, McCarthy, Marvin Minsky, Nathaniel Rochester y
Claude E. Shannon establecieron las bases de la inteligencia artificial como un campo
independiente dentro de la informática. Previamente, en 1950, Alan M. Turing había
publicado un artículo en la revista Mind, titulado “Computing Machinery and Intelligence”
(“Ordenador e inteligencia”), en el que reflexionaba sobre el concepto de inteligencia
Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

artificial y establecía lo que luego se conocería como el test de Turing, una prueba que
permite determinar si un ordenador o computadora se comporta conforme a lo que se
entiende como artificialmente inteligente o no.

Con el avance de la ciencia moderna la búsqueda de la IA ha tomado dos caminos
fundamentales: la investigación psicológica y fisiológica de la naturaleza del pensamiento
humano, y el desarrollo tecnológico de sistemas informáticos cada vez más complejos.

La Inteligencia Artificial es una combinación de la ciencia del computador, fisiología y
filosofía, tan general y amplio como eso, es que reúne varios campos (robótica, sistemas
expertos, por ejemplo), todos los cuales tienen en común la creación de máquinas que
pueden "pensar".

La idea de construir una máquina que pueda ejecutar tareas percibidas como requerimientos
de inteligencia humana es un atractivo. Las tareas que han sido estudiadas desde este punto
de vista incluyen juegos, traducción de idiomas, comprensión de idiomas, diagnóstico de
fallas, robótica, suministro de asesoría experta en diversos temas.

Es así como los sistemas de administración de base de datos cada vez más sofisticados, la
estructura de datos y el desarrollo de algoritmos de inserción, borrado y locación de datos,
así como el intento de crear máquinas capaces de realizar tareas que son pensadas como
típicas del ámbito de la inteligencia humana, acuñaron el término Inteligencia Artificial en
1956.

Trabajos teóricos fundamentales fueron el desarrollo de algoritmos matemáticos por
Warren McCullock y Walter Pitts, en 1943, necesarios para posibilitar el trabajo de
clasificación, o funcionamiento en sentido general, de una red neuronal. En 1949 Donald
Hebb desarrolló un algoritmo de aprendizaje para dichas redes neuronales creando, en
conjunto con los trabajos de McCullock y Pitts, la escuela creacionista. Esta escuela se
considera hoy como el origen de la Inteligencia Artificial, sin embargo se trató poco por
muchos años, dando paso al razonamiento simbólico basado en reglas de producción, lo
que se conoce como sistemas expertos.

En este sentido, el término IA se ha aplicado a sistemas y programas informáticos capaces
de realizar tareas complejas, simulando el funcionamiento del pensamiento humano,
aunque todavía muy lejos de éste. En esta esfera los campos de investigación más
importantes son el procesamiento de la información, el reconocimiento de modelos, los
juegos y las áreas aplicadas, como el diagnóstico médico. Un ejemplo de los logros
alcanzados fue la partida de ajedrez que el superordenador de IBM denominado Deep Blue
ganó, en mayo de 1997, al campeón del mundo Gari Kaspárov.

Algunas áreas de la investigación actual del procesamiento de la información están
centradas en programas que permiten a un ordenador o computadora comprender la
información escrita o hablada, y generar resúmenes, responder a preguntas específicas o
redistribuir datos a los usuarios interesados en determinados sectores de esta información.
En esos programas es esencial la capacidad del sistema de generar frases gramaticalmente

Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

correctas y de establecer vínculos entre palabras e ideas. La investigación ha demostrado
que mientras que la lógica de la estructura del lenguaje, su sintaxis, está relacionada con la
programación, el problema del significado, o semántica, es mucho más profundo, y va en la
dirección de una auténtica inteligencia artificial.

Actualmente existen dos tendencias en cuanto al desarrollo de sistemas de IA: los sistemas
expertos y las redes neuronales. Los sistemas expertos intentan reproducir el razonamiento
humano de forma simbólica. Las redes neuronales lo hacen desde una perspectiva más
biológica (recrean la estructura de un cerebro humano mediante algoritmos genéticos). A
pesar de la complejidad de ambos sistemas los resultados distan mucho de un auténtico
pensamiento inteligente.

Muchos científicos se muestran escépticos acerca de la posibilidad de que alguna vez se
pueda desarrollar una verdadera IA. El funcionamiento de la mente humana todavía no ha
llegado a conocerse en profundidad y, en consecuencia, el diseño informático seguirá
siendo esencialmente incapaz de reproducir esos procesos desconocidos y complejos.

La metáfora entre mente y computadora se ha ampliado y madurado.

Existe mecanismos o procesos básicos; sean comunes a actividades y comportamientos tan
variados como:

          Resolver un problema en general matemático, financiero,...
          Descubrir una estructura de pensamiento.
          Ir de casa a la oficina.
          Jugar al ajedrez.
          Otras actividades del pensamiento que habitualmente se reconoce que requieren
          inteligencia.

La existencia de otros mecanismos

          Confirmación del funcionamiento de la inteligencia.
          Detección de la inteligencia.
          Entendimiento de la inteligencia.

La confluencia de IA con la sicología cognitiva.

          El conocimiento que se tenga de la inteligencia y el aprendizaje, será alguna vez
          suficiente para que sirva de ayuda en la construcción de modelos mentales (Ej.: el
          conocimiento de la aeronáutica ayuda a construir aviones.)

          Estudiase el acto de aprender --> en las personas el aprendizaje parece estar
          íntimamente ligado al crecimiento de la estructura física del cerebro.




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



1.2. CRONOLOGÍA DE LA IA.

          La inteligencia artificial es el estudio de la inteligencia como computación (Hayes.)

          Es la ciencia de hacer máquinas que hacen cosas que, realizadas por el hombre,
          requieran el uso de inteligencia (Minski.)

          El estudio de las ideas que permiten a los ordenadores ser inteligentes (Winston.)

          Conjunto de técnicas encaminadas al diseño y la construcción de sistemas
          informáticos que exhiban algún aspecto de inteligencia (Luis Arranz.)

          El nacimiento de la inteligencia artificial se refiere a la conferencia de Darwouth de
          1956. Se reunieron ciertos investigadores de informática para intercambiar sus
          ideas.

          En 1957 aparece un programa que es el General Power Solver (GPS) desarrollado
          por Newell, Shan y Simon que era un intento de hacer un programa que resolviera
          problemas. Todo quedó en un fracaso.

          En 1958 aparece un lenguaje llamado LISP de McCarthy.

          En 1961 aparece un programa para jugar a las damas (Samel) que además era capaz
          de aprender cuantas más partidas ganaba.

          En 1965 se comienza a desarrollar DENTRAL, que es un sistema experto
          relacionado con la química y es el primer S.E. (Sistema Experto.)

          En 1966 aparece un programa de ajedrez creado por Greunblat.

          En 1968 aparece un robot denominado SHAKEY con movimientos muy torpes.

          En el 69 aparecen otros sistemas expertos: PROSPECTOR (yacimientos minerales),
          MYCIN (enfermedades infecciosas.)

          En 1975 aparece PROLOG (Colmenawer.)

          1981: Conferencia de Tokyo
          MITI          Robot
                        Superordenadores
                        Quinta generación
          MCC (Microelectronics and Computer technology Corporation)
          SCS (Strategic Computing and Survivability)
          MCNC (Microelectronics Center of Nort Carolina)
          Proyecto “Guerra de las galaxias”

Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



1.3. CONCEPTO DE INTELIGENCIA ARTIFICIAL.
No existe una definición para la IA que tenga una aceptación general, lo cual no es de
extrañar ya que tampoco ha existido nunca una definición universalmente aceptada de la
inteligencia humana. De las muchas definiciones de IA existentes tenemos:




                                       Inteligencia Artificial
     1.     “La interesante tarea de lograr que las computadoras piensen... maquinas con
            mentes, en su amplio sentido.” (Haugeland, 1985.)

     2.     Disciplina científico-técnica que trata de crear sistemas artificiales capaces de
            comportamientos que, de ser realizados por seres humanos, se diría que requieren
            inteligencia.

     3.     “La automatización de actividades que vinculamos con procesos de pensamiento
            humano, actividades tales como toma de decisiones, resolución de problemas,
            aprendizaje...” (Bellman, 1978.)

     4.     “El estudio de las facultades mentales mediante el uso de modelos
            computacionales”. (Charniak y McDermott, 1985.)

     5.     “El estudio de los cálculos que permiten percibir, razonar y actuar”. (Winston,
            1992.)

     6.     Estudio de los mecanismos de la inteligencia y las tecnologías que lo sustentan.
            (Newell)

     7.     “El arte con crear máquinas con capacidad de realizar funciones que al realizadas
            por personas requieren de inteligencia”. (Kurzweil, 1990.)

     8.     “El estudio de cómo lograr que las computadoras realicen tareas que, por el
            momento, los humanos hacen”. (Rich y Knight, 1991.)

     9.     “Un campo de estudio que se enfoca a la explicación y emulación de la conducta
            inteligente en función de procesos computacionales”. (Schalkoff, 1990.)

     10. “La rama de la ciencia de la computación que se ocupa de la automatización de la
         conducta inteligente”. (Luger y Stubblefield, 1993).

Las primeras cinco definiciones se refieren a procesos mentales y al razonamiento, mientras
que las ultimas cinco a la conducta. La 1, 3, 5 y 7 miden la condición deseable en función

Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

de eficiencia humana, y las 3, 4, 8, y 9 lo hacen en conformidad con un concepto de
inteligencia ideal (racionalidad.)

Desde sus comienzos hasta la actualidad, la Inteligencia Artificial ha tenido que hacer
frente a una serie de problemas:

     •    Los computadores no pueden manejar (no contienen) verdaderos significados.
     •    Los computadores no tienen autoconciencia (emociones, sociabilidad, etc.).
     •    Un computador sólo puede hacer aquello para lo que está programado.
     •    Las máquinas no pueden pensar realmente.

Los esfuerzos de la Inteligencia Artificial (IA) están encaminados tanto a la construcción de
entidades inteligentes como a su comprensión.

En 1843, Lady Ada Augusta Byron, patrocinadora de Charles Babbage planteó el asunto de
si la máquina de Babbage podía "pensar".

Los primeros problemas que se trató de resolver fueron puzzles, juegos de ajedrez,
traducción de textos a otro idioma.

Durante la II Guerra Mundial Norbert Wiener y John Von Neumann establecieron los
principios de la cibernética en relación con la realización de decisiones complejas y control
de funciones en máquinas.

La teoría de la retroalimentación en mecanismos, como por ejemplo un termostato que
regula la temperatura en una casa, tuvo mucha influencia. Esto aún no era propiamente
Inteligencia Artificial. Se hizo mucho en traducciones (Andrew Booth y Warren Weaver),
lo que sembró la semilla hacia el entendimiento del lenguaje natural.

En el año 1955 Herbert Simon, el físico Allen Newell y J.C. Shaw, programador de la
RAND Corp. y compañero de Newell, desarrolla el primer lenguaje de programación
orientado a la resolución de problemas de la Inteligencia Artificial, el IPL-11. Un año más
tarde estos tres científicos desarrollan el primer programa de Inteligencia Artificial al que
llamaron Logic Theorist, el cual era capaz de demostrar teoremas matemáticos,
representando cada problema como un modelo de árbol, en el que se seguían ramas en
busca de la solución correcta, que resultó crucial. Este programa demostró 38 de los 52
teoremas del segundo capítulo de Principia Mathematica de Russel y Whitehead.

En 1956, con la ahora famosa conferencia de Dartmouth, organizada por John McCarthy y
en la cual se utilizó el nombre de inteligencia artificial para este nuevo campo, se separó la
Inteligencia Artificial de la ciencia del computador, como tal. Se estableció como
conclusión fundamental la posibilidad de simular inteligencia humana en una máquina.

En 1957 Newell y Simon continúan su trabajo con el desarrollo del General Problems
Solver (GPS). GPS era un sistema orientado a la resolución de problemas; a diferencia del
Logic Theorist, el cual se orientó a la demostración de teoremas matemáticos, GPS no

Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

estaba programado para resolver problemas de un determinado tipo, razón a la cual debe su
nombre. Resuelve una gran cantidad de problemas de sentido común, como una extensión
del principio de retroalimentación de Wiener.

Diversos centros de investigación se establecieron, entre los más relevantes están, la
Universidad Carnegie Mellon, el Massachusetts Institute of Technologie (MIT),
encabezado por Marvin Minsky, la Universidad de Standford e IBM. Los temas
fundamentales eran el desarrollo de heurísticas y el aprendizaje de máquinas.

En 1957 McCarthy desarrolló el lenguaje LISP. La IBM contrató un equipo para la
investigación en esa área y el gobierno de USA aportó dinero al MIT también para
investigación en 1963.

A finales de los años 50 y comienzos de la década del 60 se desarrolla un programa
orientado a la lectura de oraciones en inglés y la extracción de conclusiones a partir de su
interpretación, al cual su autor, Robert K. Lindsay, denomina "Sad Sam". Este podía leer
oraciones del tipo "Jim es hermano de John" y "La madre de Jim es Mary", a partir de ella
el sistema concluía que Mary debía ser también la madre de John. Este sistema representó
un enorme paso de avance en la simulación de inteligencia humana por una máquina, pues
era capaz de tomar una pieza de información, interpretarla, relacionarla con información
anteriormente almacenada, analizarla y sacar conclusiones lógicas.

En el mismo período de tiempo hay trabajos importantes de Herbert Gelernter, de IBM,
quien desarrolla un "Demostrador Automático de Teoremas de la Geometría", Alex
Bernstein desarrolla un programa para el juego de ajedrez que se considera el antecedente
para "Deep Blue".

En 1961 se desarrolla SAINT (Simbolic Automatic INTegrator) por James Slagle el cual se
orienta a la demostración simbólica en el área del álgebra.

En 1964 Bertrand Raphael construye el sistema SIR (Semantic Information Retrieval) el
cual era capaz de comprender oraciones en inglés.


Formalmente la IA inicia como disciplina en 1956.


En la década del 60 se comienza en el MIT el estudio de la visión artificial, lo cual implica
no solo captar imágenes a través de una cámara, sino también la comprensión, de lo que
estas imágenes representan.

Un resultado importante en este trabajo lo constituye el "mundo de micro-bloques", en el
cual un robot era capaz de percibir un conjunto de bloques sobre una mesa, moverlos y
apilarlos; el éxito se debió a los investigadores Larry Roberts, Gerald Sussman, Adolfo
Guzman, Max Clowes, David Huffman, David Waltz, Patrick Winston, y Berthold Horn.


Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Posteriormente se obtuvieron resultados importantes entre ellos el de mayor resonancia fue
el sistema SCHRDLU de Terry Winograd, pues permitía interrogar y dar órdenes a un
robot que se movía dentro de un mundo de bloques.

En los primeros años de la década del 60 Frank Rosemblatt desarrolla, en la Universidad de
Cornell, un modelo de la mente humana a través de una red neuronal y produce un primer
resultado al cual llama perceptrón. Este sistema era una extensión del modelo matemático
concebido por McCullock y Pitts para las neuronas, y funcionaba basándose en el principio
de "disparar" o activar neuronas a partir de un valor de entrada el cual modifica un peso
asociado a la neurona, si el peso resultante sobrepasa un cierto umbral la neurona se dispara
y pasa la señal a aquellas con las que está conectada. Al final, en la última capa de
neuronas, aquellas que se activen definirán un patrón el cual sirve para clasificar la entrada
inicial.

Este trabajo constituye la base de las redes neuronales de hoy en día, sin embargo a raíz de
su desarrollo sufrió fuertes críticas por parte de Marvin Minsky y Seymour Papert lo cual
provocó que la mayoría de los investigadores interesados en el tema lo abandonarán, y este
no se retomara hasta los años 80.

En 1965-70, comenzaron a aparecer los programas expertos, que predicen la probabilidad
de una solución bajo un set de condiciones, entre esos proyectos estuvo: DENDRAL, que
asistía a químicos en estructuras químicas complejas euclidianas; MACSYMA, producto
que asistía a ingenieros y científicos en la solución de ecuaciones matemáticas complejas,
etc.

En la década 1970-80, creció el uso de sistemas expertos, muchas veces diseñados para
aplicaciones médicas y para problemas realmente muy complejos como MYCIN, que
asistió a médicos en el diagnóstico y tratamiento de infecciones en la sangre. Otros son:
R1/XCON, PIP, ABEL, CASNET, PUFF, INTERNIST/CADUCEUS, etc. Algunos
permanecen hasta hoy.

De 1975 en adelante, comienza la era de los lenguajes expertos (shells) como EMYCIN,
EXPERT, OPSS, etc. para luego tratar de que éstos sean más amigables y funcionales.

Las definiciones de Inteligencia Artificial son muchas, pero podría decirse que son
programas que realizan tareas que si fueran hechas por humanos se considerarían
inteligentes.

Estos programas obviamente corren en un computador y se usan, como por ejemplo, en
control robótico, comprensión de lenguajes naturales, procesamiento de imágenes basado
en conocimientos previos, estrategias de juegos, etc. reproduciendo la experiencia que un
humano adquiriría y de la forma en que un humano lo haría.

Para clasificar las máquinas como "pensantes", es necesario definir qué es inteligencia y
qué grado de inteligencia implica resolver problemas matemáticos complejos, hacer
generalizaciones o relaciones, percibir y comprender. Los estudios en las áreas del

Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

aprendizaje, del lenguaje y de la percepción sensorial han ayudado a los científicos a definir
a una máquina inteligente. Importantes desafíos han sido tratar de imitar el comportamiento
del cerebro humano, con millones de neuronas y extrema complejidad.

      DIFERENCIA ENTRE LA INTELIGENCIA NATURAL Y LA ARTIFICIAL

Atributos                                                        Inteligencia              Inteligencia
                                                                 Natural                   Artificial
Capacidad de usar detectores                                     Alta                       Baja
Capacidad de ser creativo                                        Alta                       Baja
Capacidad de aprender de la experiencia                          Alta                       Baja
Capacidad de adaptación                                          Alta                       Baja
Capacidad de permitirse el costo de adquirir Alta                                          Baja
experiencia
Capacidad de usar diversas fuentes de información                Alta                       Alta
Capacidad de adquirir                 una   gran   cantidad   de Alta                      Alta
información externa
Capacidad de realizar cálculos complejos                         Baja                       Alta
Capacidad de transferir información                              Baja                       Alta
Capacidad de hacer una serie de cálculos con rapidez y Baja                                Alta
exactitud

La IA tiene cuatro objetivos que alcanzar:

     •    Sistemas que piensan como humanos.
     •    Sistemas que actúan como humanos.
     •    Sistemas que piensan racionalmente.
     •    Sistemas que actúan racionalmente.

Desde el punto de vista de los objetivos, la IA puede considerarse en parte como ingeniería
y en parte como ciencia:

     •    Como ingeniería, el objetivo de la IA es resolver problemas reales, actuando como
          un conjunto de ideas acerca de cómo representar y utilizar el conocimiento, y de
          cómo desarrollar sistemas informáticos.

     •    Como ciencia, el objetivo de la IA es buscar la explicación de diversas clases de
          inteligencia, a través de la representación del conocimiento y de la aplicación que se
          da a éste en los sistemas informáticos desarrollados.

Universidad Nacional de Ingeniería.                                     Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Preguntas fundamentales de la IA.

1.   ¿Cuales son las suposiciones subyacentes acerca de la inteligencia?
2.   ¿Cuáles son las técnicas útiles para la resolución de problemas en IA?
3.   ¿A qué nivel de detalle se trata de modelar la inteligencia humana?
4.   ¿Cómo se puede saber que se ha tenido éxito en el desarrollo de un sistema inteligente?

La hipótesis del sistema físico de símbolos

Un sistema físico de símbolos está formado por un conjunto de entidades básicas (llamadas
símbolos), las cuales son patrones físicos que pueden ocurrir como componentes de otro
tipo de entidad llamada expresión o estructura de símbolos. Una estructura de símbolos está
compuesta de un número de instancias de símbolos, relacionados en alguna forma física.
Además de estas estructuras, el sistema también contiene una colección de procesos que
operan sobre las expresiones, para producir otras: procesos de creación, modificación,
reproducción y destrucción.

Un sistema físico de símbolos es una máquina que produce, a través del tiempo, una
colección evolutiva de estructuras de símbolos.

Hipótesis: Un sistema físico de símbolos tiene los medios necesarios y suficientes para
actuar en general de forma inteligente.


Importancia de la hipótesis

Representa una importante teoría acerca de la naturaleza de la inteligencia humana.

Constituye la base sobre la que se fundamenta la creencia de que es posible construir
programas que pueden realizar tareas inteligentes como las que hacen las personas.

Agentes Inteligentes.

Agente, del latín agere, es "el que hace". En el ámbito de
los negocios, un agente es "aquel que tiene por oficio
gestionar negocios ajenos".

¿Qué es un Agente Inteligente? Es todo aquello que puede
considerarse que percibe su ambiente mediante sensores y
que responde o actúa en tal ambiente por medio de
efectores. Es decir: "un tipo de programa informático que,
por encargo de un usuario u otro programa, realiza de
forma autónoma tareas que requieren cierto grado de inteligencia y aprendizaje".




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

El agente puede ser:

     •    Autónomo: Un agente autónomo es un sistema anidado y parte integrante de un
          ambiente (environment) y que detecta o percibe (percepts) datos ambientales,
          momento a momento, y actúa sobre él con la intención de usar (actions) esos datos
          para su propia tarea (task) o agenda, afectando así lo que va a detectar en el futuro,
          sin intervención de terceras partes (basado en Franklin y Greasser, 1996).

     •    Racional, que hace lo correcto, siendo "ideal" si hipoteticamente lo consigue del
          todo.- inteligente, siendo aceptable cualquiera de las numerosas definiciones de
          inteligencia, por ejemplo, capaz de aprender/adaptivo.

     •    Activo, o sea que tiene en cuenta la gama de acciones abiertas a la elección y sus
          recompensas o penalidades.

     •    Pro-activo donde más allá de actuar en respuesta a su mundo, lo hace tomando la
          iniciativa.

     •    Meta-intensivo (orientado a metas), que elige las acciones que lo conducen a la
          meta, que intenta lograr prioritariamente.

     •    Modelo-intensivo, que tiene internalizado un cierto modelo del mundo y lo respeta
          en sus acciones.

     •    Utilidad-intensivo, que se esfuerza por obtener un máximo de "felicidad".

     •    Social-intensivo o de comunicación, capaz de comunicarse en algun lenguaje de
          comunicación para agentes comprensible para otros.

     •    De planificación, parecido al agente problema-intensivo (orientado a resolver
          problemas y tomar decisiones)

     •    Softbot o sea robot basado en un software (como los robots bidimensionales de Beer
          que mimetizan a un invertebrado).

     •    Reactivo cuando percibe perturbaciones en su mundo y responde a esa percepción
          de una manera actualizada (adaptada).

     •    Reflejo o tropista, que responde de inmediato y en forma bien definida a un
          tropismo, a una percepción alarmante o beneficiosa (así un agente para el
          heliotropismo se orienta al Sol.)


La mayoría de los agentes poseen las siguientes tres características: comunicación,
inteligencia y autonomía.

Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




     •    Comunicación. El agente puede comunicarse con el usuario, con otros agentes y con
          otros programas. Con el usuario se comunica con un interfaz amigable, mediante el
          que personaliza sus preferencias. Algunos agentes permiten comunicarse en
          lenguaje natural, algo típico de los chatbots.

     •    El grado de inteligencia varía mucho de unos agentes a otros, que suelen incorporar
          módulos con tecnologías procedentes de la Inteligencia Artificial. Los más sencillos
          se limitan a recoger las preferencias del usuario, quien debe personalizarlos. Un
          ejemplo son los agentes inteligentes basados en tecnología de redes neuronales
          especializados en identificar mensajes de correo electrónico sospechosos de
          contener spam -mensajes no deseados-. En una primera fase el usuario debe
          marcarlos como spam, el agente va aprendiendo a identificar los rasgos que
          caracterizan a estos mensajes y posteriormente los filtra.

     •    Autonomía. Un agente no sólo debe ser capaz de hacer sugerencias al usuario sino
          de actuar. En el ejemplo anterior, el agente que filtra el spam no puede estar
          continuamente alertando al usuario en cada mensaje de correo que llega sobre la
          posibilidad de que sea un mensaje no deseado y su verdadera utilidad surge cuando
          elimina de forma autónoma dichos mensajes.




Ejemplos de agentes.

     •    Representante virtual.
     •    Asistentes personales (Agentes, Asistentes Financieros, Auditores.)
     •    Negociadores de mercados electrónicos (subastas.)
     •    Agentes de búsquedas de información o rastreadores de información solicitada
          (Maimai, Googlealert, Copernic, Spypress, Tracerlook, Trademarkboots, Google
          News.)
     •    Agente secreto espía, para monitorear páginas web previamente identificadas por el
          usuario e informa sobre cambios en dicha página (Changedetection, Spyweb.)

En general no se trabaja con agentes aislados sino con sistemas multi-agente, como lo
ilustra la figura.




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




De manera intrínseca, los sistemas multiagentes tienen las ventajas tradicionales en la
solución de problemas concurrente y distribuido, además de incorporar patrones de
interacción sofisticados:

     •    Cooperación: Trabajan juntos hacia un propósito común.
     •    Coordinación: Organizan las actividades para solución de problemas, de tal forma
          que las interacciones dañinas (en conflicto muto) sean evitadas; y las interacciones
          benéficas sean explotadas.
     •    Negociación: Llegan a acuerdos aceptables por todas las partes involucradas

Practique    con      el    agente  inteligente          de     inversiones           diligentdingo.
(http://www.diligentdingo.com/DDingoLatest.exe)




Existen cuatro programas de agentes:

     1.     Agente de reflejo simple.
     2.     Agente bien informado de todo lo que pasa.
     3.     Agentes basados en metas.
     4.     Agentes basados en utilidad.

Los ambientes poseen las siguientes propiedades:

     1.     Accesibles y no accesibles: Si el aparato sensorial de un agente le permite tener
            acceso al estado total de un ambiente, se dice que este es accesible a tal agente.




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     2.     Determinísticos y no determinísticos: Si el estado siguiente de un ambiente se
            determina completamente mediante el estado actual y las acciones escogidas por
            los agentes, se dice que el ambiente es determinista.

     3.     Episódicos y no episódicos: La experiencia del agente se divide en episodios.
            Cada episodio consta de una gente que percibe y actúa, la calidad de su actuación
            dependerá del episodio mismo (Para los ambientes episódicos).

     4.     Estáticos y dinámicos: Si existe la posibilidad de que el ambiente sufra
            modificaciones mientras el agente se encuentra deliberando se dice que el ambiente
            se comporta en forma dinámica en relación con el agente.

     5.     Discretos y continuos: Si existe una cantidad limitada de percepciones y acciones
            distintas y claramente discernibles, se dice que el ambiente es discreto.




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


1.4. ALCANCE DE LA INTELIGENCIA ARTIFICIAL.




Como se menciono anteriormente, no existe una definición universalmente aceptada de IA,
pero existen los procesos que generalmente pueden ser llamados IA si son programados en
una computadora. La lista no es exhaustiva, pero se abordan las áreas principales

a) Percepción:




Las maquinas serán capaces de reaccionar a su entorno e influenciarlo mediante sensores y
dispositivos de interacción con el exterior. Podemos señalar las percepciones de la vista, la
audición y el tacto. La visión ya se ha llevado a cabo en una escala limitada mediante
aparatos de televisión y dispositivos para la percepción de imágenes sintetizadores que
permiten al ordenador comunicarse mediante audición del lenguaje hablado en la salida y
no escrito como se ha hecho hasta ahora, con el uso de pantallas o impresoras. Algunos de
los progresos conseguidos con el desarrollo de circuitos integrados permitirán al
computados aceptar órdenes y datos especializados, también mediante la utilización del
lenguaje hablado.


b) Sistemas expertos.                 Sistema experto, tipo de programa de aplicación
                                      informática que adopta decisiones o resuelve
                                      problemas de un determinado campo, como las
                                      finanzas o la medicina, utilizando los conocimientos y
                                      las reglas analíticas definidas por los expertos en dicho
                                      campo.



Para algunas personas los términos IA y sistemas expertos son sinónimos. Muchos de los
sistemas expertos existentes actualmente consisten en grandes bases de conocimientos,
creadas para almacenar la información de que se dispone expertos humanos en varios
campos y a las que se aplica una serie de reglas de manipulación expresadas en lenguajes
específicos. La diagnosis medica, la ingeniería química, la exploración geológica y el


Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

diseño de computadoras han proporcionado material para el diseño de sistemas expertos de
gran éxito.

Con el nacimiento de la Revolución Industrial, muchas fábricas tuvieron gran aceptación
por la automatización de procesos repetitivos en la línea de ensamblaje. La automatización

Los sistemas expertos, tienen dos elementos básicos y separados, aunque relacionados: una
base de conocimientos y una máquina de deducción, o de inferencia. La base de conocimientos
proporciona hechos objetivos y reglas sobre el tema, mientras que la máquina de deducción
proporciona la capacidad de razonamiento que permite al sistema experto extraer conclusiones.

consiste, principalmente, en diseñar sistemas capaces de ejecutar tareas repetitivas hechas
por los hombres, y capaces de controlar operaciones sin la ayuda de un operador humano.
El término automatización también se utiliza para describir a los sistemas programables que
pueden operar independientemente del control humano. La mayoría de las industrias has
sido automatizadas o utilizan tecnología para automatizar algunas labores; en la industria de
la telefonía, marcación, transmisión y facturación esta completamente automatizados.

Pero no todas las industrias requieren el mismo grado de automatización. La agricultura es
una industria difícil de automatizar, y con esto se ha vuelto más mecanizada, esencialmente
en el procesamiento y empaque de comida. De manera similar, los doctores pueden dar
consulta asistiéndose en una computadora, pero finalmente el doctor, y no la computadora,
termina por dar el diagnóstico final al paciente.

Los robots comenzaron a aparecer en este proceso de automatización industrial hasta la
aparición de las computadoras en los 40’s. Estos robots computarizados, están equipados
con pequeños microprocesadores capaces de procesar la información que le proveen los
sensores externos y así es como el robot puede tomar cambiar o mantener una operación en
ejecución, a esto se le llama retroalimentación, y forma parte de la Cibernética. La
retroalimentación es esencial en cualquier mecanismo de control automático, ya que ayuda
a controlar los factores externos que le afecten en la correcta ejecución de sus operaciones
normales.




     c) Hardware para la IA.

El diseño tradicional de hardware no ha conseguido alcanzar, en gran medida el fin
propuesto por la IA. Las técnicas de IA requieren acceso rápido a bancos de memoria,
enormes según los estándares tradicionales y, por tanto, las velocidades de proceso son
demasiado lentas para las aplicaciones más exigentes. La antigua idea de solucionar un
problema paso a paso mediante la ejecución de una secuencia de instrucciones esta
cediendo al paso a la idea del procesamiento en paralelo, en el cual un conjunto de
procesadores trabajan simultáneamente en la diferentes partes del problema.


Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Según otros rumbos tomados se propone la inclusión de compiladores en hardware más que
en software, y la obtención de un microcódigo para procesadores en un lenguaje lógico
como el Prolog.

                                      d) Robótica



                           La ciencia de la robótica implica diferentes técnicas de IA. La idea
                          de un robot "listo" con la capacidad de aprender por experiencia es
                          el tema central de teorías e investigaciones en IA. El robot debe ser
capaz de comunicarse en lenguaje natural y debe poder realizar tareas que requieran que el
equivalente a la iniciativa y la originalidad, esto implica que el robot debe llegar a realizar,
tras un periodo de aprendizaje cosas para las cuales no estaba inicialmente programado, a
diferencia de los robots que se utilizan actualmente en la aplicación industrial, los cuales no
son más que meros autómatas.

La idea global en la inteligencia artificial estuvo desacreditada durante varios años debido
parcialmente, al excesivo optimismo por parte de la primera teoría pero, mayormente
causado por la exageración y el sensacionalismo de algunos de sus divulgadores.

Los primeros robots creados en toda la historia de la humanidad, no tenían más que un solo
fin: entretener a sus dueños. Estos inventores se interesaban solamente en conceder los
deseos de entretener a quien le pedía construir el robot. Sin embargo, estos inventores se
comenzaron a dar cuenta de que los robots podían imitar movimientos humanos o de alguna
criatura viva. Estos movimientos pudieron ser mecanizados, y de esta manera, se podía
automatizar y mecanizar algunas de las labores más sencillas de aquellos tiempos.

                         El origen del desarrollo de la robótica, se basa en el empeño por
                         automatizar la mayoría de las operaciones en una fábrica; esto se remonta
                         al siglo XVII en la industria textil, donde se diseñaron telares que se
                         controlaban con tarjetas perforadas.


                         Isaac Asimov formuló sus geniales "Tres Leyes de la Robótica":

1. "Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser humano
   sufra daño."
2. "Un robot debe obedecer las órdenes que le son dadas por un ser humano, excepto
   cuando etas órdenes están en oposición con la primera Ley."
3. "Un robot debe proteger su propia existencia, hasta donde esta protección no esté en
   conflicto con la primera o la segunda Leyes."




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



                                      Cronología de la Robótica.
FECHA             DESARROLLO

SigloXVIII.       A mediados del J. de Vaucanson construyó varias muñecas mecánicas de tamaño
                  humano que ejecutaban piezas de música

1801              J. Jaquard invento su telar, que era una máquina programable para la urdimbre

1805              H. Maillardet construyó una muñeca mecánica capaz de hacer dibujos.

1946              El inventor americano G.C Devol desarrolló un dispositivo controlador que podía
                  registrar señales eléctricas por medio magnéticos y reproducirlas para accionar un
                  máquina mecánica. La patente estadounidense se emitió en 1952.

1951              Trabajo de desarrollo con teleoperadores (manipuladores de control remoto) para
                  manejar materiales radiactivos. Patente de Estados Unidos emitidas para Goertz
                  (1954) y Bergsland (1958).

1952              Una máquina prototipo de control numérico fue objetivo de demostración en el
                  Instituto Tecnológico de Massachusetts después de varios años de desarrollo. Un
                  lenguaje de programación de piezas denominado APT (Automatically Programmed
                  Tooling) se desarrolló posteriormente y se publicó en 1961.

1954              El inventor británico C. W. Kenward solicitó su patente para diseño de robot. Patente
                  británica emitida en 1957.

1954              G.C. Devol desarrolla diseños para Transferencia de artículos programada. Patente
                  emitida en Estados Unidos para el diseño en 1961.

1959              Se introdujo el primer robot comercial por Planet Corporation. estaba controlado por
                  interruptores de fin de carrera.

1960              Se introdujo el primer robot ‘Unimate’’, basada en la transferencia de articulaciones
                  programada de Devol. Utilizan los principios de control numérico para el control de
                  manipulador y era un robot de transmisión hidráulica.

1961              Un robot Unimate se instaló en la Ford Motors Company para atender una máquina
                  de fundición de troquel.

1966              Trallfa, una firma noruega, construyó e instaló un robot de pintura por pulverización.

1968              Un robot móvil llamado ‘Shakey’’ se desarrollo en SRI (standford Research Institute),
                  estaba provisto de una diversidad de sensores así como una cámara de visión y
                  sensores táctiles y podía desplazarse por el suelo.

1971              El ‘Standford Arm’’, un pequeño brazo de robot de accionamiento eléctrico, se
                  desarrolló en la Standford University.

1973              Se desarrolló en SRI el primer lenguaje de programación de robots del tipo de
                  computadora para la investigación con la denominación WAVE. Fue seguido por el
                  lenguaje AL en 1974. Los dos lenguajes se desarrollaron posteriormente en el
                  lenguaje VAL comercial para Unimation por Víctor Scheinman y Bruce Simano.

1974              ASEA introdujo el robot Irb6 de accionamiento completamente eléctrico.

1974              Kawasaki, bajo licencia de Unimation, instaló un robot para soldadura por arco para
                  estructuras de motocicletas.

Universidad Nacional de Ingeniería.                                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


1974              Cincinnati Milacron introdujo el robot T3 con control por computadora.

1975              El robot ‘Sigma’’ de Olivetti se utilizó en operaciones de montaje, una de las
                  primitivas aplicaciones de la robótica al montaje.

1976              Un dispositivo de Remopte Center Compliance (RCC) para la inserción de piezas en
                  la línea de montaje se desarrolló en los laboratorios Charles Stark Draper Labs en
                  estados Unidos.

1978              El robot T3 de Cincinnati Milacron se adaptó y programó para realizar operaciones
                  de taladro y circulación de materiales en componentes de aviones, bajo el patrocinio
                  de Air Force ICAM (Integrated Computer- Aided Manufacturing).

1978              Se introdujo el robot PUMA (Programmable Universal Machine for Assambly) para
                  tareas de montaje por Unimation, basándose en diseños obtenidos en un estudio de
                  la General Motors.

1979              Desarrollo del robot tipo SCARA (Selective Compliance Arm for Robotic Assambly)
                  en la Universidad de Yamanashi en Japón para montaje. Varios robots SCARA
                  comerciales se introdujeron hacia 1981.

1980              Un sistema robótico de captación de recipientes fue objeto de demostración en la
                  Universidad de Rhode Island. Con el empleo de visión de máquina el sistema era
                  capaz de captar piezas en orientaciones aleatorias y posiciones fuera de un
                  recipiente.

1981              Se desarrolló en la Universidad de Carnegie- Mellon un robot de impulsión directa.
                  Utilizaba motores eléctricos situados en las articulaciones del manipula dor sin las
                  transmisiones mecánicas habituales empleadas en la mayoría de los robots.

1982              IBM introdujo el robot RS-1 para montaje, basado en varios años de desarrollo
                  interno. Se trata de un robot de estructura de caja que utiliza un brazo constituido por
                  tres dispositivos de deslizamiento ortogonales. El lenguaje del robot AML,
                  desarrollado por IBM, se introdujo también para programar el robot SR-1.

1983              Informe emitido por la investigación en Westinghouse Corp. bajo el patrocinio de
                  National Science Foundation sobre un sistema de montaje programable adaptable
                  (APAS), un proyecto piloto para una línea de montaje automatizada flexible con el
                  empleo de robots.

1984              Robots 8. La operación típica de estos sistemas permitía que se desarrollaran
                  programas de robots utilizando gráficos interactivos en una computadora personal y
                  luego se cargaban en el robot.




     e) Cibernética.

 La cibernética es una ciencia interdisciplinaria, tratando con sistemas de comunicación y
control sobre organismos vivos, máquinas u organizaciones. El término es una derivación
del vocablo griego kybernetes que significa gobernador o piloto, y fue aplicado por primera
vez en 1948 a la teoría del control de mecanismos por el matemático americano Norbet
Wiener.


Universidad Nacional de Ingeniería.                                     Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



En el cuerpo humano, el cerebro y el sistema nervioso funcionan para coordinar la
información, la cual es utilizada para determinar el futuro curso de una acción; controlar los
mecanismos para la auto corrección en máquinas que sirven con un propósito similar. Este
principio es conocido como retroalimentación, el cual es fundamental en el concepto de
automatización.

La cibernética también se aplica al estudio de la psicología, servomecanismo, economía,
neuropsicología, ingeniería en sistemas y al estudio de sistemas sociales, el término
cibernética no es muy utilizado para describir por separado a un campo de estudio, y
muchas de las investigaciones en el campo ahora se centran en el estudio y diseño de redes
neuronales artificiales.

                            1.3 ALGUNOS PROGRAMAS DE IA.
                            a) El programa ELIZA


Casi cada publicación famosa en la IA menciona el programa ELIZA que fue escrito a
finales de los sesenta por el profesor Joseph Weizenbaum de Massachusetts Institute of
Technology (MIT). El programa fue diseñado como una ayuda al análisis del lenguaje y el
profesor J. W. Lo llamo así en honor a la muchacha que aparece en la obra de G. B. Shaw,
que comenzó como una vendedora callejera de flores y su vida se transformo cuando el
profesor de dicción le enseño a hablar un correcto ingles, quien asumió esta tarea como
parte de una apuesta.

Un elemento muy importante del mensaje de Shaw era que aunque Eliza continuaba siendo
la misma persona, con las misma virtudes y defectos antes y después de su transformación,
la gente la veía de un manera deferente, como una señorita bien vestida y con un acento
culto, en contraste con la desastrada vendedora de flores que hablaba de una forma vulgar.
Podemos obtener la moraleja de esta historia y observar que aunque un programa sea muy
complejo la computadora sigue siendo una acumulación inanimada de dispositivos
electrónicos y que, aunque algunos de los resultados puedan ser sorprendentes la maquina
es capaz de ejecutar únicamente las tareas para las cuales fue exactamente programada y
nada más.

                               b) El programa MYCIN


                               La especialización de cualquier actividad requiere un gran
                               conocimiento asociado. El proceso para poder practicar una cierta
                               actividad depende de la asimilación de este conocimiento.

Un conjunto de hechos constituyen una gran parte del conocimiento básico sobre un tema,
pero son igualmente importantes la destreza que se puede adquirir con la experiencia, las
ideas generales en algunos casos acerca de lo que es una buena practica y el arte de tomar

Universidad Nacional de Ingeniería.                                Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

un decisión acertada basándose en información incompleta. Esto resulta tan importante para
el aprendizaje de cualquier materia o para que el estudiante de cualquier ciencia adquiera
los aspectos sutiles del tema, como aprender las premisas básicas.

En la creación de un sistema experto hay una parte bastante inmediata de codificación de
los hechos conocidos sobre un tema; la parte más difícil, conocida como modelación de la
maestría, consiste en la formulación y aplicación de reglas extraídas de la experiencia que
se posee en el tema. En cualquiera de los casos el sistema esta constituido por una base de
conocimientos que proporcionan los hechos y un motor de inferencia para desarrollar las
deducciones lógicas y tomar decisiones (algunas veces acompañadas de un porcentaje de
probabilidad acerca de la corrección de las deducciones), basadas en los hechos y reglas
conocidas.

El programa MYCIN publicado por E. Schortcliffe en 1976 es un sistema que diagnostica
enfermedades infecciosas, en particular infecciones sanguíneas. MYCIN lo usan médicos
en prácticas para obtener ayuda en sus diagnósticos, a su vez el sistema se actualiza con los
hechos y reglas de inferencia que proporcionan los especialistas.


                                      c) El programa DENDRAL


                                  DENDRAL es un programa experto de análisis químico y
se ha aplicado con mucho éxito en muchos lugares del mundo. DENDRAL soluciona un
problema de ingeniería química en tres fases. En primer lugar, el programa infiere cualquier
posible restricción sobre la solución basándose en el conocimiento que posee en su base de
datos. A continuación permite a los usuarios añadir cualquier otro tipo de restricción y
finalmente genera y comprueba una lista de posibles soluciones, que imprime en orden de
preferencia. DENDRAL se escribió originalmente en LIPS, pero ha sido reprogramado para
ser usado en varias maquinas diferentes de entre las que se destaca la implementación
realizada sobre un PDP-10 en Edimburgo. Este programa basado en la estrategia de
"planificar, generar y comprobar" se usa en las universidades y en las industrias de Estados
Unidos y en Europa y representa una de las aplicaciones prácticas de la IA que mas éxito ha
conseguido de entre las desarrolladas hasta la fecha.


                    1.5. EL PROYECTO JAPONÉS DE LA QUINTA
                    GENERACIÓN.

La investigación y el desarrollo japonés de nueva tecnología están dirigidos por la unión de
la industria y el gobierno en el instituto para la nueva generación de Tecnología de
computadoras (ICOT). La investigación se desarrolla principalmente en tres campos:
hardware, software y aplicaciones. Los investigadores en el campo del hardware están
concentrados en una arquitectura de computadoras que se caracteriza por la inferencia
secuencial, inferencia en paralelo y el desarrollo de maquinas para bases de datos afines.
Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



El grupo de software esta investigando sobre un lenguaje que sea el núcleo del proyecto,
esté incluye sistema operativo, lenguaje natural y representación del conocimiento. El
tercer grupo combina los resultados de los dos primeros grupos en la labor sobre sistemas
de gestión de bases de datos afines y sistemas expertos y para conseguir validar la teoría
propuestas por el resto del grupo.

En contraste en las aproximaciones que se han realizado en otras partes del mundo, los
japoneses están tratando de formular una nueva teoría unificada para todo el campo de
representación y procesamiento de la información. Ya hemos visto que existen numerosas
aproximaciones diferentes que pueden asimilarse a las diferentes ramas de la IA, pero solo
si se aceptan estas aproximaciones incluyéndolas en una estrategia global, el número de
opciones se reducirá y los japoneses creen que de este modo aumentarán las oportunidades
para lograr una estrategia global coherente.

El mayor logro desarrollado en los primeros cuatro años del proyecto ha sido una maquina
basada en el conocimiento y que ha sido llamada Delta que comprende un sistema de
inferencia, un sistema de conocimiento, un sistema de software y un sistema para el
desarrollo de prototipos de software.

                                          Las maquinas para bases de datos afines tienen
                                          acceso a algo así como unos 20 gigabytes de
                                          almacenamiento y en las etapas iniciales se
                                          encontraron algunos problemas debido al uso de
                                          las maquinas convencionales que se basan en un
                                          procesamiento secuencial y que se incluyeron
                                          como compromiso con la reconocida necesidad
                                          de efectuar un procesamiento en paralelo a gran
                                          escala. Se estima que las maquinas de inferencia
                                          que se necesitan al final del proyecto deberán
                                          ser capaces de ejecutar 10 LIPS y esta potencia
                                          de procesamiento sólo será proporcionada por el
                                          equivalente de 1000 procesadores trabajando en
                                          paralelo.




Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



SEGUNDA UNIDAD:

REPRESENTACIÓN DEL CONOCIMIENTO
2.1. Formalismos para la representación del conocimiento: listas y árboles, redes
    semánticas, frames, scripts.


2.2. Fundamentos lógicos en inteligencia artificial: Lógica proposicional y de predicados.
    Sistemas conjuntivos, Forma de Skolen

2.3.Inferencia

     a) Reglas de producción.
     b) Cláusulas de Horn.


Introducción.
Desde el punto de vista de ingeniería, la mayor parte del trabajo requerido para construir sistemas
de IA, está basado en el desarrollo de adecuadas representaciones de conocimiento y sus
correspondientes estrategias de manipulación. No se puede manipular conocimiento a menos
que esté adecuadamente representado. En consecuencia, las siguientes tres preguntas claves
pueden guiarnos en el estudio de la IA.

     •    ¿Qué es el conocimiento?
     •    ¿Cómo se puede representar el conocimiento?
     •    ¿Cómo se podría manipular el conocimiento?

A continuación, se dan respuestas parciales a estas preguntas planteadas. En los capítulos
posteriores se presenta un estudio más formal y detallado acerca del conocimiento, su
representación y manipulación.

Conocimiento
Puede ser definido como el conjunto de hechos y principios acumulados por la humanidad, o el
acto, hecho o estado de conocer. Es la familiaridad con el lenguaje, conceptos, procedimientos,
reglas, ideas, abstracciones, lugares, costumbres y asociaciones, unida a la habilidad de utilizar
estas nociones en forma efectiva para modelar diferentes aspectos del universo que nos rodea.

Los conceptos de conocimiento e inteligencia están íntimamente ligados. La inteligencia requiere
de la posesión y acceso al conocimiento. Conocimiento no debe ser confundido con datos o
información. El conocimiento incluye y requiere del uso de datos e información. Además, combina
relaciones, dependencias, y la noción del saber con datos e información.

A veces es también útil o más aun necesario distinguir entre conocimiento y otros términos como
creencia e hipótesis.

Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Esencialmente, se define como creencia a toda expresión que tiene significado, que es coherente
y puede ser representada. En consecuencia una creencia puede ser verdadera o falsa. Hipótesis
se define como una creencia justificada que no se conoce sea verdadera. Una hipótesis es una
creencia que está respaldada por cierta evidencia, pero todavía puede resultar falsa. Finalmente,
se puede también decir que conocimiento es una creencia justificada como verdadera.

Otros términos relacionados con el conocimiento y que son ocasionalmente empleados son
epistemología y metaconocimiento. Epistemología es el estudio de la naturaleza del conocimiento,
mientras que metaconocimiento es conocimiento acerca del conocimiento, esto es, conocimiento
acerca de lo que se conoce.

El conocimiento puede ser de tipo procedimental, declarativo o heurístico. Conocimiento
procedimental es aquel conocimiento compilado que se refiere a la forma de realizar una cierta
tarea (el saber como hacerlo). Por ejemplo, los pasos necesarios para resolver una ecuación
algebraica son expresados como conocimiento procedimental.

Por otro lado, el conocimiento declarativo es conocimiento pasivo, expresado como sentencias
acerca de los hechos del mundo que nos rodea (el saber que hacer). La información personal en
una base de datos es un típico ejemplo de conocimiento declarativo. Tales tipos de datos son
piezas explícitas de conocimiento independiente.

El conocimiento heurístico es un tipo especial de conocimiento usado por los humanos para
resolver problemas complejos. El adjetivo heurístico significa medio para descubrir. Está
relacionado con la palabra griega heuriskein que significa descubrir, encontrar. Se entiende por
heurístico a un criterio, estrategia, método o truco utilizado para simplificar la solución de
problemas. El conocimiento heurístico usualmente se lo adquiere a través de mucha experiencia.

El proceso de organizar y coleccionar el conocimiento es llamado ingeniería del
conocimiento. Es tal vez la parte más difícil y la que consume más tiempo en cualquier
proceso que desarrolla software de IA.

Dado que el conocimiento es importante y primordial para el comportamiento inteligente, su
representación constituye una de las máximas prioridades de la investigación en IA. El
conocimiento puede ser representado como imágenes mentales en nuestros pensamientos, como
palabras habladas o escritas en algún lenguaje, en forma gráfica o en imágenes, como cadenas de
caracteres o colecciones de señales eléctricas o magnéticas dentro de un computador. En nuestro
estudio de IA, consideraremos las representaciones escritas y sus correspondientes estructuras de
datos utilizadas para su almacenamiento en un computador. La forma de representación que se
escoja dependerá del tipo de problema a ser resuelto y de los métodos de inferencia disponibles.

Existen diferentes esquemas de representar el conocimiento, abordaremos algunas formas
de representarlo y aplicarlo de una manera adecuada para su manipulación en
computadoras.

Los esquemas de representación del conocimiento han sido categorizados como
declarativos o procedimentales. Los métodos de representación declarativos se usan para
representar factores y aserciones; y un esquema de representación procedimental trata con
acciones descritas paso a paso para llegar a un resultado final.

Los métodos de representación del conocimiento declarativos incluyen lógica, listas,
árboles, redes semánticas, marcos y libretos.

Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




En términos generales, se debe tratar que el conocimiento esté representado de tal forma que:

     •    Capture generalizaciones.
     •    Pueda ser comprendido por todas las personas que vayan a proporcionarlo y procesarlo.
     •    Pueda ser fácilmente modificado.
     •    Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o
          completo.
     •    Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería
          considerarse para buscar soluciones.

El conocimiento declarativo puede ser representado con modelos relacionales y esquemas
basados en lógica. Los modelos relacionales pueden representar el conocimiento en forma de
árboles, grafos o redes semánticas. Los esquemas de representación lógica incluyen el uso de
lógica proposicional y lógica de predicados.

Los modelos procedimentales y sus esquemas de representación almacenan conocimiento en la
forma de cómo hacer las cosas. Pueden estar caracterizados por gramáticas formales, usualmente
implantadas por sistemas o lenguajes procedimentales y sistemas basados en reglas (sistemas de
producción).

Las representaciones declarativas son usualmente más expansivas y costosas, en el sentido que
la enumeración puede ser redundante e ineficiente. Sin embargo, la modificación de las
representaciones declarativas es usualmente muy fácil; simplemente se agrega o se elimina
conocimiento. Las representaciones procedimentales, en cambio, pueden ser más compactas,
sacrificando flexibilidad. Representaciones prácticas pueden incluir elementos tanto declarativos
(listado de hechos conocidos), como procedimentales (un conjunto de reglas para manipular los
hechos).




Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




Manipulación del conocimiento

Existen tres paradigmas que los investigadores han utilizado tradicionalmente para la resolución de
problemas de IA:

     •    Programación Heurística.- Está basado en el modelo de comportamiento humano y su
          estilo para resolver problemas complejos. Existen diversos tipos de programas que
          incluyen algoritmos heurísticos. Varios de ellos son capaces de aprender de su
          experiencia.
     •    Redes Neuronales Artificiales.- Es una representación abstraída del modelo neuronal del
          cerebro humano. Las redes están formadas por un gran número de elementos simples y
          por sus interconexiones. Una red neuronal artificial puede ser simulada o ser real. Al
          elemento procesador de la red, se lo denomina neurona artificial.
     •    Evolución Artificial.- Su modelo está basado en el proceso genético de evolución natural,
          propuesto por Charles Darwin. Se utilizan sistemas simulados en computador que
          evolucionan mediante operaciones de reproducción, mutación y cruce (Algoritmos
          Genéticos).

Cada paradigma comprende una colección de métodos, configuraciones y técnicas desarrolladas
para manipular el conocimiento. En general, una técnica de IA está caracterizada por incluir los
siguientes componentes:

     •    Procesos de Búsqueda.- Proporciona una forma de resolver problemas para los cuales no
          hay un método más directo, así como también se constituye en un marco de trabajo dentro
          del cual cualquier técnica directa puede ser incorporada.
     •    Uso del Conocimiento.- Proporciona una forma de resolver problemas



FUNDAMENTOS LÓGICOS EN INTELIGENCIA ARTIFICIAL

Tal vez la forma más antigua de representar el conocimiento es la lógica. Esta trata el
estudio científico de los procesos de razonamientos, de sistemas de reglas y procedimientos
que ayudan al pensamiento adecuado. La lógica es considerada una subdivisión de la
filosofía, su desarrollo y el refinamiento de sus procesos son generalmente acreditados a los
griegos.

La forma general de cualquier proceso lógico consiste de información dada, juicios hechos
o de observaciones que son notadas; esto constituye las entradas al proceso lógico y son
llamadas premisas. Las premisas son empleadas por el procesamiento lógico para crear las
salidas que constituyen las conclusiones llamadas inferencias. Esto constituye hechos que
son conocidos como verdaderos y pueden ser usados para derivar nuevos hechos que
también deben ser verdaderos.




Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




FORMALISMOS PARA REPRESENTAR DEL CONOCIMIENTO

LISTAS Y ÁRBOLES
Son las estructuras más sencillas que se usan para representar un conocimiento jerárquico.
Listas: Una lista es una serie de elementos del mismo tipo.

Ejemplo:
   a) [Juan, Roberto, Ana, Inés ]: Lista de personas.
   b) [caramelos, galletas, bombones]: Cosas que se compran en una miscelánea.
   c) [clavos, bloques, cemento]: Productos de construcción.

                                  Lista 1
                                  Cuadernos
                                  Libros
                                  Escritorio                 Escritorio
  Libros                                                     Madera
  Filosofía                                                  Metal
  Matemáticas                                                                            Madera
  Historia                                                                               Caoba
                                                                                         Pino
                               Representación gráfica y jerárquica de una lista.

Árbol: Es una forma sencilla de ilustrar las listas y otros tipos de conocimiento jerárquicos.
Ejemplo:




    Los nodos están representados por los círculos y las líneas que los unen son los arcos.

REDES SEMÁNTICAS

Es la representación esquemática del conocimiento mediante descripciones graficas que
muestra una jerarquía relacional entre objetos. Se le denomina nodo a la representación de
elementos del dominio y se muestran como rectángulos o círculos y son rotulados con los
nombres de los elementos representados; y se denominan arcos a los enlaces desde un
nodo a otro, se representan como un vector y se rotula con el nombre de las relaciones
representadas.

Universidad Nacional de Ingeniería.                                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




Nodo = objeto

Donde un Objeto puede ser representado por:
      1. Personas
      2. Animales
      3. Eventos
      5. Acciones
      6. Conceptos
      7. Atributos o características que identifican a un objeto.

Existen ciertos tipos de Arcos típicos entre los cuales están.

1. ISA (Es-un): El cual usa para identificar que un cierto pertenece a una clase mayor de
objeto.

      Ser _humano                Es un   Hombre   Es un          Manuel

2. HAVE-a (tiene-un), este tipo de arcos se utiliza para identificar que un cierto nodo tiene
o pase una cierta características o atributo o propiedad. También se puede utilizar para
representar situaciones, acciones y eventos.




Propiedades de las Redes Semánticas

Las redes Semánticas posen la propiedad de la Herencia; en la que unos nodos heredaron
las propiedades o atributos de Nodos de una clase mayor. Así por ejemplo en las siguientes
Red Semántica:




Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




Nota: A través de la característica de la herencia, las Redes Semánticas tienen la capacidad
de inferir conocimiento.


Ejemplo de Red Semántica.




Considera la anterior Red Semántica acerca de SAM y su familia.
1. Necesita Sam Alimento
   Si, por la herencia que recibe de los seres humanos.
2. Trabaja SAM para AJAX
   Si por característica o por propiedades de herencia ya que CME pertenece AJAX.

Nota: En Redes Semánticas las inferencias de información o respuestas o preguntas se
hacen con base en las propiedades de herencia que existen entre los Nodos.




Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

                                              Ejemplo de Red Semántica: Roedor.




                                                                  Es_un
                                                                   Es_un
                                              Ejemplo de Red Semántica: Lassie.
                                                                  Tiene un




                                                                             Ti
                                                             de                en
                                                                                    e
                                                        po                              un
                                                      Ti
                                      tiene




Universidad Nacional de Ingeniería.                                                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

                                      Ejemplo de Red Semántica: Animal.




                                                           puede
                                      Ti                                     Ti
                                 de      po                                    po
                            po                de                                    de
                         Ti




                     s
                  ata    vo


                                                                   come
                                                   tiene



              p               lar
           ne
        Tie




Universidad Nacional de Ingeniería.                                       Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



                                      Ejemplo de Red Semántica: Animal2.

                                                                      ANIMAL
                             Es del tipo                                                              Es del tipo
                                                 respira                                 come
                                                              tiene
                                                                      Esta formado por




                                             Aire             Masa           Miembros     Alimentos




                              PAJARO             puede                Alas                            PERSONA



         Es del tipo          Está formado por                                                        Está formado por
                                                                            Un
                                                                       Representante
                   Plumas                    Alas                           de             Piernas                  Brazos



                       CANARIO             Un representante
                                                                                                      ARTURO

                         color                                                                        Trabaja en

                        Amarillo                     Piolín                                             NASA


Un animal come alimento,
respira aire, tiene masa y
está formado por miembros.
Una persona es del tipo
animal, la cual hereda todas
las características antes
descritas del animal. Así
también       tenemos     la
posibilidad de detallar más
sus cualidades como que
tiene piernas y brazos.




Universidad Nacional de Ingeniería.                                                      Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




Ejercicios:

Dado el siguiente conocimiento construya la correspondiente Red Semántica.

- Los Jorobados son personas pequeñas.
- Bilbo es un jorobado.
- Los jorobados tienen dedos gordos.
- Bilbo posee un anillo mágico.
- El anillo fue encontrado en una cueva.
- Los jorobados son personas míticas y las personas míticas son estudiadas por los
estudiantes de literatura.




1. ¿Qué posee Bilbo? Un anillo mágico.




Universidad Nacional de Ingeniería.                       Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



FRAMES (MARCOS)

Un Frames es una estructura de datos que contiene todo el conocimiento acerca de un
objeto. Los Frames son organizados en forma jerárquica y esta característica es utilizada
como medio para responder a Preguntas. Los Frames surgieron de la pregunta orientada a
objetos. Cada frames describe un objeto en particular. Por lo tanto cada frames me
representa una estructura de conocimiento en la cual se esta describiendo a un objeto, un
evento o una situación ó cualesquier otro elemento. En los frames se describe el
conocimiento acerca de un objeto utilizado SLOTS (Ranuras).

Representación del conocimiento en una jerarquía de frames que heredan propiedades de
frames del nivel superior.

Modo de transporte



     Carro Ranura


                                          Generalidades
                                      Auto Ranura
                                          del carro
                                                                    Motor Ranura



                                                          Especificaciones del Automóvil

Tipos de SLOTS en los Frames

     1. Hay Slot para describir Conocimiento Declarativo como lo es:

          - Peso de un Objeto.
          - La Altura
          - La forma
          - El color
          - Hobbies (leer, nadar, trotar)

     2. Hay slots para describir conocimiento procedural (el cual se refiere a pequeños
        procesos que me identifica a ciertas funciones).Ejemplo: Velocidad, aceleración,
        trabajo, cálculo de energía, etc.


Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     3. Que identifican a las Reglas.
        Ejemplo:

           If máquina caliente THEN prender ventilador.

     4. Un Slot puede indicar la conexión con otro FRAME

     5. Un Slot puede indicar la conexión con otros frame de representación de
        conocimiento como lo son con las Redes Semánticas.


FRAME de un Auto.
    -Clase; transportación
    -Nombre del fabricante; Audi
    -Origen del fabricante

Nota: Una de las características de los frames es que un frame puede identificar a toda una
familia de objetos.


SCRIPT (LIBRETO)


Este tipo de Representación de conocimiento es utilizado para representar secuencias de
EVENTOS de tipo:

          - Historias                   Visitas al:
          - Dramas                      - Doctor.
          - Visitas                     - Restaurante
          - Viajes                      - Museo, etc.
          - Estética


En los SCRIPTS o libretos intervienen elementos básicos como lo son:

1. Requerimientos de Entrada.
2. Roles o papeles de las personas o cosas que intervienen en el libreto.
3. Herramientas utilizadas por los diferentes participantes o actores.
4. Escenas.
5. Resultados.




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Ejemplo 1. SCRIPT correspondiente a una visita al Restaurante de Auto-Servicio.

Requerimiento de Entrada:
- Hay un cliente que tiene hambre.
- El cliente tiene dinero.

Herramientas que intervienen:
- carro                               - mostrador
- dinero                              - palillos
- bandeja                             - sal
- bote de basura                      - cuchillo
- alimentos                           - tenedor
- catsup                              - cuchara
- servilletas                         - mesa

Roles o Papeles:
 - Hay un cliente (C)
- Recepcionista (R)

Escena 1: Entrada al Restaurante.
- El cliente para el carro.
- El (C) entra al Restaurante.
- El (C) hace fila en el mostrador.
- El (C) mira los distintos alimentos en la pared y decide cuales seleccionar.

Escena 2: Ordenar.
- El cliente lea la orden al (R).
- El (R) comienza a poner los alimentos a la bandeja.
- El (C) paga la orden.

Escena 3: Comer.
- El cliente toma servilletas, cuchillo, tenedor, cuchara, sal, palillos y salsa de tomate.
- El (C) busca mesa.
- El cliente consume los alimentos.

Escena 4: Salida.
- Recoge la basura de la mesa.
- Vacía el contenido de la vasija en el bote de la basura.
- Sale del restaurante.
- Toma su carro.
- Se va.

Resultados:
 - Cliente ya no tiene hambre.
- El (C) tiene menos dinero.
- El (C) esta satisfecho.
- El (C) no esta satisfecho.
- El (C) trae dolor de estomago.


Universidad Nacional de Ingeniería.                                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Ejemplo 2. SCRIPT correspondiente a una visita al cine.

• PAPELES: cinéfilo, taquillero, portero, acomodador
• CONDICIONES DE ENTRADA: cinéfilo desea ver película
• PROPIEDADES O HERRAMIENTAS: película, butaca, dinero, entrada
• ESCENAS:

-Sacar entrada
       Cinéfilo: Deme butaca” a taquillero
       Cinéfilo: Dinero a taquillero
       Taquillero: Entrada a cinéfilo

-Entrar en sala
       Cinéfilo: Entrada a portero
       Portero: Entrada a cinéfilo
       Cinéfilo: Cinéfilo a sala

-Acomodarse ...................


-Ver película ..................


-Salir de sala ..................


• RESULTADOS:

-Cinéfilo ha visto la película
-Taquillero tiene más dinero
-Cinéfilo tiene menos dinero.




Universidad Nacional de Ingeniería.                       Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


Lógica proposicional
La lógica proposicional trata con unidades básicas denominadas proposiciones. Una
proporción es una expresión que tiene un valor de verdad (falso o verdadero, pero no ambos
a la vez).


Ejemplo:

          Mozart fue un compositor. (Verdadero)
          Todo compositor escribe música. (Verdadero)
          Un perro es un animal. (Verdadero)
          Un gato es un perro. (Falso)

Estas proposiciones se pueden representar mediante p, q, r, s, ... y se les llama
proposiciones simples o atómicas.

Las proposiciones simples o atómicas son vinculadas o modificadas por los llamados
conectores:
       ^ : = AND
       v : = OR
       ~ ¬ : = NOT
       => : = Implicación
           := Doble implicación
Y son llamadas proposiciones compuestas o moleculares.

Ejemplo:
     p: Mozart fue un compositor.
     ~ p : Mozart no fue un compositor.
     q: Mozart escribió música.
     p ^ q: Mozart fue un compositor y escribió música.
     p v q: Mozart fue un compositor o escribió música.
     p => q: Si Mozart fue un compositor entonces escribió música.
     p     q: Mozart fue un compositor si y solo si escribió música.

En el caso de las proposiciones simples asignarles su valor de verdad es obvio, se requiere
tener un conocimiento claro de los hechos relacionados a la proposición. En cambio para
las proposiciones compuestas se deben seguir ciertas reglas que señalaremos en la tabla
siguiente:

                                p     q   ~p   p^q   pvq   p => q     p       q
                                V     V    F    V     V      V            V
                                V     F    F    F     V       F           F
                                F     V   V     F     F      V            F
                                F     F   V     F     F      V            V
                                1     2    3    4     5       6           7
Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Negación: ~ p
Toma el valor de verdad opuesto al de la proposición p, o sea, si la proposición p es
verdadera la negación ~ p es falsa y viceversa. Como se observa en la columna 3.

Conjunción: p ^ q
Toma el valor de verdadero solo cuando ambas miembros son verdaderos. En cualquier
otro caso es falsa. Como se observa en la columna 4.

Disyunción: p v q
Toma el valor falso cuando ambos miembros son falsos. En cualquier otro caso es
verdadera. Como se observa en la columna 5.

Condicional: p => q
Si el antecedente es verdadero y el consecuente es falso, la condicional es falsa. En
cualquier otro caso es verdadera. Como se observa en la columna 6.

Bicondicional: p q
Cuando ambos miembros tienen el mismo valor de verdad, la bicondicional es verdadera.

En cualquier otro caso es falsa. Como se observa en la columna 7.

Las variables, también pueden ser cuantificadas. Los cuantificadores que típicamente se utilizan en
lógica de predicados son:

     •    El cuantificador universal; ∀ indica que la fórmula bien formada, dentro de su alcance, es
          verdadera para todos los valores posibles de la variable que es cuantificada. Por ejemplo:

                                                      ∀X....

                                  Establece que "para todo X, es verdad que . . . "

     •    El cuantificador existencial;∃ , indica que la fórmula bien formada, dentro de su alcance, es
          verdadera para algún valor o valores dentro del dominio. Por ejemplo:

                                                      ∃X....

                                      Establece que "existe un X, tal que . . . "

A continuación se dan algunos ejemplos de predicados cuantificados:


                                      ∀ X, [niño (X) => le_gusta (X, helados)].
                                           (∀X)(persona(X)) =>mortal(X)
                                       ∀ Y, [mamífero (Y) => nace (Y, vivo)].
                                             (∀X)(perro(X)) =>mortal(X)

                                        ∃ Z, [cartero(Z) ^ mordió (boby, Z)].

Universidad Nacional de Ingeniería.                                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Desde el punto vista de representación, los cuantificadores son difíciles de usar. Por lo que es
deseable reemplazarlos con alguna representación equivalente, más fácil de manipular. El caso del
cuantificador universal es más simple ya que se asume a todas las variables como universalmente
cuantificadas.

El cuantificador existencial es más difícil de reemplazar. El cuantificador existencial garantiza la
existencia de uno o más valores particulares (instancias) de la variable cuantificada, que hace a la
cláusula verdadera. Si se asume que existe una función capaz de determinar los valores de la
variable que hace la cláusula verdadera, entonces simplemente se remueve el cuantificador
existencial y se reemplaza las variables por la función que retorna dichos valores. Para la
resolución de problemas reales, esta función, llamada función de Skolem, debe ser conocida y
definida.

Forma proposicional o función: p(x)

Es aquella expresión que tiene un elemento desconocido, x , que al ser instanciado hace que
la expresión se convierta en una proposición. Ejemplo: p (x): x es un mamífero.

Si x se instancia con “clavo”, o sea, x = clavo. La forma proposicional se convierte en la
proposición: p (clavo): clavo es un mamífero. (Falso)

Si x se instancia con “gato”, o sea, x = gato. La forma proposicional se convierte en la
proposición: p (gato): gato es un mamífero. (Verdadero)

Los valores de x estan presente en un conjunto llamado dominio. Si todos los elementos del
dominio hacen verdadera la proposición se utiliza el cuantificador universal “∀”. Si solo
algunos elementos del dominio hacen verdadera la proposición se utiliza el cuantificador
existencial “∃”.

Ejemplo:

1. Sea la forma proposicional “p ( x ): x es una letra ”

          Dominio: x = { (x, p ( x )) | p ( x ): x es una letra } = { a, b, c, d, e}

          Instanciando tenemos:

          x = a, p(a): a es una letra. (Verdadero)

          x = e, p(e): e es una letra. (Verdadero)

          Todos los elementos del dominio cumplen la forma proposicional, esto se indica de
          la manera siguiente:

          ∀x, p( x ): para todo x, x es una letra.




Universidad Nacional de Ingeniería.                                  Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

2. Sea la forma proposicional “p (x ): x es un número par ”

Dominio: x = { (x, p ( x )) | p ( x ): x es un número par } = {1, 2, 5 }
Instanciando tenemos:

x = 1, p(1): 1 es un número par. (Falso)
x = 2, p(2): 2 es un número par. (Verdadero)
x = 5, p(5): 5 es un número par. (Falso)

Existen algunos elementos del dominio que cumplen la forma proposicional, esto se indica
de la manera siguiente:
                        ∃x, p( x ): existe algún x, x es un numero par.

Lógica de predicados.

La lógica de predicados se refiere o sirve para identificar una relación existente entre
elementos llamados argumentos, entre paréntesis o bien identifica a la propiedad o
característica de los argumentos en el paréntesis, o bien identifica el nombre de la clase a la
que pertenecen los argumentos. Se expresa de la manera siguiente:


                        PREDICADO (ARG1,ARG2,...,ARGN)
                          NOMBRE          NOMBRE
                           DEL              DEL
                         PREDICADO       ARGUMENTO



Nota: Los argumentos siempre (usualmente) son SUSTANTIVOS.

Ejemplo:

1    El limón y el chile serrano son verdes: Son_verde (limón, chile serrano)
2    La pitaya es roja y la manzana es roja: roja (pitaya, manzana)
3    El limón es verde: Verde (limón)
4    El perro ladra: ladra (perro)
5    Todos los mamíferos son de sangre caliente:
                 ∀x [ mamíferos (x) => sangre _ caliente(x)]
6    Todo satélite terrestre tiene un punto sobre la Tierra:
                 ∀x {satélite_terrestre(x) =>∃y [tiene (x, punto) ^ sobre(y, Tierra)]}


La lógica de predicados esta formado por un conjunto de predicados concatenados a través
de las operaciones lógicas:




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Operaciones lógicas:
      ^ : = AND
      v : = OR
      ~ ¬ : = NOT
      => : = Implicación
          := Doble implicación
      ∀ : = Para todo
      ∃ : = Existe

Jerarquía de las operaciones lógicas (orden de mayor a menor)

          1. Se ejecutan primero las agrupaciones: ( )
          2. ~ : not
          3. ^ : and
          4. v : OR
          5. => : Implicación (Si ... Entonces ... )
          6.      := Doble implicación (... si y solo si ...)

Sintaxis en la lógica de Predicados.

Aquí se maneja la siguiente simbología.

          - variables x, y, z
          - funciones f, g, h
          - constantes a, b, c
          -Símbolo de predicado P, Q, R, S, T
          -Símbolos de apuntación "(", ")", ","

Aunado a estos símbolos se utilizan los siguientes conceptos.

UNIVERSO: El cual identifica a la totalidad de los valores que puede tomar una variable.

TERMINO: Una variable es un termino, x, y, z. Así como f(t) donde f es una función y “t”
es una secuencia de uno o mas términos.

Ejemplo: f(x), h(y), g( x, y, h(x)), f( h(x, y), y(z, f(z) )

FORMULA ATOMATICA: Una formula automática es un predicado p(x), donde P es el
nombre del predicado y “x” es un termino.

Ejemplo: Es-verde (limón), mamífero (Pedro), mamífero (ballena, delfín, cabra)




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

LITERAL: Los literales son predicados o negaciones de predicados.

Ejemplo:             mamífero (Pedro)
                     ~ mamífero (vidrio)

FORMULAS BIEN FORMADAS (FBF): Una FBF es una secuencias de formulas
Atómicas (o predicados) concatenados por medio de operadores lógicos.

Ejemplo:             P(x) v Q(y) ^ ~R (S) P(x) ^ Q(z) ==> ~R(s)
                     mamífero(perro) => tiene_sangre_caliente(perro)

SENTENCE: Las expresiones son FBF donde el alcance de las variables esta
perfectamente bien definido mediante cuantificadores o bien UNIVERSALES ó bien
EXISTENCIALES.

Símbolos:            ∀ Para todo(cuantificador Universal)
                     ∃ Existe(Cuantificadores Existencial)
                     ~∃ ≡ ∀
                     ~∀ ≡ ∃

Ejemplo:             Todos los hijos tienen un padre y una Madre
                     ∀x [mamífero(x) => tiene_sangre_caliente(x) ]
                     ∀x [hijo(x) => ∃y ( madre(y)^ padre(z)) ]

CLAUSULA: Es una disyunción de literales (una cláusula es una disyunción de predicados
y/o predicados negados.

Ejemplos.            Conjunción: And (^)
                     Disyunción: OR (V)
                     P(x) v Q(y) v~ R(s)
                     R(y) v ~ Q(z)

Lógica de predicado de primer orden.

La lógica de predicados de primer orden esta formado por un conjunto de predicados
concatenados por operadores lógicos.

Ejemplo:             Hermano (x, y ): x es hermano de y.
                     Hijo (x, y ): x es hijo de y.

Lógica de Predicado de Orden Superior: Es cuando una variable y una función toman
sus valores de un mismo dominio.

Ejemplo:
     Hermano (x, hijo(a, y)): x es tío de a. [Predicado de Segundo Orden]
     Colega (b, hermano (x, hijo(a, y))): “b” es colega del tío de “a”. [Tercer Orden]
Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Sistema: Un sistema en la lógica de predicados de primer orden esta formado por un
conjunto EXPRESIONES cada uno de los cuales tiene un valor de verdad (verdadero o
falso).

Operaciones relacionadas con la lógica de predicados.
                       La Asociatividad             A v (B V C) = (A v B) v C
                                                    A ^ (B ^ C) = (A ^ B) ^ C
                       La Distributividad           A ^ (B v C) = (A^ B) v (A ^ C)
                                                    A v (B ^ C) = (A v B ) ^ (A v C)
                       Leyes de Morgan.             ~ (A v B) = ~ A ^ ~ B
                                                    ~ (A ^ B) = ~ A v ~B
                       Conmutativa                  AvB=BvA
                                                    A^ B = B ^ A
                       Ley de idempotencia          A^A=A
                                                    AvA=A
                       Ley de la no contradicción   ~ (A ^ ~ A) = 1
                       Ley del tercio excluso       A v ~ A) = 1
                       Ley de la identidad          A => A = 1
                                                    A    A=1

Definición de la equivalencia mediante la conjunción y la implicación:

                     A  B = A=> B ^ B => A
                     Av1=1
                     A^1=A
                     Av0=A
                     A^0=0
                     A^~A=0

Ley de la eliminación de la doble negación ~ ~ A = A

Ejemplos:

Convertir las siguientes proposiciones a lógica de predicados (FBF). (Sistema que describe
parte del mundo Romano).

1. Marco fue un hombre: hombre (Marco)
2. Marco fue pompeyano: pompeyano (Marco)
3. Todos los pompeyanos fueron Romanos: ∀x [Pompeyanos(x) => Romano(x)]
4. Cesar fue un rey: Rey (Cesar)
5. Todos los Romanos eran leales a Cesar o lo odiaban: ∀x [ Romanos(x) =>leal(x,Cesar)
   v odiaba(x, Cesar) ]
6. Todos son leales a alguien: ∀x [∃y leal(x, y)]; ∀x[ (∃(alguien), leal (x, alguien)) ]
7. La gente que trata a los reyes son los no leales: ∀x ∀y [gente (x) ^ Rey (y) ^
   trata_de_asesinar (x, y) => ~ leal(x, y) ]
8. Marco trata de Asesinar a Cesar: Trata_de_ Asesinar(Marco, Cesar)

Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Formas de Skolem
1. Eliminar todas las implicaciones.

Ejemplo: A=> B se convierten en ~A v B

2. Correr las negaciones hasta los predicados correspondientes
(Distribuir las negaciones entre los predicados)

Ejemplo: ~ ( P(x) ^ Q(y) ) eq ~ P(x) v ~Q(y)

3. Distribuir cuantificadores entre los predicados correspondientes.
(Corregir cuantificadores o deslizarlos hasta los correspondientes predicados, considerando
el mismo orden)

Ejemplo: ∀x ∀y P(x) ^ Q(y) es equivalente a ∀x P(x) ^ ∀y Q(y)

4. Eliminar los Cuantificadores Existenciales
       4.1 Convirtiéndolos a constantes cuando aparecen sin un cuantificador universal.

              Ejemplo: ∃x p(x) equivale a p(pato)
                       ∃x Ave(x) equivale a Ave(pato)
          4.1 Convirtiéndolos a funciones cuando aparezcan acompañados de un cuantificador
          universal.

                 Ejemplo: ∀x ∃y P(x, y) equivale a P(x, f(x) )
                          f:= {(x, y) / y = f(x) }

5. Eliminar todos los Cuantificadores Universales.

Ejemplo: ∀x ∀y P(x) ^ Q(y) equivale a P(x) ^ Q(y)

6. Convertir las conjunciones (AND'S) en disyunciones (OR'S).Obteniendo una cláusula
por cada elemento de la conjunción.

Ejemplo:

1. P(x) ^ Q(y)                               No concebimos la libertad sin cultura;
        1.1 P(x)                             ni la cultura sin pan; ni el pan sin
        1.2 Q(y)                             trabajo honrado; ni el trabajo honrado
2. P(x) ^ ( Q(y) v R(z) )                    sin respeto a la dignidad del hombre;
        2.1 P(x)                             ni el respeto a la dignidad del hombre
        2.2 Q(y) v R(z)                      sin amor a Dios.
3. P(x) ^ ( Q(y) ^ R(z) )
        3.1 P(x)
        3.2 Q(y)
        3.3 R(z)
Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




Universidad Nacional de Ingeniería.   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


2.3. Inferencia
La inferencia en la lógica formal es el proceso de generar nuevas formulas bien formadas
(FBF) a partir de FBF existentes, mediante la aplicación de las reglas de inferencias

Reglas para la extracción de conocimiento de sistemas en lógica de predicados.

1. Modus Ponens la cual dice que si:
A => B es verdadero y A es verdadero => B es verdadero

2. Modus Tolen. La cual dice que si:
A => B es verdadero y ~ B es verdadero => ~ A es verdadero.

3. La Regla de Resolución dice que si:
a1 v a2 es verdadero y ~ a2 v a3 es verdadero => a1 v a3 es verdadero

Nota: A => B es equivalente ~A V B

a) Reglas de Producción

Un sistema de producción proporciona una estructura que facilita la descripción y la ejecución de
un proceso de búsqueda. Un sistema de producción consiste de:

     •    Un conjunto de facilidades para la definición de reglas.
     •    Mecanismos para acceder a una o más bases de conocimientos y datos.
     •    Una estrategia de control que especifica el orden en el que las reglas son procesadas, y la
          forma de resolver los conflictos que pueden aparecer cuando varias reglas coinciden
          simultáneamente.
     •    Un mecanismo que se encarga de ir aplicando las reglas.

Dentro de esta definición general de sistema de producción, se incluyen:

     •    Lenguajes básicos para sistemas de producción (LISP, CLIPS, PROLOG). También se los
          conoce como lenguajes de Inteligencia Artificial.
     •    Sistemas híbridos y sistemas vacíos (shells) para producción de sistemas basados en
          conocimientos (VP-Expert, Expert Teach, Personal Consultant, Intelligence Compiler,
          EXSYS).
     •    Arquitecturas generales para resolución de problemas (máquinas LISP, máquinas
          PROLOG).




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Características de los Sistemas de Producción

Un sistema de producción, al igual que los problemas, puede ser descrito por un conjunto de
características que permiten visualizar la mejor forma en que puede ser implementado.

Un sistema de producción se dice que es monotónico si la aplicación de un regla nunca evita que
más tarde se pueda aplicar otra regla que también pudo ser aplicada al momento en que la primera
fue seleccionada.

Un sistema de producción es parcialmente conmutativo si existe un conjunto de reglas que al
aplicarse en una secuencia particular transforma un estado A en otro B, y si con la aplicación de
cualquier permutación posible de dichas reglas se puede lograr el mismo resultado.

Un sistema de producción es conmutativo, si es monotónico y parcialmente conmutativo.

SISTEMA DE PRODUCCIÓN                       MONOTÓNICO               NO-MONOTÓNICO
PARCIALMENTE CONMUTATIVO                    Demostración de Teoremas Navegación Robótica
PARCIALMENTE NO CONMUTATIVO                 Síntesis Química         Juego de Ajedrez

La parte condicional de una regla de producción llamado Lado Izquierdo (LI), consiste en
una serie de elementos que describen las condiciones que deben ser verdaderas para que la
regla sea aplicable. La parte de la acción de la regla llamada Lado Derecha (LD), describe
las acciones que se van a llevar a cabo cuando se dispara la regla (ejecución).

Ejemplo: Desarrolle una regla de producción que represente:
   1) “Al aplicar el freno el automóvil de Juan se detiene”.

     (p accionar _ freno
     (Automóvil de Juan ^ freno aplicado)
     (modificar ^ movimiento interrumpido))

Esta producción llamada accionar _ freno, indica que si el valor del atributo “freno” para el
elemento de memoria automóvil de Juan viene a ser igual al valor aplicado, entonces el
valor del atributo”movimiento” debe modificarse al valor de “interrumpido”.

Utilizando Reglas
Una regla es una representación del tipo
If condición 1
:
condición n
THEN conclusion 1
:
conclusión n
Ejemplo.
If esta lloviendo then saco mi paraguas.
If tengo hambre then como alimentos.
If tengo examen then debo estudiar OR Sentarme al lado de alguien.

Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Regla = Producción

Sistemas Basados en Reglas eq Sistemas de Producción.

Ejemplo:
Sistemas Deductivo basados en Reglas:
    • Para identificar animales de un zoológico:

R1: If x tiene pelo THEN x es mamífero.
R2: If x da leche THEN x es mamífero.
R3: If x tiene plumas THEN x es ave.
R4: If x vuela AND x pone huevos THEN x es ave.
R5: If x es mamífero AND x come carne THEN x es carnívoro
R6: If x es mamífero AND x tiene dientes agudos AND x tiene garras AND x tiene ojos
    que miran hacia adelante THEN x es carnívoro.
R7: If x es mamífero AND x tiene cascos (pesuñas) THEN x es un ungulado.
R8: If x es mamífero AND x mastica (rumia) hierba THEN x es un ungulado AND tiene dedos.

     •    Reglas para identificar animales carnívoros:

R9: If x es carnívoro AND x tiene color aleonado AND x tiene
manchas obscuras THEN x es chita (cheetan).
R10: If x es carnívoro AND x tiene color aleonado AND x tiene rayas
negras THEN x es un tigre.

     •    Reglas para identificar ungulados:

R11: If x es ungulado AND x tiene patas largas AND x tiene cuello largo AND x tiene color
aleonado AND x tiene manchas obscuras THEN x es una jirafa.

Ahora supongamos que el encargado del zoológico conoce que:

1. Un animal tiene color aleonado y manchas obscuras. De acuerdo a estos datos las Reglas
9 y 11 son candidatas a dispararse, haciéndole hasta cumplir la totalidad de condiciones.

2. El animal puede amamantar y rumia hierbas, con la cual la Regla 2 se dispara
produciéndose ahora que x es un mamífero, lo cual a su vez ocasiona que se dispare la regla
8 produciendo (o conociéndose ahora) que x es un ungulado y tiene dedos.

3. X tiene patas largas y cuello largo. Lo cual hace que se dispare la regla 11, con la cual
   el sistema de producción concluye que x es una jirafa.




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Problema:

Usted esta iniciando una noche tranquila cuando un viejo amigo le llama y le dice que viene
a cenar. Peor lo cual usted inmediatamente comienza a hacer los preparativos
correspondientes y usted posee un Sistema Experto para seleccionar las bebidas. Las Reglas
que identifican a su Experto en bebidas son las siguientes:

B1: If un vino caro es el indicado AND es Año Nuevo THEN el vino es lo indicado.

B2: If un vino caro es el indicado AND el plato principal es Carne Roja(Steak) THEN seleccionar
Chateau Earl of Bartoville Red.

B3: If un vino barato es el indicado AND plato principal es Pollo AND el invitado no es bien visto
THEN seleccione Honest Henry's Apple Wine.

B4: If un vino barato es el indicado AND plato principal desconocido THEN seleccionar Toe Lokes
Roses.

B5: If cerveza es lo indicado AND el plato principal es Mexicano THEN seleccionar xx.

B6: If cerveza es lo indicado THEN seleccionar Tecate.

B7: If el invitado es escrupuloso con los alimentos THEN seleccionar Glop.

B8: If el invitado es escrupuloso AND no se sirven zanahorias THEN seleccionar Jugo de
Zanahoria.

B9: If vino es lo indicado AND la visita debe ser impresionada THEN un vino caro es lo indicado.

B10: If un vino es lo indicado THEN un vino barato es lo indicado.

B11: If el invitado es sofisticado THEN vino es lo indicado.

B12: If el plato principal es mexicano THEN cerveza es lo indicado.

B13: If el invitado es indeseable AND el plato principal es comprado a la Abastecedora el

Buen Morir THEN cerveza es lo indicado.
B14: If el Plato principal no importa es cualquier cosa THEN seleccione agua.

Asumiendo que se dan los siguientes hechos como sabidos:

1. El plato principal es comprado a la Abastecedora el Buen Morir.
2. El plato principal es Mejicano.
3. El invitado es indeseable (no bien visto)
4. Es Año Nuevo.
6. El plato principal es Pollo.

Mostrar la secuencia en que las Reglas son usadas y diga cuando son disparadas.
Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Respuesta:

Con el dato 4 se dispara regla 1.
7. El vino es lo indicado.
Con el dato 7 se dispara regla 10.
8. Un vino barato es lo indicado.
Con el dato 3,6,8 se dispara regla 3.
9. Seleccionar Honest Henry's
Con el dato 2 se dispara regla 12.
10. Cerveza es lo indicado.
Con el dato 10, 2 se dispara regla 5.
11. Seleccionar xx
Con el dato 10 se dispara regla 6.
12. Seleccionar Tecate
Con el dato 1, 3 se dispara regla 13.
13.Cerveza es lo indicado

Cláusulas de Horn
Las cláusulas de Horn trabaja con el Modus Ponens, tomando como verdadero el
consecuente cuando se tiene como verdadero el antecedente. A =>B, Si A es verdadero,
entonces B es verdadero.

Forma Canónica: La Forma Canónica de Modus Ponens determina que cada oración de la
base de conocimientos sea una oración atómica o una implicación con una conjunción de
oraciones atómicas en el lado izquierdo y un solo átomo a la derecha.

Al tipo de oraciones que cumplen con la forma Canónica del Modus Ponens se les
denomina oraciones de Horn; a la base de conocimientos formadas exclusivamente por
oraciones de Horn se dice que está en “Forma normal de Horn”.

Ejemplo:

1) Proyectil (x)
   Posee (y, x )
   Proyectil (x ) ^ Posee (y, x ) => Vende (z, y, x )
       Aplicando Modus Ponens se concluye: Vende (z, y, x)

2) Mamífero (x)
   Tiene_pelo (x)
   Es _ cuadrúpedo (x)
   Tiene _ rayas (x)
   Tigre (x)
   Mamífero (x) ^ Tiene_pelo (x) ^ Es _ cuadrúpedo (x) ^ Tiene _ rayas (x) => Tigre (x)
        Aplicando Modus Ponens se concluye: Tigre (x)



Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Ejercicios:

Las expresiones ¿Cómo llegaste? ¿Qué estudias? ¿Habla usted inglés? No son
proposiciones, pues de su significado no se puede decir si es falso o verdadero. Las órdenes
que se dan a otra persona tampoco son proposiciones. ¿Cuáles de las expresiones siguientes
son proposiciones? De las que no son diga por qué.

     1. Todas las naranjas son amarillas
     2. Un rectángulo es una figura verde
     3. Medellín es la ciudad de la eterna primavera
     4. Hay triángulos que son rectángulos
     5. Algunas manzanas son rojas
     6. El frío es una ciencia
     7. La filosofía es cuadrada
     8. El universo es suave
     9. El sol saldrá mañana
     10. El banano es una fruta que ríe
     11. Todos los triángulos son isósceles
     12. Tómese la medicina
     13. ¿Cuáles son proposiciones?
     14. El reconocimiento del pasado es separable del reconocimiento del futuro.
     15. El reconocimiento del futuro es separable del reconocimiento del pasado
     16. El conocimiento del pasado es posible
     17. El conocimiento del futuro es posible
     18. Nada triunfa como el éxito
     19. Nada fracasa al final como el éxito.

Escribir en lógica proposicional:
   • El gato es azul y come queso verde
   • Permaneceré en casa si llueve
   • Mañana es Martes o es Miércoles
   • El ser número par implica ser entero
   • Si es un número par, entonces también es entero
   • Es número par sólo si es entero
   • Es número entero, si es par
   • Es entero siempre que sea par
   • El ser número par es condición suficiente para ser entero
   • Ser número entero es condición necesaria para ser par
   • Si el cuadrilátero ABCD es un cuadrado entonces sus lados son iguales.
   • La aceleración de un cuerpo es proporcional al producto de su masa por la fuerza
       ejercida sobre él.
   • Juan es alto.
   • Juan es tío de María.
   • Todos los majadistanenses son de Majadistán. Rudistein es Majadistanense. En
       consecuencia, Rudistein es de Majadistan.

Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     •    Los cantantes no duermen.
     •    Comer mucho, engorda
     •    Las montañas cantan bonito
     •    Los mosquitos viven menos de un año
     •    El hombre desciende del elefante.
     •    El coronel no tienen quien le escriba.
     •    La jubilación del Coronel Buendía es insuficiente para su familia.
     •    El tejo es un deporte.
     •    El Sol es una estrella.
     •    El amor es un sentimiento sublime.
     •    La lógica es ciencia o disciplina.
     •    Todo está en movimiento.
     •    Toda x que es estática implica que no está en movimiento.
     •    Todos los deportes son saludables.
     •    Todo trabajo debe ser pagado.
     •    Si las elecciones son limpias entonces no son fraudulentas.
     •    Todos los animales tienen un cerebro.
     •    Si dos terminales están conectadas, entonces tienen la misma señal.
              o ∀x ∀y CONECTADO(x,y) ⇒ ( SEÑAL(x) = SEÑAL(y) )
     •    La expresión CONECTADO es conmutativa.
              o ∀x∀y CONECTADO(x,y) ⇒ CONECTADO(y,x).
     •    Es delincuente aquella persona quien vende armas a naciones enemigas
              o ∀x∀y∀z PERSONA (x) ∧ARMA(y) ∧ NACION(z) ∧ ENEMIGO(z) ∧ VENDE(X,Y,Z)
                      ⇒ DELINCUENTE(x)
     •    Todas las personas aman a alguien.
              o ∀x, ∃y AMAR(x, y)
     •    Si algo vale la pena entonces no puede obtenerse fácilmente.
                     ∀x ValerLaPena(x) ⇒ ¬PoderObtenerseFacilmente(x)
     •    Todos los caballos de carreras son de pura raza
                     ∀x CaballoCarreras(x) ⇒ PuraRaza(x)
     •    Para ser admitidos tienen que ser socios.
              o ∀x Admitido(x) ⇒ Socio(x)
     •    A algunas mujeres no les gusta el fútbol.
              o ∃x Mujer(x) ∧ ¬Gustar(x, futbol) //futbol es una constante
     •    Todos quieren ver el mundial de fútbol.
              o ∀x QuererVer(x, MundialFutbol)
     •    Algunos temas musicales están pasados de moda o suenan mal
              o ∃x TemaMusical(x) ∧ ( PasadosDeModa(x)∨ SuenaMal(x) )
     •    Cualquier mono es un animal peludo.
     •    Todo elefante que no sea miedoso o es un mono o es un ratón.
     •    Todos los seres vivos son mortales, Todos los humanos son seres vivos; luego
          Todos los humanos son mortales.
     •    Todas las personas educadas son atentas. Algunos funcionarios no son atentos,
          luego Algunos funcionarios no son personas educadas.


Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     •    Todos los ácidos son corrosivos. Todos los ácidos tienen hidrógeno; luego Algo que
          tenga hidrógeno es corrosivo.
     •    Ningún gas tiene volumen constante. Todos los gases son cuerpos; luego Algunos
          cuerpos no tienen volumen constante.
     •    Todos los atletas cuidan su salud. Nadie que cuida su salud es vicioso; luego Nadie
          que sea vicioso es atleta.
     •    Algunas plantas tienen flores.
     •    Un hijo de Príamo mató a un hijo de Peleo.
     •    Un aqueo mató a todos los hijos de Príamo
     •    Algunos sobrevivientes de la guerra amaron a Elena
     •    Todos los hijos de Héctor murieron a manos de algún aqueo.
     •    Ningún personaje de la Iliada mató a Eneas.
     •    Elena amó a uno de los hijos de Príamo.
     •    Si alguien vive es por que no lo ha matado algo.
     •    Cualquiera que conoce algo acerca de la lógica le gusta la lógica.
     •    Ningún dragón que vive en un zoológico sería feliz.
     •    Cualquier animal que conoce a gente agradable es feliz.
     •    Las personas que visitan zoológicos son agradables.
     •    Los animales que viven en zoológicos conocen a gente que visita zoológicos.
     •    Colombia pertenece a América.
     •    Bolívar libertó a Colombia.
     •    El agua es un mineral.
     •    La palabra “esdrújula” es esdrújula.
     •    La Tierra es redonda.
     •    Venus es uno de los planetas del sistema solar.
     •    Entrarás sólo si has llegado a tiempo.
     •    A no ser que consigas un aprobado en alguna asignatura, te echarán de la facultad.
     •    Sólo lograrás que lo declaren culpable si aparece un testigo que refrende tu versión
          de los hechos.
     •    Cuando apruebas todas las asignaturas te dan el título.
     •    Cuando empieza a amanecer el gallo canta.
     •    Juan vendrá única y exclusivamente si María se lo pide.
     •    Vienes o te quedas
     •    Antonio viaja en avión o en carro.
     •    María será doctora en filosofía si y solo si defiende con éxito su tesis doctoral.
     •    Ni contigo ni sin ti tienen mis males remedio
     •    No es cierto que quiera y no pueda

Formalice en lógica de predicados y analice si la conclusión corresponde a la hipótesis.

• Si tengo tiempo, estudiaré y trabajaré. Tengo tiempo o tengo ánimo para emprender
   nuevas actividades. No tengo tiempo. Entonces trabajaré.
• Si las lluvias aumentan, el caudal de los ríos crece. Si el caudal de los ríos crece, hay que
   construir represas que controlen el flujo del agua. No es verdad que no se construyan

Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     tales represas o que haya escasez de pozos. Por lo tanto, las lluvias aumentan o hay
     escasez de pozos.
•   Si me gusta el arte, voy a la exposición de pintura o a ver danza moderna. Si estoy
     enfermo o no me gusta el arte, entonces me queda en casa. No me quedo en casa. En
     consecuencia, si no voy a la exposición de pintura, voy a ver danza moderna.
•   Si Alberto estudia medicina, Fernando le dará ayuda económica. Si la situación
     económica permanece estable, Alberto estudia medicina y Ricardo estudia
     computación. Si Fernando da ayuda económica a Alberto, Martha se disgustará con
     Fernando. Entonces, si Ricardo no estudia computación, Martha se disgustará con
     Fernando.
•   Mis amigos son sinceros o algunos disimulan. Pero si son honestos no deben disimular
     lo que sienten. Así, si mis amigos son sinceros, deben ser honestos.
•   Si armando tiró un árbol, lo vio la policía. Armando deberá pagar una multa si lo vio la
     policía. Como él está en la delegación, no deberá pagar una multa. Entonces tiró un
     árbol y está detenido en la delegación.
•   Si voy a la fiesta, no termino de estudiar. Si es viernes, no voy al cine. Si es viernes y no
     termino de estudiar, entonces voy a la fiesta. En consecuencia, voy al cine.
•   Los fenómenos atmosféricos se originan si los electrones chocan entre sí. Al pasar esto
     último, las cargas eléctricas se polarizan o se producen grandes tensiones
     electromagnéticas. Si se producen grandes tensiones electromagnéticas, se producen
     campos magnéticos que entran en choque. Los campos magnéticos entran en choque y
     se producen rayos. Por tanto, si los electrones chocan entre sí, entonces se producen
     rayos.
•   Isabel opinaba que el Dr. Juárez era demasiado viejo para casarse. Si la conducta de
     Isabel fuera siempre coherente con sus opiniones y si opinaba que el Dr. Juárez era
     demasiado viejo para casarse, entonces no se casaría con él. Pero Isabel se casó con el
     Dr. Juárez. Así, la conducta de Isabel no es siempre coherente con sus opiniones.
•   Pedro y Jaime son de la misma edad o Pedro es mayor que Jaime. Si Pedro y Jaime son
     de la misma edad, entonces Elena y Pedro no tienen la misma edad. Si Pedro es mayor
     que Jaime, entonces Pedro es mayor que Marcela. Así que o Elena y Pedro no son de la
     misma edad o Pedro es mayor que Marcela.
•    La inmortalidad existe si y sólo si el espíritu existe. Si lo que vemos es real, la sabiduría
     no es tan difícil de obtener El espíritu existe o la sabiduría no es tan difícil de obtener.
     Por tanto, si lo que vemos es real, la inmortalidad existe.

Rescriba los siguientes fragmentos de “Cien años de Soledad” del escritor Gabriel García
Márquez, como expresiones de lógica de predicados:

     • “Muchos años después, frente al pelotón de fusilamiento, el Coronel Aureliano Buendía había de
        recordar aquella tarde remota en que su padre lo llevó a conocer el hielo. ...” .

          MUCHOSAÑOSDESPUES( FUSILAR(PELOTONFUSILAMIENTO, CAB)∧
                                  RECORDAR(CAB, TARDEREMOTA) ∧
                                      LLEVAR(padre(CAB), CAB, CONOCER(CAB, HIELO))
                                         )



Universidad Nacional de Ingeniería.                                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     • “...Cuando el pelotón lo apuntó, la rabia se había materializado en una sustancia viscosa y amarga que
         le adormeció la lengua y lo obligó a cerrar los ojos. Entonces desapareció el resplandor de aluminio
         del amanecer, y volvió a verse a si mismo, muy niño, con pantalones cortos y un lazo en el cuello, y
         vio a su padre en una tarde espléndida conduciéndolo al interior de la carpa, y vio el hielo. Cuando
         oyó el grito, creyó que era la orden final al pelotón...”.

          Apuntar(Pelotón, CAB) ⇒ ( (Materializar(CAB, Rabia,
          SustanciaViscosaAmarga) ⇒ (Adormecer(CAB, Lengua) ∧ Cerrar(CAB, Ojos) ) ∧
          Desaparecer(Resplandor(aluminio), Amanecer) ∧ Ver(CAB, Niño(PantalónCorto, LazoCuello)
          ∧ Ver (CAB, Padre(CAB) ) ∧ TardeEspléndida ∧ Conducir(Padre(CAB, InteriorCarpa) ∧ Ver(CAB,
          Hielo) ) ) ∧ Oir(CAB, Grito) ∧ Creer(CAB, OrdenFinal(Pelotón) )

     • “...Entonces fue al castaño, pensando en el circo, y mientras orinaba trató de seguir pensando en el
         circo, pero ya no encontró el recuerdo. Metió la cabeza entre los hombros, como un pollito, y se
         quedó inmóvil con la frente apoyada en el tronco del castaño. La familia no se enteró hasta el día
         siguiente, a las once de la mañana, cuando Santa Sofía de la Piedad fue a tirar la basura en el
         traspatio y le llamó la atención que estuvieran bajando los gallinazos.”.

          Ir(CAB, Castaño) ∧ Pensar(CAB, Circo) ∧ Orinar(CAB) ∧TratarPensar(CAB, Circo)
          ∧ Pensar(CAB, Circo)
          ∧ ¬Encontrar(Recuerdo) ∧ Meter(CAB, Cabeza, hombros) ∧ Parecer(CAB, Pollit o)
          ∧ Inmovil(CAB)
          ∧ Apoya(CAB, Frente, Tronco(Castaño) ) ) ∧ Εnterar(Familia, DiazSiguiente,                        11AM)
          ∧ Tirar(SantaSofía, Basura, Traspatio) ∧ LLamarAtenciónl(SantaSofía, Gallinazos)

Con las siguientes diez expresiones, del dominio de la obra de “Don Quijote de la
Mancha”, en lógica de predicados. Escriba una expresión en Español.:

     1. ∃x ∃y (Escudero(x, y) ∧ ¬∃z Amigo(z, x) )
     2. ¬∀x (∃y Escudero(x, y) ⇒ Joven(x) )
     3. ∃x ¬( Caballero(x) ⇒ Joven(x) )
     4. ¬∃x ( Caballero(x) ∧ Joven(x) )
     5. ∃x ¬( Caballero(x) ⇒ ¬Joven(x) )
     6. ∃x ∃y (Escudero(x, y) ∧ ∀z ¬Amigo(z, x) )
     7. ∃x ∃y ¬(Escudero(x, y) ⇒ Joven(x) )
     8. ¬∀x ( Caballero(x) ⇒ Joven(x) )
     9. ∀x ¬( Caballero(x) ∧ Joven(x) )
     10. ¬∀x ( Caballero(x) ⇒ ¬Joven(x) )

Represente en Lógica de Predicado:
   • La tubería A alimenta el depósito B. Cuando una tubería alimenta un depósito, la
      derivada del nivel de éste es proporcional al caudal de aquella. Luego, la derivada
      del nivel de B es proporcional al caudal de A.




Universidad Nacional de Ingeniería.                                       Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Conteste la pregunta efectuada
           a. Eduardo pudo haber visto al asesino.
           b. Antonio fue el primer testigo de la defensa
           c. Eduardo estaba en clase o Antonio dio testimonio falso.
           d. ¿Nadie en clase pudo haber visto al asesino?

Conteste las dos preguntas efectuadas
  Todos los que ayudan a Juan viven en casa de Manuel
  Antonio ayuda a todos los que trabajan con èl
  Juan trabaja con todos los amigos de carlos
  Antonio es amigo de Carlos
  ¿Antonio vive en casa de Manuel
  ¿Juan trabaja con Antonio?

     •    Si x es la madre de y, y si z es la hermana de x, entonces z es la tía de y.
          Supongamos ahora que la madre de Braulio es Juana, y que Lola es hermana de
          Juana. Demostrar que Lola es tía de Braulio.

Realizar la comprobación lógica de los siguientes razonamientos.

•    Si los Piratas son terceros, entonces si los Apaches son segundos los Bravos serán
     quintos. O los Gigantes no serán primeros o los Piratas serán terceros. En efecto, los
     apaches serán segundos. Por lo tanto, si los Gigantes son primeros, entonces los Bravos
     serán quintos.
•    la Lógica es difícil o no le gusta a muchos estudiantes. Si la matemática es fácil,
     entonces la lógica no es difícil. Por tanto, si a muchos estudiantes les gusta la lógica, la
     matemática es fácil.
•    Si Antonio no es primero, entonces Pedro es primero. Pero Pedro no es primero. O
     Antonio es primero o pablo es tercero. Si Jaime es segundo, entonces Pablo no es
     tercero. Por tanto, jaime no es segndo.
•    Fue X o Y quien cometió el crimen. X estaba fuera del pueblo cuando el crimen fue
     cometido. Si X estaba fuera del pueblo, no pudo haber estado en la escena del crimen.
     Si X no estaba en la escena del crimen, no lo pudo haber cometido.

Represente en Lógica de Predicado

1    Susie es una compañera de escuela de Calvin y lo considera un niño raro. El la molesta
     mucho y en invierno le lanza bolas de nieve. A Susie le gusta jugar a las casitas con
     Calvin, Hobbes y Mr Burn, su coneja de trapo. A Calvin no le gustan las niñas pero
     juega con Susie, entonces Calvin siente atracción por Susie o la odia.

     •    niña(SUSIE) ∧ compañera(SUSIE, CALVIN) ∧ pensar(SUSIE, CALVIN, raro)
     •    molestar(CALVIN, SUSIE) ∧ lanzar(CALVIN, BN, SUSIE) ∧ NIEVE(BN) ∧
          haber(NIEVE, INVIERNO)
     •    Conejo(Mr Burn) ∧ jugar(SUSIE, CASITAS) ∧ jugar(SUSIE, CALVIN) ∧
          jugar(SUSIE, HOBBES) ∧ jugar(SUSIE, Mr Burn)
Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     •    ∀x[niñas(x) ∧ ¬gustar(CALVIN,x) ∧ jugar(CALVIN,SUSIE)] ⇒ atraer(SUSIE,
          CALVIN)
     •    ∀x[niñas(x) ∧ ¬gustar(CALVIN,x) ∧ jugar(CALVIN,SUSIE)] ⇒ odiar(SUSIE,
          CALVIN)
     •    ¬niñas(A) ∨ gustar(CALVIN,A) ∨ ¬ jugar(CALVIN,SUSIE) ∨ atraer(SUSIE,
          CALVIN)
     •    ¬niñas(A) ∨ gustar(CALVIN,A) ∨ ¬ jugar(CALVIN,SUSIE) ∨ odiar(SUSIE,
          CALVIN)
     •    atraer(SUSIE,   CALVIN)      :   ⎯         niñas(A),  ¬gustar(CALVIN,A),
          jugar(CALVIN,SUSIE), atraer(SUSIE, CALVIN)
     •    odiar(SUSIE, CALVIN) : ⎯ niñas(A), ¬gustar(CALVIN,A),
          jugar(CALVIN,SUSIE), atraer(SUSIE, CALVIN)

1    Cuando los niños causan problemas en la escuela son enviados por su profesora donde
     el rector
     • ∀x ∀y niño(x) ∧ profesora(y,x) ∧ causar(x,problemas,escuela) ⇒
         enviar(y,x,director)
     • ¬niño(x) ∨ ¬profesora(y,x) ∨ ¬causar(x,problemas,escuela) ∨ enviar(y,x,director)
     • [niño(x) ∧ profesora(y,x) ∧ causar(x,problemas,escuela)] ⇒ enviar(y,x,director)
     • enviar(Y,X,director) : ⎯ niño(X), profesora(Y,X), causar(X,problemas,escuela).

2    Todo niño que tiene un amigo que no está vivo significa que ese amigo es imaginario
     • ∀x ∀y niño(x) ∧ ¬vivo(y) ∧ amigo(x,y) ⇒ imaginario(y)
3    Calvin es un niño que juega con un tigre llamado Hobbes; para él su tigre es un
     compañero insustituible;
     •  Niño(CALVIN) ∧ tigre(HOBBES) ∧ pertenecer(HOBBES,CALVIN)                                           ∧
        jugar(CALVIN,HOBBES) ∧ compañero(HOBBES,CALVIN)
4    Existen niños que son mas grandes que otros y se aprovechan de los mas pequeños
     •    ∃x ∃y niño(x) ∧ niño(y) ∧ msg(y,x) ⇒ aprovechar(y,x)
5    Todos los niños que creen en monstruos y se los imaginan, les tienen miedo.
     •    ∀x ∀y niño(x) ∧ monstruo(y) ∧ creer(x,y) ∧ imaginar (x,y) ⇒ tenermiedo(x,y)
6    Todo niño que es travieso es castigado por sus padres
     •    ∀x ∀y ∀z niño(x) ∧ travieso(x) ∧ padres(y,x) ⇒ castigar(y,x)
7    Si un niño es travieso y su madre es estricta, lo castiga.
     •    ∀x ∀y niño(x) ∧ travieso(x) ∧ mama(y) ∧ estricto(y) ⇒ castigar(y,x)
8    Los niños que no les gusta la escuela y no hacen las tareas son desaplicados
     •    ∀x niño(x) ∧ ¬hacer(x,tareas) ∧ ¬gustar(x,escuela) ⇒ desaplicado(x)



Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Responda la pregunta

Anoche, una banda de ladrones robó una joyería y el botín se lo llevaron en un coche.
Arresté a tres sospechosos: Makinavaja, Popeye y el Pirata y después del interrogatorio
supe que:

                     Nadie aparte de estos tres estuvo involucrado en el robo,
                     Popeye confesó que nunca trabaja sin la ayuda de Maki
                     Y el Pirata me dijo que no sabía conducir.
                                            Premisas conocidas:
                                               • Nadie aparte de Maki, Popeye y el Pirata estuvo
                            No tengo
                                                   involucrado en el robo.
                            claro
                                               • Popeye nunca trabaja sin la ayuda de Maki.
                            quien es el
                            culpable.          • El Pirata no sabe conducir.
                                            RESPUESTA = Fue Maki

                                          Déjalos correr por que
                                             “más vale que se
                                          escapen mil ladrones a
                                          correr detrás de uno.”




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

TERCERA UNIDAD

RESOLUCION DE PROBLEMAS

3.1 Bases de conocimiento.
3.2 Elementos en la solución de problemas.
3.3 Métodos de búsqueda (Ciegas – Heurística )


INTRODUCCIÓN.

Para construir un sistema básico de inteligencia artificial capaz de resolver un problema
específico, es necesario realizar las siguientes acciones:

     •    Definir de una forma precisa el problema, incluyendo especificaciones de las
          condiciones iniciales y de las situaciones finales que pueden considerarse como
          soluciones aceptables al problema.

     •    Analizar el problema. Puede darse el caso de que unos muy pocos rasgos
          importantes puedan tener un gran impacto en la identificación de la técnica más
          apropiada para resolver el problema.

     •    Identificar y representar el conocimiento que es necesario para resolver el problema.

     •    Escoger la mejor técnica y aplicarla para la resolución del problema.

Las bases datos (DB: Data Base / Database) son anteriores en el tiempo a las bases de
conocimiento. Nacieron en la temprana época de los ordenadores digitales, a mediados de
la década de los 50 y fueron una de las principales herramientas que éstos ofrecían.
Surgieron como extensiones de programas Fortran que permitían acceso compartido a los
datos. A finales de esta década se desarrollaron métodos de acceso soportados por el
sistema operativo (acceso directo y secuencial) y maduraron con los sistemas operativos de
segunda y tercera generación (principios de los 60). En esta época se desarrollaron las bases
de datos estructuradas jerárquicamente y algo después las bases de datos de red. En esta
temprana época no había distinción entre bases de datos e IA. A finales de los 60, Ted
Codd, investigador de IBM, desarrolló un lenguaje de programación de propósito general
que denominó "programación relacional", basado en la teoría de conjuntos y la lógica y que
contenía el germen de lo que había de ser el más extendido de los sistemas de bases de
datos hasta la fecha, las bases de datos relacionales.

El objetivo primero de una base de datos es, como su nombre indica, almacenar grandes
cantidades de datos organizados siguiendo un determinado esquema o "modelo de datos"
que facilite su almacenamiento, recuperación y modificación.




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Por su parte, las bases de conocimiento (KB: Knowledge Base) pertenecen a una etapa muy
posterior. Surgieron a partir de la investigación en Inteligencia Artificial como respuesta a
las necesidades que las aplicaciones de esta disciplina planteaban. Más adelante haremos un
muestreo de las aportaciones que la IA ha hecho al estudio del lenguaje natural.

Las bases de conocimiento son la evolución lógica de los sistemas de bases de datos
tradicionales, en un intento de plasmar no ya cantidades ingentes de datos, sino elementos
de conocimiento (normalmente en forma de hechos y reglas) así como la manera en que
éste ha de ser utilizado. También se les trata de dotar de conocimiento sobre sí mismas, es
decir, una KB ha de "saber lo que sabe". Por ejemplo, ante una pregunta del tipo "¿Tienen
todos los empleados de Microsoft un CI de más de 100?", una base de datos tras consultar
la información relacionada con la altura de los empleados de esta empresa, daría una
respuesta afirmativa o negativa, independientemente de que tenga o no la información
correspondiente a estos trabajadores; en cambio, una KB respondería "sí", "no" o "no lo
sé", en el caso de que le faltase información relativa a la altura sobre alguno de los
empleados o de que no tuviese información sobre "todos" los empleados.

Ambos sistemas de información cuentan con sus correspondientes gestores para simplificar
al administrador las tareas comunes de mantenimiento: el sistema gestor de bases de datos
(DBMS: Database Management System) y el sistema gestor de bases de conocimiento
(KBMS: Knowledge Base Management System). También encontramos diferencias
sustanciales en este aspecto. Básicamente los DBMSs actuales se encuentran perfectamente
estandarizados, ofreciendo un número de características y metodologías comunes que
posibilitan la comunicación entre diversos tipos y productos comerciales. La
comercialización de los KBMSs es prácticamente anecdótica, y por supuesto no existe
ningún estándar.

La característica común a todos los sistemas basados en el conocimiento hasta hace muy
poco tiempo es que han sido sistemas autónomos, es decir, que no permiten la utilización
de la información contenida en ellos por parte de aplicaciones externas. Por el contrario, las
bases de datos, sí cuentan con los mecanismos de conexión necesarios para poder ofrecer su
información a muy distintos tipos de lenguajes de programación. En general, adelantamos
que nuestra elección son los sistemas de bases de datos para el almacenamiento de
información exclusivamente léxica, porque garantizan a priori la reutilización de la
información almacenada. Por ejemplo, si decidimos guardar nuestra información léxica en
un sistema de conocimiento, estaremos "atados" a este sistema, y si más adelante
observamos que nuestras necesidades van más allá de lo que en principio habíamos
previsto, puede darse el caso de que el sistema de KB no sea lo suficientemente potente
para dar respuesta a estas necesidades, y puede ocurrir que tengamos que volver a
introducir toda la información de nuevo. Por lo general, esta situación es evitable en el
entorno de las bases de datos.




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



3.1 BASES DE CONOCIMIENTO




     1. Concepto

Una base de conocimiento (KB: Knowledge Base) es la representación de conocimiento
relacionado a un tema especifico, dicho conocimiento se plasma en forma de hechos y
reglas.

En las bases de conocimiento encontramos: una colección de hechos y reglas mediante los
cuales el sistema es capaz de extraer conocimiento que no está almacenado de forma
explícita. Por tanto, para la IA, una estructura de datos que no contenga más que "hechos"
no es considerada como conocimiento, sino tan sólo como una fuente potencial de
información.

Un Sistema de Representación de Conocimiento para un universo U consiste en:

1. Una colección E de etiquetas que pueden representar individuos en U; estas etiquetas se
   dividen en constantes y variables.
2. Una colección F de funciones.
3. Una colección R de relaciones.
4. Un lenguaje L consistente en reglas para combinar las funciones, relaciones y etiquetas en
   expresiones bien formadas de L.
5. Una semántica S que provee de significado a las etiquetas, funciones y relaciones.

Teniendo en cuenta la definición anterior, podemos deducir los problemas más importantes que la
representación de conocimiento presenta:

     •    La necesidad de un conocimiento profundo de nuestro propio conocimiento. Es evidente
          que no poseemos una comprensión lo suficientemente detallada de muchas materias.
          Entre ellas está la que a nosotros nos concierne, el lenguaje natural. Cuanto más amplio
          sea nuestro conocimiento de éste, más fácil nos será recrear sus mecanismos
          artificialmente. En especial deberíamos conocer con exactitud tres puntos cruciales:

                o    ¿Cuáles son los individuos que constituyen el universo?
                o    ¿Que propiedades poseen?
                o    ¿Qué relaciones existen entre ellos?

     •    El desarrollo de una notación precisa. Aun suponiendo que poseamos un conocimiento lo
          suficientemente detallado de la materia que pretendemos representar, resulta crucial el
          disponer de una notación lo suficientemente precisa como para poder plasmar ese
          conocimiento de forma que pueda ser usado de forma inteligente por un cerebro
          electrónico.




Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Podríamos estipular que, en general, el conocimiento identifica información sobre
conceptos generales, mientras que los datos conforman información sobre entidades
específicas. Así, la aserción "Arturo Rodríguez mide 1,73m" es un dato mientras que "la
media de altura de los españoles es 1,70m" es conocimiento.

El conocimiento desde el punto de vista de las bases de datos: la posición generalmente
compartida por el entorno de las bases de datos es que un elemento de conocimiento tiene
que ver con un Universo de Discurso (UoD: Universe of Discourse), que puede ser real,
mental, social, o de cualquier otro tipo. Los datos, pues, son considerados como
aseveraciones sobre un determinado estado de cosas en un determinado UoD.

A estas aseveraciones se las denomina hechos. "Juan ama a María" es un hecho perceptible
u observable dentro de un determinado UoD y puede ser representado por una estructura de
datos. Para alcanzar el dominio del conocimiento es necesario subir a un nivel de
abstracción superior, en el que podemos hablar de las propiedades de los hechos y de las
relaciones entre hechos individuales y entre hechos y el UoD, así como de las alteraciones
de los hechos y las repercusiones de estas alteraciones sobre el UoD. Por ejemplo,
aseveraciones como "todos los hombres casados tienen una esposa y sólo una", o "para
cada humano x, y, z, se cumple que, si x es el padre de y, y y es el padre de z, entonces x es
el abuelo de z".

Este tipo de conocimiento, llamado por algunos investigadores metadatos, pues de hecho
son datos que "hablan" sobre datos, no es, típicamente, el dominio de las bases de datos.
Esta visión se puede resumir de la siguiente manera:

(...) databases represent sets of definite atomic statements (facts) and knowledge bases
may, in addition, represent sets of general statements and conditional statements (rules).

En las bases de conocimiento: una colección de hechos y reglas mediante los cuales el
sistema es capaz de extraer conocimiento que no está almacenado de forma explícita. Por
tanto, para la IA, una estructura de datos que no contenga más que "hechos" no es
considerada como conocimiento, sino tan sólo como una fuente potencial de información.
La IA, por tanto, pone el énfasis en el comportamiento computacional, es decir el uso de los
datos por parte de los procedimientos.

Podríamos estipular que, en general, el conocimiento identifica información sobre
conceptos generales, mientras que los datos conforman información sobre entidades
específicas. En este sentido, los datos reflejan el estado de cosas de un determinado UoD en
un momento determinado, y por tanto son altamente susceptibles de modificaciones. En
cambio, el conocimiento sobre cómo interpretar y usar esos datos no cambiará tan a
menudo. Además, aunque el conocimiento sea complejo, su dominio es el de las
generalizaciones sobre tipos, y no el de las instancias específicas, que es el dominio de los
datos.




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Podemos resumir lo expuesto diciendo que una base de conocimiento contendrá
conocimiento sobre algo, y será capaz de referir ese conocimiento al mundo real. Este
conocimiento es abstracto y generalizador. Los datos son concretos y describen de forma
detallada entidades del mundo real.

Como es de suponer los sistemas para soportar el almacenamiento de conocimiento
necesitan una notación muy avanzada y precisa, pero por lo general no son capaces de
hacer frente a cantidades ingentes de información, aspecto en el que las bases de datos
sobresalen. Información es lo que se obtiene cuando los datos son analizados, ya sea por un
agente humano o por una aplicación externa. Por tanto, de una base de datos se extrae
información, mientras que ésta se encuentra explícitamente e implícitamente almacenada en
una base de conocimiento.

Una interpretación en términos cognitivos de este extremo es que una KB contiene
información representada de una forma más parecida a cómo los humanos la almacenamos.
El término "conocimiento", hace referencia específica a las reglas en las que la información
ha de ser usada, así como a diversos procesos cognitivos en relación con la actualización de
la información contenida en un sistema.

Si un sistema contiene información representada a modo de generalizaciones sobre datos y
es capaz de usar esta información de forma inteligente, actualizarla según necesidades y
proveer información acerca de la información que contiene (ser "consciente" de sus
limitaciones), entonces es un sistema de conocimiento. Si, por el contrario, un sistema
contiene una gran cantidad de datos específicos sobre un determinado universo y provee los
mecanismos necesarios para recuperar y modificar esa información, ya sea por un programa
o por un usuario humano2, entonces es un sistema de base de datos.

El primer paso para desarrollar tanto una base de datos como una base de conocimiento ha de ser
la elección de un determinado modelo de datos en el caso del primero o de un esquema de
representación en el caso del segundo (Mylopoulos 1986). Esta elección repercutirá directamente
en las características y posibilidades del sistema de información. En este apartado nos limitaremos
a exponer una taxonomía de esquemas de representación para los sistemas basados en el
conocimiento clásicos y otra clasificación tradicional de modelos de datos.

A esta actividad, es decir, el estudio de los sistemas desde un punto de vista más o menos
abstracto se le denomina modelado conceptual. Por tanto, se entiende por modelado conceptual la
descripción de un sistema de información (KBMS, DBMS, aplicaciones construidas con algún
lenguaje de programación) en un nivel de abstracción por encima del nivel de arquitectura e
implementación.

En IA, el problema de diseñar un sistema experto se centra en construir una base de conocimiento
que represente el conocimiento de una empresa determinada. También las metodologías de bases
de datos han venido ofreciendo desde su etapa de madurez modelos semánticos de datos. Los
modelos de datos clásicos ofrecen niveles de abstracción muy bajos, es decir la correspondencia
entre el nivel conceptual y el nivel físico suele ser muy directa. Los modelos semánticos de datos
intentan escalar en el nivel de abstracción para poder dar cuenta de estados y procesos complejos
de una forma relativamente simple. Como veremos, estos modelos están altamente influenciados
por los sistemas de KB, que desde el principio fueron dotados de grandes capacidades de
abstracción.


Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Ejemplo: Se representa la base de conocimiento de los lenguajes de programación.

Hechos:
   1. El lenguaje posee funciones predefinidas.
   2. El lenguaje trabaja sobre cualquier plataforma
   3. El lenguaje trabaja con programación procedimental.
   4. El lenguaje es declarativo.
   5. El lenguaje es orientado a objeto.
   6. El lenguaje trabaja únicamente sobre ambiente Windows.
   7. El lenguaje trabaja sobre ambiente MS-DOS.
   8. El lenguaje trabaja orientado a eventos.
   9. El lenguaje permite la herencia
   10. El lenguaje permite polimorfismo.

Reglas:
       R1: 1 ^ 2 => 6
       R2: 9 ^ 10 => 5
       R3: - 7 v 5 => 10
       R4: 10 ^ 8 => 9

     2. Características

     •    Las KB son la evolución lógica de los sistemas de bases de datos tradicionales, en
          un intento de plasmar no ya cantidades ingentes de datos, sino elementos de
          conocimiento así como la manera en que éste ha de ser utilizado. También se les
          trata de dotar de conocimiento sobre sí mismas, es decir, una KB ha de "saber lo
          que sabe".

     •    El sistema gestor de bases de conocimiento (KBMS: Knowledge Base Management
          System) posee una comercialización prácticamente anecdótica, y por supuesto no
          existe ningún estándar.

     •    Una de las principales características de los sistemas basados en el conocimiento es
          que no permiten la utilización de la información contenida en ellos por parte de
          aplicaciones externas.

     •    La mayor parte de las aserciones de una KB contienen variables dependientes en el
          sentido lógico, son de muchos tipos diferentes, y existen muy pocas aserciones de
          cada tipo (generalmente sólo una).

     •    Una KB es un sistema activo de forma inherente. Las acciones que una KB lleva a
          cabo van desde la invocación de procedimientos cuando se accede a un determinado
          slot o casilla (en el caso de un esquema de representación basado en marcos),
          pasando por procesos deductivos o propagación de restricciones (en el caso de
          esquemas de redes semánticas genéricas). A esto se le denomina activación de
Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

          procesos, disparo o triggering. Este mecanismo puede incluso acceder y modificar
          los hechos y reglas contenidos en su propio repositorio de datos.

     •    La KB contiene conocimiento sobre algo, y será capaz de referir ese conocimiento
          al mundo real. Este conocimiento es abstracto y generalizador.
     •    Los sistemas para soportar el almacenamiento de conocimiento necesitan una
          notación muy avanzada y precisa, pero por lo general no son capaces de hacer frente
          a cantidades ingentes de información.
     •    En una KB se encuentra explícitamente e implícitamente almacenada la
          información.
     •    Un KBMS debe ofrecer dos posibilidades fundamentales: 1) Mecanismos de
          razonamiento; y 2) Mecanismos de explicación .
     •    Las KB se han desarrollado en diversos ámbitos con propósitos específicos.
     •    Las KB son utilizadas en las siguientes aplicaciones de IA: Sistemas expertos,
          sistemas de procesamiento de lenguaje natural y sistemas de visión robótica.

En general se supone que un KBMS, a diferencia de un DBMS, debe ofrecer estas dos
posibilidades fundamentales (Mylopoulos 1986):

     •    Mecanismos de razonamiento: el KBMS debe ser capaz de extraer conclusiones lógicas a
          partir de la información y reglas que contiene.
     •    Mecanismos de explicación que permitan al usuario del KBMS averiguar el estado del
          mecanismo de razonamiento, obtener consejo, y justificación de una determinada
          conclusión obtenida por el mecanismo de razonamiento

   A partir de estos requerimientos deberíamos establecer alguna tipología de KBMSs atendiendo
no a su arquitectura (no existen arquitecturas genéricas estándar), sino a su funcionalidad. Lo que
caracteriza a los sistemas de representación de conocimiento es que se han desarrollado en
diversos ámbitos con propósitos específicos. Mientras que un mismo sistema de bases de datos se
puede utilizar para múltiple propósitos, los KBMS no son por lo general de propósito general.
(Jarke et al. 1989) presentan la siguiente tipología de aplicaciones de IA en las que las bases de
conocimiento son utilizadas:

     •    Sistemas expertos
     •    Sistemas de procesamiento de lenguaje natural
     •    Sistemas de visión robótica
     •    Entornos de desarrollo

Son los segundos los que nos interesan, aunque en realidad la mayoría de los sistemas de IA
toman la forma de sistemas expertos. Las relaciones entre el procesamiento del lenguaje natural y
los KBMS han estado siempre motivadas por los intereses de los investigadores en IA, no por los
de lingüistas o lexicógrafos. La aplicación de sistemas basados en el conocimiento a la TA es muy
novedosa, y, según pensamos, los clásicos sistemas de KBMS no se adaptan a las necesidades
de este tipo de aplicaciones, al no conceder la importancia necesaria a la información detallada en
general ni a los aspectos procedimentales.

El interés de los investigadores de IA por el lenguaje natural está centrado casi exclusivamente en
la comunicación hombre-máquina, por tanto su objetivo es la construcción de interfaces en
lenguaje natural que faciliten esta interacción. Éstos son los denominados interfaces de lenguaje
natural (NLI: Natural Language Interfaces).

Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

De hecho, el interés por los sistemas de NLP basados en el conocimiento surgió a raíz de la
necesidad de construir interfaces en lenguaje natural para sistemas expertos. Estos sistemas son
alimentados con toda la información disponible sobre un determinado tema muy específico, por
ejemplo diagnósticos médicos, sistemas de ingeniería. Después, mediante un interfaz apropiado
que acepta un conjunto de estructuras sintácticas y elementos léxicos específico, son capaces de
responder adecuadamente a consultas complejas relacionando la información que poseen.

Las tareas para las que estos sistemas se desarrollan son, casi por definición, complejas. Por
tanto, un sistema experto es un sistema computacional capaz de representar y razonar sobre un
dominio determinado que precisa de gran cantidad de conocimiento, tal como la aeronáutica o la
medicina. Se puede distinguir de otros tipos de aplicaciones de IA en que:

     •    Trabaja con temas complejos que normalmente requieren una considerable cantidad de
          experiencia humana;
     •    Debe ser una herramienta práctica y útil; para ello debe ofrecer un alto rendimiento en
          cuanto a velocidad de ejecución y fiabilidad;
     •    Debe ser capaz de explicar y justificar sus soluciones y consejos para convencer al usuario
          de lo correcto de su razonamiento.

Los sistemas expertos son el tipo de aplicación de IA que mejores resultados ha conseguido. Estos
sistemas son usados hoy en día en un amplio abanico de dominios y han probado ser altamente
fiables. Por ello sería deseable la disponibilidad de interfaces en lenguaje natural que facilitasen la
comunicación con el sistema por parte de usuarios no expertos en computación (médicos,
biólogos, ingenieros). Existen tres modos de ver la relación entre un NLI y el KBMS. La primera es
la construcción de un NLI para manejar un KBMS. La segunda construir un KBMS para
implementar un NLI. La tercera construir un NLI (soportado por el KBMS) para sistemas basados
en el conocimiento.




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Para que un programa pueda ser calificado de NLI debe cumplir las dos condiciones siguientes:

     1. Un subconjunto del input o el output del sistema se realiza en lenguaje natural
     2. El procesamiento del input (generación del output) se basa en conocimiento de tipo
        sintáctico, semántico y/o pragmático.

Los tres modos anteriormente citados de usar el lenguaje natural en IA reflejan a nuestro parecer
tres estadios de investigación, superando una primera fase en que se pretendía un análisis
extremadamente simplista del lenguaje. Tras observar la enorme complejidad que éste conlleva, se
hizo obvia la necesidad de tratar el lenguaje humano como un objeto de estudio en sí mismo, para
poder siquiera pensar en usarlo como medio de interacción hombre-máquina. En esta etapa se
empezaron a plantear cuestiones que los lingüistas han estado estudiando desde mucho tiempo
atrás. Un KBMS para NLI habrá de integrar los siguientes tipos de conocimiento (Jarke et al. 1989):

     •    Conocimiento lingüístico.
     •    Conocimiento conceptual.
     •    Conocimiento inferencial.
     •    Conocimiento del usuario.


La Figura resume las fuentes de conocimiento lingüístico necesario para el desarrollo de NLIs
según la IA. Este cuadro revela cómo los investigadores de IA contemplan el estudio del lenguaje
natural:




Finalmente, en IA se señalan algunas características necesarias en una KB para el procesamiento
de lenguaje natural:

     •    Representación de conocimiento: el sistema de representación10 debería ser un esquema
          híbrido que contuviese subesquemas basados en marcos (frames), hechos de base de
          datos y reglas de deducción. Las distintas unidades de conocimiento codificadas en uno de
          estos esquemas tendrán que ser agregadas a los esquemas híbridos de una fuente de
          conocimiento (lingüístico, conceptual, etc.), que a su vez tendrá que ser agregada a la
          base de conocimiento global.
     •    Organización del conocimiento: el KBMS deberá organizar al menos dos bases de
          conocimiento en el caso de un sistema basado en NLI: la KB del lenguaje natural (NL KB) y
          la KB a la que el NLI proporciona acceso mediante lenguaje natural. A su vez, la NLKB
          habrá de estar organizada distinguiendo: conocimiento de entorno, conocimiento específico
          de trabajo y conocimiento específico de diálogo.

Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

     •    Entorno de integración: el KBMS deberá proporcionar un entorno que permita la entrada de
          datos para las distintas KBs. Este aspecto de adquisición de conocimiento se puede
          realizar mediante el NLI una vez se haya construido parcialmente. Lo ideal para crear la
          base de conocimiento de lenguaje natural es el trabajo conjunto de expertos en los dos
          campos: la lingüística y la IA.

Como observamos, las diferencias de descripción detallada de bases de datos y bases de
conocimiento son abismales. Las bases de datos son sistemas muy bien establecidos en donde
todo lo que puede o no puede llevar a cabo el sistema y cómo llevarlo a cabo está perfectamente
establecido. El trabajo en bases de conocimiento se encuentra aún en una fase germinal, y por lo
general se trata de sistemas específicos para necesidades específicas. La literatura en torno a las
bases de conocimiento es aún altamente programática, intentando sentar las bases de lo que se
supone que estos sistemas serán capaces de hacer. No es extraño encontrar aserciones
contradictorias en distintos autores con distintos fines. Incluso así, en el siguiente apartado
intentaremos mostrar cuáles son las definiciones formales y arquitecturas que se han propuesto
hasta ahora. Ni que decir tiene que el entorno de bases de datos se encuentra totalmente
establecido.



ELEMENTOS EN LA SOLUCIÓN DE PROBLEMAS

El proceso general en la solución de problemas tiene:

     1. Estado del problema: Situación y condición de existencia.
     2. Meta: Lograr respuesta final o solución.
     3. Operadores: Procedimiento empleado para cambiar los estados y lograr las metas
        (Algoritmos y subrutinas).

             Esquema de representación de los elementos en la solución de problemas


                             Representación de los elementos en la solución de problemas


                             Estado              Procedimiento                       Metas
                             Inicial



                                             Estrategias de control



Para construir un sistema que resuelva un problema específico, es necesario realizar las
siguientes acciones:




Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Definir el problema con precisión: La definición debe incluir especificaciones precisas
tanto sobre la o las situaciones iniciales como sobre las situaciones finales que se aceptarían
como soluciones al problema.

Analizar el problema: Algunas características de gran importancia pueden tener un gran
efecto sobre la conveniencia o no de utilizar las diversas técnicas que resuelven el
problema.

Aislar y representar el conocimiento necesario para resolver el problema.

Elegir la mejor técnica(s) que resuelve el problema y aplicarla(s) al problema particular.



TÉCNICAS DE SOLUCIÓN.


Las técnicas de solución de problemas en IA, en general, incorporan un proceso de búsqueda.
Todo proceso de búsqueda puede ser visualizado como el recorrido por un árbol en el que cada
nodo representa un estado y cada rama representa las relaciones entre los estados cuyos nodos
conecta.

En general, las reglas contienen en forma implícita el árbol, y se genera en forma explícita sólo
aquellas partes que se decide explorar. Las principales diferencias que pueden aparecer en las
diferentes técnicas de búsqueda, son:

     •    La dirección en la cual se conduce la búsqueda (hacia adelante o hacia atrás).
     •    La estrategia de control, o forma de seleccionar las reglas que pueden ser aplicables. Los
          principales requerimientos de una buena estrategia de control son: que cause
          desplazamiento en el espacio de estado; y, que sea sistemático.
     •    La forma de representar cada nodo del proceso de búsqueda (representación del
          conocimiento).

Muchas veces, tratar el proceso como búsqueda en un grafo en lugar de una búsqueda en un
árbol, puede reducir el esfuerzo que se gasta en explorar senderos, esencialmente iguales, varias
veces. Sin embargo, los requisitos asociados, son:

     •    Cada vez que se genere un nodo se debe chequear para ver si ha sido generado antes.
     •    Se deben introducir procedimientos especiales para que la búsqueda no quede atrapada
          en algún lazo.




Universidad Nacional de Ingeniería.                                Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

       Métodos de búsqueda:
               1. Búsqueda en profundidad.
               2. Búsqueda en amplitud.
               3. Búsqueda de coste uniforme.
               4. Búsqueda en profundidad limitada.
               5. Búsqueda en profundidad iterativa.
               6. Búsqueda bidireccional.

       Problema de los dos recipientes de agua

       Se tienen dos jarras, una de cuatro litros de capacidad y otra
       de tres. Ninguna de ellas tiene marcas de medición. Se tiene
       una bomba que permite llenas las jarras de agua. ¿Cómo se
       puede lograr tener exactamente dos litros de agua en la jarra
       de cuatro litros de capacidad?

       Los operadores que puede utilizar son:: llenar la jarra de 4
       litros; llenar la jarra de 3 litros; vaciar un poco la jarra de 4
       litros; vaciar un poco la jarra de 3 litros; vaciar la jarra de 4
       litros en el suelo; vaciar la jarra de 3 litros en el suelo; verter
       agua desde la jarra de 3 litros a la jarra de 4 litros hasta que la
       jarra de 4 litros esté llena; verter agua desde la jarra de 4
       litros a la jarra de 3 litros hasta que la jarra de 3 litros esté
       llena; verter todo el agua de la jarra de 3 litros en la jarra de 4
       litros; verter todo el agua de la jarra de 4 litros en la jarra de
       3 litros; verter 2 litros de la jarra de 3 litros en la jarra de 4
       litros). Implementa el problema realizando búsqueda en
       anchura y en profundidad

       Reglas de Producción

       x = 0,1,2,3,4 y = 0,1,2,3

1. Llenar el recipiente de 4 galones:                      2. Llenar el recipiente de 3 galones:
SI x < 4 => (4, y)                                         SI y < 3 => (x, 3)
3. Vaciar el recipiente de 4 galones:                      4. Vaciar el recipiente de 3 galones:
SI x > 0 => (0, y)                                         SI y > 0=> (x, 0)
5. Pasar agua del recipiente de 3 galones al de 4, hasta   6. Pasar agua del recipiente de 4 galones al de 3, hasta
que se llene:                                              que se llene:
SI (x + y) >= 4 ^ y > 0 => (4, y - (4 - x))                SI (x + y) >= 3 ^ x > 0 => (x - (3 - y), 3)
7. Pasar toda el agua del recipiente de 3 galones al de    8. Pasar toda el agua del recipiente de 4 galones al de
4:                                                         3:
SI (x + y) <= 4 ^ y > 0 => (x + y, 0)                      SI (x + y) <= 3 ^ x > 0 => (0, x + y)




       Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
       Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




Búsqueda en espacios de estados.

begin
          estado := est_inic
          while not estado = est_fin do
          begin
                  regla := selecc(R, estado)
                  estado := aplicación(regla, estado)
          end
end
-------------------------------------------------------------

regla := selecc (R, estado)               Control, según sea, la búsqueda será más o menos
“inteligente”.

Estrategias de control: características fundamentales.

          •     Debe causar que el problema avance.
                Ejemplo: en el problema de los “cubos de agua” no es válido seleccionar
                siempre la primera regla aplicable.
          •     Debe ser sistemático.
                Es decir, siempre debe producir la misma solución ante el mismo problema.
                Ejemplo: no es válido como estrategia de control elegir una operación al azar.




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


MÉTODOS DE BÚSQUEDA (CIEGAS – HEURÍSTICA )
Métodos Ciegos
                                      Exploración del árbol de búsqueda sistemáticamente pero sin información

Estos métodos se caracterizan por no poseer experiencia, información o conocimiento
correspondiente al ambiente en donde se realizará la búsqueda, solo se posee conocimiento
de estado inicial y la meta que se pretende alcanzar.

Ejemplo: Suponga que desea encontrar una trayectoria de una ciudad “S” (punto inicial)a
otra “G”(meta). Para encontrar una trayectoria apropiada necesitará considerar dos costos:
el costo de cálculo para encontrar la trayectoria y el costo del viaje cuando se sigue a
trayectoria.

Árbol de búsqueda: Es un tipo especial de árbol semántica en el que cada nodo representa
una trayectoria, las ramas conectan trayectorias a extensiones de trayectorias en un solo
paso. El árbol de búsqueda contiene escritores que conectan una trayectoria a una
descripción de trayectoria. Además contiene lectores que producen una descripción de una
trayectoria.

Las trayectorias que no alcanzan la meta se conocen como trayectorias parciales; las
trayectorias que alcanzan la meta se llaman trayectorias completas. El nodo raíz es el que
no tiene nodo antecesor. Cada hijo representa una trayectoria que es una extensión de un
nodo de la trayectoria representada por su padre. Se conoce como profundidad del árbol a la
cantidad de nodos existentes desde la raíz hasta la ultima hoja del árbol.

La expansión de un nodo es cuando se determina los hijos den este. Se dice que los nodos
están abiertos cuando no se expande, en caso contrario se vuelven cerrados.

Ejemplo: El árbol de búsqueda formado para el ejemplo anterior es:



                                A                       B                         C


               S                                                                                     G


                                      D             E                         F




Universidad Nacional de Ingeniería.                                      Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


 Búsqueda Heurística
Para resolver muchos problemas difíciles (explosión combinatoria), es necesario muchas veces
llegar a un compromiso de los requerimientos de movilidad y sistematicidad y construir una
estructura de control que no necesariamente garantiza el encontrar la mejor respuesta, sino que
casi siempre encuentra una buena respuesta. Una técnica heurística mejora la eficiencia del
proceso de búsqueda sacrificando, usualmente, exhaustividad. Las consideraciones que sirven de
soporte a un proceso de búsqueda heurística, son:

     •    Rara vez se requiere, en realidad, una solución óptima. Una buena aproximación,
          normalmente, sirve muy bien.
     •    A pesar que una aproximación heurística no puede resultar muy buena en el peor de los
          casos, raras veces aparecen los peores casos en la práctica.

El tratar de comprender por qué un heurístico funciona o por qué no funciona, a menudo conduce a
una mejor comprensión del problema.



Búsqueda en amplitud

Se basa en desarrollar completamente cada nivel del árbol antes de pasar a
desarrollar el siguiente.




Algoritmo general

1. lista := estado_inicial
2. MIENTRAS (lista ≠ 0) y no solucion
   2.1. Eliminar primer elemento de lista y asignarlo a E
   2.2. Para cada regla aplicable a E
       2.2.1. Aplicar la regla
       2.2.2. Si el estado resultante el objetivo, salir devolviéndolo
       2.2.3. Si no, añadir el nuevo estado a lista




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

La búsqueda en amplitud se extiende uniformemente en el árbol de búsqueda: La
búsqueda en amplitud revisa todas las trayectorias de una longitud dada antes de avanzar a
una trayectoria más larga. Primero se expande el nodo raíz, y luego todos los nodos
generados por este; luego, sus sucesores, y así sucesivamente. En general, todos los nodos
que estan en la profundidad d del árbol de búsqueda se expanden antes de los nodos que
estan en la profundidad d + 1. Este método de búsqueda permite encontrar primero la meta
más próxima.

Para efectuar una búsqueda en amplitud:

     1. Forme una cola de un solo elemento consistente en una trayectoria de longitud cero
        que contenga solo al nodo raíz.

     2. Hasta que la primera trayectoria de la cola concluya en el nodo meta o se vacíe la
        cola:
        2.1.Elimine la primera trayectoria de la cola cree nuevas trayectorias extendiendo el
            primer paso a todos los vecinos del nodo terminal.
        2.2.Rechace las trayectorias nuevas con ciclos.
        2.3.Agregue las nuevas trayectorias, si las hay al final de la cola.

     3. Si se halla el nodo meta, mencione que hubo éxito, si no, notifique el fracaso.

Ejemplo:
     Para efectuar la búsqueda en amplitud se debe construir el árbol siguiente.


                                                      S


                                 A                                    D


               B                          D                   A                     E


       C               E                      E               B            B                 F


               D             F        B           F       D       E   A         C
                                                                                             G


Al considerar el factor de ramificación b (la raíz del árbol de búsqueda genera b nodos en el
primer nivel, cada uno de los cuales genera b nodos más, obteniendo b2 nodos en el
segundo nivel, y así sucesivamente). Supóngase que la en la solución hay una ruta de

Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

longitud d, por lo que la cantidad máxima de nodos expandidos antes de poder encontrar
una solución es bd. Al tener un árbol b = 2 como factor de ramificación, y una profundidad
de d = 14, se expandirían 214 = 262,144 nodos antes de encontrar una solución, lo que
provocaría una explosión combinatoria, causando el incremento considerable de los costos
y tiempos empleados en la búsqueda de solución.


Búsqueda en profundidad (“depth-first”)

Se basa en elegir un camino en el árbol y seguirlo hasta el final. Si no se
encuentra la solución se retrocede (“backtraking”) y se prueba por otro camino.




Algoritmo general:

1- SI estado_inicial = estado_objetivo ENTONCES salir con éxito
2- MIENTRAS no éxito y no fracaso
       a- Generar los sucesores del estado inicial.
              SI no hay más sucesores ENTONCES fracaso
       b- Llamar al algoritmo para cada uno de los nodos generados como
              estado inicial
       c- Si se devuelve éxito, devolver éxito, si no continuar el bucle

Ventajas de la búsqueda en profundidad

     •    Requiere mucha menos memoria (sólo hay que guardar el camino actual.)
     •    Puede encontrar una solución sin examinar mucho el árbol, sobre todo si
          hay varios caminos a la solución.




Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Búsqueda de coste uniforme
Se basa en desarrollar el nodo con menor coste.




Algoritmo general.

1- lista := estado_inicial
2- MIENTRAS (lista ≠ 0) y no solucion
        a- Eliminar primer elemento de lista y asignarlo a E
        b- Para cada regla aplicable a E
               i- Aplicar la regla
               ii- Si el estado resultante el objetivo, salir devolviéndolo
               iii- Si no, añadir el nuevo estado a lista

Búsqueda en profundidad limitada

Búsqueda en profundidad con un límite de profundidad l. Implementación: los
nodos a profundidad l no tienen sucesores.




Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Búsqueda en profundidad iterativa

Se basa en elegir utilizar búsqueda en profundidad limitada, aumentando l si no se
encuentra la solución.




Algoritmo Generación y Prueba (GENERATE-AND-TEST)

1. Generar una posible solución. (estado o camino)

2. Comprobar para ver si es una solución, mediante comparación con los elementos del conjunto
de objetivos aceptables.

3. Si la solución ha sido encontrada salir, de otra manera, retornar al paso 1.




Algoritmo Primero en Profundidad (DEPTH-FIRST)

     1. Si el estado inicial es el objetivo, salir y retornar éxito.
     2. Sino, haga lo siguiente hasta que se obtenga señal de éxito o fracaso:
            a. Genere un sucesor E del estado inicial. Si no hay más sucesores, retorne con
                     señal de fracaso.
                b. Llame recursivamente al algoritmo, esta vez con E como el estado inicial.
                c. Si la señal es éxito, retorne, de otra manera, continúe en este lazo




Universidad Nacional de Ingeniería.                                  Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

La búsqueda en profundidad incursiona en el árbol de búsqueda: Siempre se expande
una de los nodos que se encuentre en lo más profundo del árbol, solo si la búsqueda
conduce a un callejón sin salida (un nodo sin meta que no tiene expansión), se revierte la
búsqueda y se expanden los nodos de niveles menos profundos. Para llevar a cabo una
búsqueda en profundidad debe:

1. Primero conforme una cola de un elemento consistente en una trayectoria de longitud
cero que contenga solo al nodo raíz;

2. Hasta que la primera trayectoria de la fila termine en el nodo meta o se vacíe la cola,

        2.1 Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo el
        primer paso a todos los vecinos del nodo terminal;
        2.2. Rechace todas las trayectorias nuevas con ciclos;
        2.3. Agregue las nuevas trayectorias, si las hay, al frente de la cola.
     1. Si el nodo meta se alcanza, mencione que hubo éxito; de otro modo, notifique el
        fracaso.

1. Inicializar todos los nodos al estado de preparado (ESTADO=1)
2.     Meter el nodo inicial A en la pila y cambiar su estado a estado de espera
(ESTADO=2).
3. Repetir los pasos 4 y 5 hasta que la pila este vacia.
4.      Sacar el nodo N en la cima de la pila. Procesar el nodo N y cambiar su
        estado al de procesado (ESTADO=3).
5.      Meter en la pila todos los vecinos de N que estén en estado de
        preparados (ESTADO=1) y cambiar su estado a estado de espera
        (ESTADO=2).
   [ fin de bucle del paso 3 ]
6. Salir.

  (Algoritmo recursivo)
  1- SI estado_inicial = estado_objetivo ENTONCES salir con éxito
  2- MIENTRAS no éxito y no fracaso
          a- Generar los sucesores del estado inicial.
                  SI no hay más sucesores ENTONCES fracaso
          b- Llamar al algoritmo para cada uno de los nodos generados como estado inicial
          c- Si se devuelve éxito, devolver éxito, si no continuar el bucle




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Ejemplo: Para el árbol de búsqueda anterior se tendría:

                                                      S

                                              A

                                      B
                                                      D
                                C             E


                                          D       F


                                                  G




Se decide encontrar la trayectoria a través de la cola: S – A – B – C, pero esta trayectoria no
encuentra la meta “G”. Por lo que se decide al nodo antecesor mas cercano que tenga una
alternativa sin explorar, que para el árbol en análisis es B, es este caso se sigue: S – A – B –
E – D; igual que la cola anterior, no se encuentra la meta “G”. Nuevamente se ubica en el
nodo antecesor mas cercano que tiene una alternativa sin explorar, en este caso es E, se
encuentra la trayectoria:

S – A – B – E – F – G. A través de esta trayectoria se logra encontrar la meta “G”, por lo
que se notifica el éxito.

Si un árbol de búsqueda tiene un factor de ramificación b y profundidad máxima m, la
cantidad de nodos a revisar será “bm”.

La desventaja de la búsqueda en profundidad es la posibilidad de que se quede estancada al
avanzar por una ruta equivocada. En muchas ocasiones los árboles de búsqueda son muy
profundos, o hasta infinitos, por lo que una búsqueda en profundidad no es recomendable
en estos casos.

Ventajas de la búsqueda en profundidad

     •    Requiere mucha menos memoria (sólo hay que guardar el camino actual.)
     •    Puede encontrar una solución sin examinar mucho el árbol, sobre todo si hay varios
          caminos a la solución.




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Algoritmo Primero a lo Ancho (BREATH-FIRST)

     1. Crear una variable NODE_LIST y ponerla al estado inicial.
     2. Hasta que se encuentre el objetivo o hasta que NODE_LIST esté vacía haga lo siguiente:
           a. Remover el primer elemento de NODE_LIST, y llamarlo E. Si NODE_LIST estuvo
                   vacía, salir.
                b. Para cada forma en que cada regla puede ajustarse al estado descrito en E, haga
                   lo siguiente:
                      i. Aplicar la regla para generar un nuevo estado.
                     ii. Si el nuevo estado es un estado objetivo, salir y retornar este estado.
                    iii. Sino, añada el nuevo estado al final de NODE_LIST.

Búsqueda en Anchura: A diferencia con la búsqueda en profundidad ahora se visitan
todos los vecinos de un vértice antes de pasar al siguiente. Por tanto no hay necesidad de
retroceder. Una vez etiquetados todos los vecinos de un vértice X, se continúa con el
primer vértice alcanzado después de X en la búsqueda. Esta técnica se utiliza para resolver
problemas en los que se pide hallar una solución óptima entre varias.

En general la búsqueda en anchura comenzando de un nodo de partida A es la siguiente:

Primero examinamos el nodo de partida A. Luego examinamos todos los vecinos de A.
Luego examinamos todos los vecinos de los vecinos de A y así sucesivamente. Con el uso
de una cola, garantizamos que ningún nodo sea procesado más de una vez y usando un
campo ESTADO que nos indica el estado actual de los nodos.


Algoritmo para la Búsqueda en Anchura:

Este algoritmo realiza la búsqueda en anchura en un grafo G comenzando en un nodo de
partida A:

1.   Inicializar todos los nodos al estado de preparados (ESTADO=1).
2.    Poner el nodo de partida A en la COLA y cambiar su estado a espera (ESTADO=2).
3.   Repetir pasos 4 y 5 hasta que COLA esté vacía.
4.      Quitar el nodo del principio de la cola, N. Procesar N y cambiar su
        estado a procesado (ESTADO=3).
5.      Añadir a COLA todos los vecinos de N que estén en estado de
        preparados (ESTADO=1) y cambiar su estado al de espera
        (ESTADO=2).
   [ fin del bucle del paso 3 ]
6. Salir.




Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Búsqueda Bidireccional o Atrás y Adelante: Es una búsqueda simultanea que avanza a
partir del estado inicial o nodo raíz y que retrocede a partir de la meta, deteniéndose cuando
ambas búsquedas se encuentran en un punto intermedio. Si el factor de ramificación es b y
la profundidad es d, entonces la solución estará a 2bd/2 pasos. Esta búsqueda es útil cuando
el factor de ramificación es b en ambas direcciones.

La búsqueda no determinista se mueve al azar en el árbol de búsqueda: Cuando se
hace una búsqueda no determinista se expande un nodo abierto que se escoge al azar. De
este modo se evita la posibilidad de atascarse revisando un número excesivo de ramas o
niveles.

Para efectuar una búsqueda no determinista:

     1. Forme una cola de un elemento consistente en una trayectoria de longitud cero que
        contenga solo al nodo raíz.
     2. Hasta que la primera trayectoria de la cola concluya en el nodo meta o se vacíe la
        cola:
        a. Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo
            el primer paso a todos los vecinos del nodo terminal.
        b. Rechace las trayectorias nuevas con ciclos.
        c. Agregue las nuevas trayectorias al azar en la cola.
     3. Si se halla el nodo meta, mencione que hubo éxito, si no, notifique el fracaso.


Métodos de búsqueda Heurística
                       Información sobre el problema (información del dominio) que permite reducir la búsqueda.

Todos los algoritmos de fuerza bruta son poco eficientes debido a que son búsquedas a
ciegas, es decir, no usan conocimiento sobre el dominio para guiarse en busca del siguiente
nodo mejor situado.

La búsqueda heurística se basa en que la mayor parte de los "espacios problemas"
proporcionan información adicional con un pequeño coste computacional. Esta información
adicional nos ayuda a elegir los nodos que estén más cerca de la meta. Esta información se
llama Heurística.

Cuando se posee experiencia, información o algún conocimiento del medio en el cual se
realizará la búsqueda se dice que esta es una búsqueda heurística.

Se llama Función de Evaluación a una función f que relaciona cada nodo con un número
real y que sirve para estimar el costo relativo de continuar la búsqueda desde ese nodo. Por
lo general, f(N) se considera que es la distancia estimada que queda entre N y el Nodo
Meta. Otras veces se dice que f(N) es la longitud estimada desde el Nodo Raíz hasta el
Nodo Meta, pasando por el nodo N, etc... Esta función de evaluación se utilizará para
decidir el orden en que se explorarán los nodos durante la búsqueda. Hay varios algoritmos
de búsqueda que usan una de estas funciones de evaluación heurística.

Universidad Nacional de Ingeniería.                                        Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Entre ellos están:

          Mejor primero (Primero el mejor.)

Se basa en utilizar una función de evaluación para cada nodo (estimación de la idoneidad
de expandir ese nodo). Se aplica: Al expandir siempre el nodo no expandido más idóneo.
Mecanismos: • Búsqueda de Greedy.
              • Búsqueda A*.

          A*.

Se basa en evitar expandir caminos que ya acumulan un coste elevado (tener en cuenta lo
que ha costado llegar al nodo actual. Su función de evaluación: f(n) = g(n) + h(n), (se
denomina potencia heurística):
       g(n): coste para llegar al nodo n.
       h(n): coste estimado para llegar a un nodo solución, desde el nodo n.
       f(n): coste total estimado del camino para llegar al objetivo a través del nodo n.

          Escalar colinas.


Primero el mejor.

Búsqueda primero el mejor: Se asemeja al ascenso de colina, diferenciándose en que el
ascenso de colina exige un movimiento más desde el nodo abierto de más reciente creación
cuando el movimiento hacia delante se ve impedido. En la búsqueda primero el mejor, el
movimiento adicional se realiza a partir del mejor nodo abierto que se tiene hasta ese punto,
sin importar donde esté ese nodo en el árbol parcialmente desarrollado.

Este algoritmo, combina las ventajas de los algoritmos primero en profundidad y primero en
amplitud. Sigue un sendero a la vez, pero puede cambiarse a otro sendero que parece más
prometedor que el que está siguiendo.

 En este sentido, puede considerarse que es un algoritmo que realiza su proceso de búsqueda en
todos sus ramales por que representan una alternativa de solución. Para su operación, el algoritmo
necesita dos listas de nodos y una función heurística que estime los méritos de cada nodo que se
genere:

1. ABIERTOS - Es una variable que contiene los nodos que han sido generados. La función
heurística ha sido aplicada a ellos, pero todavía no han sido examinados, es decir no se han
generado sus sucesores. ABIERTOS puede considerarse como una COLA DE PRIORIDADES en
la que los elementos con mayor prioridad son los que tienen los valores más prometedores, dados
por la función heurística.

2. CERRADOS - Es una variable que contiene los nodos que han sido examinados. Es necesario
tener esta información, para que la búsqueda sea en un grafo y no en un árbol.



Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

3. FUNCIÓN HEURÍSTICA - Permite que el algoritmo busque primero por senderos que son o
parecen más prometedores.

Para muchas aplicaciones, es conveniente definir esta función f', como la suma de dos, que se las
llamará g y h'. La función g es una medida del costo de llegar desde el nodo inicial al nodo actual.
La función h' es una estimación del costo adicional para llegar desde el nodo actual al estado
objetivo. Aquí es donde se explota el conocimiento que se dispone sobre el dominio del problema.

Es decir, la función combinada f' representa una estimación del costo de llegar desde el estado
inicial hasta el estado objetivo, siguiendo el sendero que ha generado el nodo actual. Si el nodo
actual ha generado más de un sendero, el algoritmo deberá dejar registrado sólo el mejor.

El algoritmo, en la forma que fue formulado, se aplica a grafos. Puede ser simplificado para
aplicarse a árboles, si no se preocupa de comprobar si un nuevo nodo esta en ABIERTOS o en
CERRADOS. Esto aceleraría la generación de nodos y la búsqueda, para casos en que es poco
probable que se repitan nodos.

Usualmente, el costo de ir de un nodo a su sucesor, g, se fija en una constante igual 1, cuando se
desea encontrar un sendero a la solución, que involucre el menor número de pasos. Si por el
contrario nos interesa encontrar el camino menos costoso y algunos operadores cuestan más que
otros, se asume un valor de g, que refleje esos costos. Un valor de g igual a cero significaría que
simplemente nos interesa llegar a alguna solución, de cualquier manera.

Si h' es un estimador perfecto de h, hará que A* converja inmediatamente al objetivo, sin
búsqueda. Mientras mejor sea h', más cerca se estará de alcanzar esta aproximación directa. Si h'
vale cero, la búsqueda será controlada por g. Si el valor de g es también cero, hará que la
búsqueda sea aleatoria. Si el valor de g es siempre 1, hará que la búsqueda sea primero en
anchura. Para los casos en que h' no sea perfecto ni cero, y nunca llega a sobrestimar el valor de
h, el algoritmo A* está garantizado que encontrará un sendero óptimo a un objetivo, en caso de que
exista solución. Cuando un algoritmo garantiza el encontrar una solución óptima, si esta existe, se
dice que es admisible.

En la búsqueda "el mejor primero" el movimiento hacia adelante se hace desde el nodo
mejor situado con respecto a la meta, sin tener en cuenta su situación en el árbol.

Los caminos que se encuentren utilizando este método de búsqueda serán más cortos que
los que se encuentren buscando con otros métodos, ya que con esta estrategia se parte del
nodo mejor situado.

Igual que con el método de escalar colinas este método requiere clasificar los nodos de
acuerdo con su situación. En este caso, sin embargo, se clasifica toda la estructura de datos.
Por lo tanto, en cada paso del proceso de búsqueda se selecciona el nodo más prometedor
de todos los que se han generado hasta el momento. Esto se consigue aplicando una
función heurística apropiada a cada nodo generado expandiendo, a continuación, aquel que
ha dado el mejor resultado al evaluar dicha función heurística.

Si uno de los sucesores (hijo) del nodo expandido es la meta, la búsqueda termina. En caso
contrario, estos sucesores se suman al conjunto de nodos generados hasta el momento y se
repite el proceso de selección del nodo más prometedor.


Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

El algoritmo que se presenta a continuación realiza la búsqueda a través de un grafo
dirigido en el cual cada nodo representa un punto, o estado, en el espacio del problema.
Cada nodo es, entonces, una estructura que contiene, además de una descripción del estado
del problema que representa, una indicación de lo prometedor que es respecto a los demás
nodos, un enlace-padre que apunta al mejor nodo de los nodos-padre que cuelga, y por
último, una lista de sus nodos sucesores (aquellos que se generan a partir de él). El enlace-
padre permite recobrar el camino hasta la meta una vez se ha llegado a ella. La lista de
sucesores permite, cuando se encuentra un camino mejor hasta un nodo ya generado,
propagar esta mejora hacia sus sucesores.


Para implementar este procedimiento se necesitan dos listas de nodos


          OPEN: Contiene los nodos que se han generado y a los cuales se ha aplicado la
          función heurística pero todavía no han sido examinados (no se han generado sus
          sucesores). OPEN es, en realidad, una cola de prioridad en la que los elementos con
          mayor prioridad son aquellos con valor más prometedor para la función heurística.



          CLOSED: Contiene los nodos que ya han sido examinados. Es necesario mantener
          estos nodos en memoria ya que cuando se genera un nuevo nodo hay que comprobar
          su ya ha sido generado antes.



DESCRIPCION GENERAL DEL ALGORITMO "EL MEJOR PRIMERO"


Se comienza insertando el nodo S (nodo de comienzo) en la lista OPEN. A continuación se
van procesando sucesivamente los nodos en OPEN: se comprueba si son nodos meta, y en
caso de que no lo sean, se meten en la lista CLOSED, se introducen sus sucesores en
OPEN y se actualiza la función heurística f(N) para cada nodo N procesado. Los nodos en
OPEN son tratados según un orden que da la mayor prioridad al nodo con menor f(N).




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

ALGORITMO

          1. Insertar el nodo de comienzo S en OPEN, evaluar f(S) y asociar este valor
          con S. Poner el enlace-padre a NULL.
          2. Si OPEN está vacío, devolver FALLO y parar.

          3. Elegir un nodo N de OPEN tal que f(N) < f(M) para cada M en OPEN, tal
          que N es un nodo meta algún nodo meta tiene ese valor mínimo para f.
          4. Poner N en CLOSED y quitar N de 0PEN.

          5. Si N es un nodo meta devolver el camino desde S hasta N. Este camino se obtiene
          recorriendo f hacia atrás los enlaces-padre desde N hasta S. Luego parar.

          6. Para cada sucesor J de N que no está aún en OPEN o en CLOSED:

                              a.- Evaluar f(J) y asociarlo con J.
                              b.- Poner J en OPEN.
                              c.- Poner el enlace-padre de- J apuntando hacia N.

          7.- Para cada sucesor J que ya está en OPEN, reevaluar f(J) y comparar este valor
          con el anterior. Si el nuevo valor es menor, asociarlo con J y volver a colocar J en
          OPEN.

          8.- Ir al paso 2

       La eficiencia de este método de búsqueda depende de la función heurística
f que se utilice.



EJEMPLO: Resolver utilizando el método de mejor-primero:




Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

SOLUCION

1. OPEN           A
f(A) =8
P(A) = Null
Luego al final de esta primera etapa tenemos:
OPEN = A
CLOSE = NULL
2.- A ≠ Meta y además es el único nodo en OPEN, luego
        CLOSE        A
        Generamos los sucesores de A
                 B, F, H ∉ OPEN v CLOSED
                 f(B) = 6, P(B) = A
                 f(F) = √37, P(F) = A
                 f(H) =√37, P(H) = A
quedando entonces:
OPEN = B, F, H
CLOSED = A
3. f(B) < f(F). por lo tanto metemos B en CLOSED
        CLOSED B
generamos los sucesores de B
C ∉ OPEN v CLOSED
OPEN       C
f(C) = 4, P(C) = B
quedando entonces:
OPEN = F, H, C
CLOSED = A, B
4.-f(C) < f (F). por lo tanto metemos C en CLOSED
CLOSED         C
generamos los sucesores de C
D ∉ OPEN v CLOSED
f(D) = 2, P (D) = C
quedando entonces:
OPEN = F, H, D
CLOSED = A, B, C
5.- f(D) < f(F). por lo tanto metemos D en CLOSED
CLOSED         D
generamos los sucesores de D
E, G ∉ OPEN v CLOSED
f(E) = 0, P(E) = D
f(G) = 6, P(G) = D

Quedamos entonces:

                      OPEN = F, H, E, G
                      CLOSE = A, B, C, D

6. E es la meta, luego devolverá el camino desde el origen hasta la meta.

Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

METODO DE BUSQUEDA A*

Este método de búsqueda examina los nodos en un orden que da la mayor prioridad a los
nodos que parecen pertenecer al camino más corto desde el nodo inicial hasta la meta. Es
por tanto, similar al método "El Mejor Primero" pero siendo la diferencia fundamental la
función heurística f, ya que ésta no es, simplemente, la estimación de la distancia que queda
desde el nodo, en cuestión, hasta la meta, sino que se suma un factor g, que representa el
coste del mejor camino encontrado hasta el momento, desde el nodo inicial hasta el nodo
actual.

Así, la función heurística f utilizada en la búsqueda A* queda de la siguiente forma:

f =g+h

donde las funciones g y h reflejan respectivamente:

          g = el coste del mejor camino desde el nodo inicial hasta el actual.
          h =estimación del coste involucrado en llegar desde el nodo actual a la meta. En
          esta función h es donde se explota, realmente, el conocimiento que se tiene sobre el
          dominio del problema.

La función combinada f, para un nodo N, representa, por tanto, una estimación del coste
involucrado en llegar desde el nodo inicial hasta un nodo meta a través del camino que
genera el presente nodo N. Si más de un camino generan el nodo N, el algoritmo A*
registra el mejor.

Asumiendo que la estimación dada por h nunca excede la distancia real entre el nodo actual
y la meta, el método A* siempre encuentra el camino más corto entre el nodo inicial y la
meta. Esto se conoce como la admisibilidad del método A*.

Para implementar este método, cada nodo contendrá la misma información que para el
método "El Mejor Primero" y se utilizaran las mismas listas OPEN y CLOSED.


ALGORITMO DE BÚSQUEDA A*

1.-Meter en OPEN el nodo inicial. Inicializar el valor g de este nodo a 0, el valor h
   a lo que corresponda, y el valor f a (0 + h). Inicializar CLOSED con la lista
   vacía.

2.-Hasta que se encuentre un nodo meta, repetir el siguiente procedimiento: Si no
   hay ningún nodo en OPEN, devolver fallo. En caso contrario coger el nodo de
   OPEN que tenga el menor valor para f. Llamar a este nodo MEJOR-NODO.
   Eliminarlo de OPEN. Ponerlo en CLOSED. Ver si MEJOR-NODO es un nodo
   meta. Si lo es devolver la solución (bien MEJOR-NODO o el camino creado
   entre el estado inicial y MEJOR-NODO, según lo que se quiera). En caso

Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

    contrario, generar los sucesores de MEJOR-NODO. Para cada SUCESOR
    hacer lo siguiente:

              a. Poner el enlace-padre de SUCESOR apuntando a MEJOR-NODO.

              b. Evaluar g(SUCESOR)=g(MEJOR-NODO) + coste de ir desde MEJOR-
                 NODO a SUCESOR.

              c. Ver si SUCESOR está ya en OPEN (es decir, ya ha sido generado pero
                 no procesado):

                      i.- Si SUCESOR está ya en OPEN: llamar VIEJO a ese nodo. Hay
                           que decidir si el enlace-padre de VIEJO debe cambiarse para
                           apuntar a MEJOR-NODO. Este debe ser el caso cuando el
                           camino que acabamos de encontrar hasta SUCESOR es más
                           "barato" que el camino ya existente hasta VIEJO (SUCESOR y
                           VIEJO son el mismo nodo en el grafo). Para ello se comparan los
                           valores g de SUCESOR y VIEJO. Si VIEJO es más barato (o
                           igual), no hacer nada. Si, por el contrario, SUCESOR es más
                           barato, cambiar el enlace-padre de VIEJO para apuntar a
                           MEJOR-NODO, registrar el nuevo camino más barato en g(viejo)
                           y actualizar f(VIEJO). Añadir VIEJO a la lista de sucesores de
                           MEJOR-NODO.
                      ii.- Si SUCESOR no está ya en OPEN, ver si está en CLOSED. Si es
                           así, llamar VIEJO a este nodo. Ver cual de los dos caminos, el
                           nuevo o el viejo, es más barato (como en el paso anterior), y
                           ajustar el enlace-padre, y los valores de g y f para VIEJO, según
                           se indica en el apartado c.i.. Si se ha encontrado un camino mejor
                           a VIEJO, esta mejora se debe propagar a los sucesores de
                           VIEJO. Para conseguir esto, hay que tener en cuenta que VIEJO
                           contiene la lista de sus sucesores. A su vez, cada uno de ellos
                           tiene, respectivamente, la lista de sus sucesores, y así
                           sucesivamente, hasta que cada rama termina con un nodo que, o
                           bien está en OPEN, o no tiene sucesores. Por tanto, para
                           propagar el nuevo coste hacia abajo, hay que hacer una
                           búsqueda en profundidad del subarbol que comienza en VIEJO;
                           cambiando el valor g de cada nodo (y luego el de f), y terminando
                           cada rama cuando se llega, bien a un nodo sin sucesores o a un
                           nodo que ya tenía un camino equivalente o mejor (esto garantiza
                           que el algoritmo termina aún cuando se encuentren bucles en el
                                                                               h
                           grafo). Para comprobar esta última condición, ay que recordar
                                                 c
                           que el enlace-padre de ada nodo apunta hacia el mejor padre de
                           generados hasta el momento. Añadir VIEJO a la lista de
                           sucesores de MEJOR-MODO.



Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

               d.- Si SUCESOR no está ya en OPEN o en CLOSED: Poner SUCESOR
                   EN OPEN y sumarlo a la lista de sucesores de MEJOR- NODO.
                   Evaluar: f(SUCESOR) =g(SUCESOR) + h(SUCESOR).

EJEMPLO.




¿Es posible aplicar el método de búsqueda A* en este "mapa de carreteras"?


Si tenemos la función f(N) = g(N) + h(N) donde:

          g(N) = menor distancia real desde el inició hasta N.
          h(N) = menor distancia estimada desde N hasta la meta.

Mediante las coordenadas X, Y de cada nodo se puede calcular la distancia entre
cada par de nodos, luego sí podemos hallar la g(N). Igualmente podemos estimar
la "distancia en línea recta" desde N hasta la meta, por lo tanto, también se puede
hallar h(N). Por consiguiente, podemos aplicar el método de A*.

1.- Hay un único nodo de OPEN, el origen A.

OPEN A
P(A) = NULL
      g(A) = 0
      h(A) = √173
      f(A) = √173

                     quedando al final de esta primera etapa:
                     OPEN = A

                     CLOSED =NIL

2.- A ≠ Meta y además es el único nodo en OPEN luego,
              CLOSED     A
Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Generamos los sucesores de A
                                          B, C ∉ OPEN v CLOSED

                     P(B) = A                                   P(C) = A
                     g(B) = g(A) + dist (A - B)                 g(C) = g(A) + dist (A - C)
                          = 0+√10 =√10                                = 0+√20
                     h(B) = √109                                h(C) = √81
                     f(B) = √10 + √109 = 13.6                   f (C) = √20 + √81 = 13.47

                   OPEN               B                         OPEN         C

                     quedando al final-de esta etapa:


                   OPEN               B, C

                   CLOSED                 A

3.- f(C) < f(B) luego metemos C a CLOSED
                   CLOSED                 C

Generamos los sucesores de C, que en este caso es únicamente D
                   D ∉ OPEN v CLOSED

                   P(D) = C
                   g(D) = g(C) + dist(C - D) = √20+√8=7.3
                   h(D)= √53
                   f(D)=7.3+√53=14.58
                   OPEN      D

                  Quedando al final de esta etapa:

                   OPEN B, D
                   CLOSED   A, C

4.- f(B) < f(D)
                     CLOSED               B
Generamos los sucesores de B que en este caso serían D y C

el sucesor D Є OPEN                             el sucesor C Є CLOSED
      P'(D) = B                                         P'(C) = B
      g'(D) = g(B) + dist (13 - D)                      g'(C) = g(B) + dist (B - C)
      =√10 +√10 = 6.32                                  =√10+√10 = 6.32
                                                          '
        g'(D) = 6.32 < g (D) = 7. 3                     g’ (C) > g(C)

        Luego hay que modificar                 luego no cambia nada

        P(D) = B                                P(C) = A
        g(D) = 6.32                                     g(C) = 4.47

Universidad Nacional de Ingeniería.                                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

        f (D) = g'(D) + h (D)                        f(C) = 13.47
        = 6.32 + √53
        = 13.6

Quedando al final de esta etapa:

                   OPEN   D
                   CLOSED   A, B

5.- Solo hay un nodo en OPEN, luego no hay que compararlo
          CLOSED             D

Generamos             los      sucesores   de   D,     y    en       este     caso       son      E     y     F

          E ∉ OPEN v CLOSED                F ∉ OPEN v CLOSED
          P(E) = D                                   P(F) = D
          g(E) = g(D) + dist (D - E)               g(F) = g(D) + dist (D - F)
          = 6.32 + √37 = 12.4              =6.32 + √8=9.15
          h(E) = √10                               h(F) = √25 = 5
          f(E) =12.4 + √10 = 15.56                 f(F) = 9.15+5
          OPEN          E                            OPEN        F

          Quedando al final de esta etapa:

                   OPEN   E, F
                   CLOSED    A, B, D

6.- f(F) < f(E), por lo tanto, metemos F en CLOSED
                   CLOSED             F
Generamos los sucesores de F, siendo en este caso solo G

          G ∉ OPEN v CLOSED
          P(G) = F
          g(G) = g(F) + dist (F - G)
                = 9.15 + 5 = 14.15
          h(G) = 0
          f(G)=14.15+0=14.15
          OPEN G
Quedando al final de esta etapa:
                   OPEN   E, G
                   CLOSED    A, B, D, F

7.- f(G) < f(E) y además G es la meta luego metemos G a CLOSED
                    CLOSED            G


Universidad Nacional de Ingeniería.                                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Quedando al final de esta etapa:
OPEN      E
CLOSED        A, B, D, F, G
Para, por fin, obtener el camino solución:
               G
               P(G) = F
               P(F) = D
               P(D) = B
               P(B) = A

Ascenso de Colina
Búsqueda mediante el ascenso de colina: Se procede como en el caso de la búsqueda en
profundidad, excepto que se ordenan las selecciones de acuerdo con alguna medición
heurística de la distancia que queda por recorrer a la meta. Cuanto mejor sea la medición
heurística, mejor será el ascenso de colina con relación a la búsqueda en profundidad
normal.

El método de escalar colinas es el más simple de los métodos heurísticos. El nombre viene
de la analogía existente entre el espacio del problema y un plano bidimensional donde la
función heurística define la elevación de cada punto y la meta es alcanzar el punto más alto
del terreno.

Escalar colinas funciona efectuando movimientos en la dirección que tenga la subida más
pronunciada localmente. Lo único que se memoriza es el estado en curso y el que
originalmente era el nodo raíz. En cada ciclo se expande el nodo en curso y se aplica la
función heurística a cada uno de sus sucesores y el que tenga el mejor valor se convierte en
el nuevo estado en curso.

Es semejante a la búsqueda en profundidad, excepto que el método de escalar colinas
ordena los posibles estados a elegir en cada paso de la búsqueda de acuerdo con alguna
medida 1 función heurística de la distancia que queda desde cada uno de ellos hasta la
meta. Cuanto mejor sea la medida heurística mejores resultados dará el método de escalar
colinas con respecto al de profundidad.

Para llevar a cabo una búsqueda en ascenso de colina debe:

1. Forme una cola de un elemento consistente en una trayectoria de longitud cero que
contenga solo al nodo raíz;

2. Hasta que la primera trayectoria de la cola termine en el nodo meta o se vacíe la cola,

          2.1 Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo el
          primer paso a todos los vecinos del nodo terminal;
          2.2. Rechace todas las trayectorias nuevas con ciclos;


Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

         2.3. Ordena las trayectoria nuevas, si las hay, según las distancias estimadas entre
         sus nodos terminales y la meta.
         2.3. Agregue las nuevas trayectorias, si las hay, al frente de la fila.
3. Si el nodo meta se alcanza, mencione que hubo éxito; de otro modo, notifique el fracaso.

Siempre que se enfrente a un problema de búsqueda note que: un mayor conocimiento suele
reducir el tiempo de búsqueda.

Ejemplo:

En la siguiente figura se muestran las distancias existentes desde cada ciudad a la meta.



                                               10.4            B                             C
                                          A                                      6.7                 4.0
                             11.0
                     S                                                                                         G

                                      D       8.9
                                                                       6.9                       3.0
                                                           E
                                                                                       F


Si desea alcanzar la meta, en general resulta mejor estar en la ciudad que se encuentre mas
cerca, aunque no necesariamente; la ciudad C se encuentra más cerca que las demás , con
excepción de la ciudad F, pero la ciudad C no es un lugar muy adecuado para estar. La
meta encontrada empleando la búsqueda de ascenso de colina es: S – D – E – F - G.


                                                    S
                                10.4
                                                                         8.9
                                  A                                D

                                                    10.4
                                                                                           6.9
                                                      A                                E

                                                                                                         3.0
                                                                   6.7       B                   F


                                                                                                     G




Universidad Nacional de Ingeniería.                                                        Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



ORDENAR UNA PILA DE BLOQUES.




OPERADORES PARA LOS BLOQUES:

1. Libre(x) → Sobre(x, Mesa)

2. Libre(x) Y Libre(y) → Sobre(x, y)

FUNCIÓN HEURÍSTICA:

Local: Añadir un punto por cada bloque sobre el lugar correcto. Restar un punto por cada bloque
sobre el lugar incorrecto.

Global: Para cada bloque que esté sobre la estructura de apoyo correcta (es decir, la estructura
que tiene debajo es exactamente la que tiene que ser), añadir un punto por cada bloque en la pila.
Para cada bloque que está sobre una estructura incorrecta, restar un punto por cada bloque en la
pila.



BÚSQUEDA EN HAZ: La búsqueda en haz es parecida a la búsqueda en amplitud en
cuanto a que avanza nivel por nivel. Sin embargo, se diferencia de esta, la búsqueda en haz
se mueve hacia abajo solo a través de los mejores nodos de cada nivel; los otros nodos se
ignoran.




Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


CUARTA UNIDAD:
PROLOG (PROGRAMACIÓN LÓGICA)

4.1. Introducción
4.2. Hechos
4.3. Variables
4.4. Reglas
4.5. El ámbito de las variables
4.6. Operadores
4.7. La resolución de objetivos
4.8. El mecanismo de control de PROLOG
4.9. Entrada / Salida
4.10. Historia y desarrollo de Prolog
4.11. Tipos de datos en Prolog
4.12. Estructura de un programa PROLOG
4.13. Funciones y Pasos de Parámetros.
4.14. Estructuras de Datos en Prolog


Introducción.

La Quinta Generación prevé máquinas diseñadas para el tratamiento lógico, de capacidades
análogas a las capacidades de anteriores generaciones de ordenadores para tratar
operaciones aritméticas. Se trata de ordenadores que tienen el PROLOG como lenguaje
nativo (lenguaje máquina), con capacidad para procesar millones de inferencias lógicas por
segundo (LIPS.)

La programación lógica es un paradigma de los lenguajes de programación en el cual los
programas se consideran como una serie de aserciones lógicas. De esta forma, el
conocimiento se representa mediante reglas, tratándose de sistemas declarativos. Una
representación declarativa es aquélla en la que el conocimiento está especificado, pero no
viene dada la manera en que dicho conocimiento debe ser usado. El más popular de los
sistemas de programación lógica es el PROLOG.

Prolog es un lenguaje de programación hecho para representar y utilizar el conocimiento que se
tiene sobre un determinado dominio. Más exactamente, el dominio es un conjunto de objetos y el
conocimiento se representa por un conjunto de relaciones que describen las propiedades de los
objetos y sus interrelaciones. Un conjunto de reglas que describa estas propiedades y estas
relaciones es un programa Prolog.

Prolog es un lenguaje de programación que es usado para resolver problemas que envuelven objetos
y las relaciones entre ellos.

Un programa escrito en PROLOG puro, es un conjunto de claúsulas de Horn. Sin embargo,
PROLOG, como lenguaje de programación moderno, incorpora más cosas, como
instrucciones de Entrada/Salida, etc.


Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Una claúsula de Horn puede ser ó bien una conjunción de hechos positivos ó una
implicación con un único consecuente (un único termino a la derecha). La negación no
tiene representación en PROLOG, y se asocia con la falta de una afirmación (negación por
fallo), según el modelo de suposición de un mundo cerrado (CWA); solo es cierto lo que
aparece en la base de conocimiento ó bien se deriva de esta.


HISTORIA Y DESARROLLO DE PROLOG.
Una de las preocupaciones más tempranas de la computación de los años cincuenta fue la
posibilidad de hacer programas que llevaran a cabo demostraciones automáticas de teoremas. Así
empezaron los primeros trabajos de inteligencia artificial que más de veinte años después dieron
lugar al primer lenguaje de programación que contempla, como parte del intérprete, los mecanismos
de inferencia necesarios para la demostración automática. Este primer lenguaje está basado en el
formalismo matemático de la Lógica de Primer Orden y ha dado inicio a un nuevo y activo campo
de investigación entre las matemáticas y la computación que se ha denominado la Programación
Lógica.

Estos mecanismos de prueba fueron trabajados con mucho entusiasmo durante una época, pero, por
su ineficiencia, fueron relegados hasta el nacimiento de PROLOG, ocurrido en 1970 en la
Universidad de Marsella, Francia, en el seno de un grupo de investigación en el campo de la
Inteligencia Artificial.

La Programación Lógica tiene sus orígenes más cercanos en los trabajos de prueba automática de
teoremas de los años sesenta. J. A. Robinson propone en 1965 una regla de inferencia a la que llama
resolución, mediante la cual la demostración de un teorema puede ser llevada a cabo de manera
automática.

La resolución es una regla que se aplica sobre cierto tipo de fórmulas del Cálculo de Predicados de
Primer Orden, llamadas cláusulas y la demostración de teoremas bajo esta regla de inferencia se
lleva a cabo por reducción al absurdo.

Actualmente, la programación lógica ha despertado un creciente interés que va mucho más allá del
campo de la Inteligencia Artificial ( IA ) y sus aplicaciones. Los japoneses, con su proyecto de
máquinas de la quinta generación, dieron un gran impulso a este paradigma de programación. Sin
embargo, antes que ellos existían ya en Estados Unidos y en Europa grupos de investigación en este
campo, en países como Inglaterra, Holanda, Suecia y, desde luego, Francia.

A principios de los años ochentas los japoneses comienzan a invertir recursos en un proyecto que
denominan la Quinta Generación, para lucrar con la buena fama de los 4GL. Con este ambicioso
proyecto Japón busca obtener el liderazgo en computación, usando como base la Programación
Lógica y la Inteligencia Artificial.

La programación lógica tiene sus raíces en el cálculo de predicados, que es una teoría matemática
que permite, entre otras cosas, lograr que un computador pueda realizar inferencias, capacidad que
es requisito para que un computador sea una "máquina inteligente". La realización del paradigma de
la programación lógica es el lenguaje Prolog.




Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

El Prolog estuvo un tiempo diseñado para ejecutarse en minicomputadoras o estaciones de trabajo,
actualmente hay versiones en Prolog que pueden instalarse en computadores personales como IBM-
PC y PC-Compatibles.


PROgramación LOGica

Las diferencias sintácticas entre las representaciones lógicas y las representaciones
PROLOG son las siguientes:

     •    En PROLOG todas las variables están implícitamente cuantificadas universalmente.
     •    En PROLOG existe un símbolo explicito para la conjunción "y" (","), pero no existe
          uno para la disyunción "o", que se expresa como una lista de sentencias alternativas.
     •    En PROLOG, las implicaciones p --> q se escriben alrevés q :- p, ya que el
          interprete siempre trabaja hacia atrás sobre un objetivo, como se vera más adelante.

Elementos fundamentales del lenguaje PROLOG.

     HECHOS
     VARIABLES
     REGLAS
     OPERADORES



ESTRUCTURA DE UN PROGRAMA PROLOG
Un programa Prolog está formado por una secuencia de enunciados: hechos, reglas y comentarios.
Una relación puede estar especificada por hechos, simplemente estableciendo objetos que satisfacen
la relación o por reglas establecidas acerca de la relación. Cada regla está formada por un primer
miembro (o la cabeza de la regla), un segundo miembro (o cola de la regla) ligados por " :- " y
termina con el carácter " . ".

%código del programa

%%Hechos **
     mujer(maria).
     hombre(pedro).
     hombre(manuel).
     hombre(arturo).

%%Relaciones **
     padre(pedro,manuel).
     padre(pedro,arturo).
     padre(pedro,maria).

%%Reglas **
     nino(X,Y):- padre(Y,X)
     hijo(X,Y):-nino(X,Y),hombre(X).
     hija(X,Y):-nino(X,Y),mujer(X).
     hermano_o_hermana(X,Y):-padre(Z,X),padre(Z,Y).


Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

          hermano(X,Y):-hermano_o_hermana(X,Y),hombre(X).
          hermana(X,Y):-hermano_o_hermana(X,Y),mujer(X).


Hechos.

Expresan relaciones entre objetos. Supongamos que queremos expresar el hecho de que "un
coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una
relación llamada "tiene". La forma de representarlo en PROLOG es: tiene(coche,ruedas).

     •    Los nombres de objetos y relaciones deben comenzar con una letra minúscula.
     •    Primero se escribe la relación, y luego los objetos separados por comas y encerrados
          entre paréntesis.
     •    Al final de un hecho debe ir un punto (".").

El orden de los objetos dentro de la relación es arbitrario, pero debemos ser coherentes a lo
largo de la base de hechos.

Ejemplo:

Suponga que queremos escribir la información genealógica de un grupo de personas. Para
esto podemos utilizar los predicados madre y padre del siguiente modo:

padre(juan, amanda).
madre(ximena, amanda).
madre(laura, juan).
padre(andres, juan).
padre(patricio, bonifacio).
padre(juan, patricio).
padre(juan, ana).
madre(ximena, ana).


El prompt | ?— indica que el intérprete está listo para escuchar los requerimientos del
usuario. A partir de esto uno puede hacer consultas:

| ?- madre(ximena,ana).
yes
| ?- padre(juan, ana).
yes
| ?- padre(juan, ximena).
no


Nótese que PROLOG responde yes, sólo cuando el hecho asociado aparece en la base de
datos que tiene almacenada, o cuando se deriva de la información almacenada.



Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Una pregunta más interesante involucra el uso de variables. Por ejemplo, si queremos saber
si existe alguien que sea el padre de Juan, podemos preguntar:

| ?- padre(X,juan).
X = andres ?;
no
| ?-


Al decir padre (X , juan) estamos preguntándole a PROLOG si existe alguna interpretación
para la variable X que haga que padre (X, juan) sea verdadera. PROLOG responde que X =
andres es un valor que haria que la consulta sea verdadera.


Mediante el signo ?. PROLOG pregunta si se desea buscar otra solución para el mismo
problema. Al decir “;” se le indica a PROLOG que efectivamente uno quiere buscar otra
solución. Al no haber otra solución. PROLOG responde no.

Otro ejemplo puede ser:
| ?- madre(X,Y).
X = ximena,
Y=amanda?;
X = laura,
Y = juan ?;
X = ximena,
Y = ana ?
no
| ?-


En este último ejemplo. PROLOG busca todos los pares (X, Y) tales que madre (X, Y) es
verdadero. También es posible realizar preguntas más complejas. Por ejemplo, supongamos
que queremos saber ¿quién es el abuelo paterno de ana?:

| ?- padre(X,ana), padre(Y,X).
X = Juan,
Y = andres ?;
No
| ?-

En este ejemplo, la consulta padre (X,ana), padre(Y,X). se procesa en orden. Primero se
resuelve la subconsulta padre (X, ana) y los valores resultantes de X se usan para responder
la segunda subconsulta. La “;” se interpreta como conjunción.




Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


TIPOS DE DATOS EN PROLOG
Symbol: Hay dos tipos de símbolos. Un grupo de caracteres consecutivos (letras, números y signos
de subrayado) que comienzan con un carácter en minúscula. Ejemplo:

          alto, alto_edificio, el_alto_ edificio_en_la_ciudad

Un grupo de caracteres consecutivos(letras y números) que comienzan y terminan con dobles
comillas("). Este tipo es útil cuando se quiere comenzar el símbolo con un carácter en mayúscula o
si se quieres agregar espacios entre los caracteres del símbolo.

Ejemplo:
       "alto","alto edificio"

String: Cualquier grupo de caracteres consecutivos (letras y números) que comience y termine con
dobles comillas("). Es igual a símbolo pero Prolog los trata de forma distinta.
Ejemplo:
        "alto","alto edificio"

Integer: Cualquier número comprendido entre (-32.768 y 32.768). El límite esta determinado
porque los enteros se almacenan como valores de 16 bits, este límite puede variar según la versión
de Prolog. Ejemplo:

          4,-300,3004

Real: Cualquier numero real en el rango +/- 1E-307 a +/-1E+308. El formato incluye estas
opciones: signo, numero, punto decimal, fracción, E(exponente), signo para el exponente,
exponente. Ejemplo:

          3,3.1415

Char: Cualquier carácter de la lista ASCII estándar, posicionado entre dos comillas sencillas(‘).
Ejemplos:

          ‘t’,‘X’,‘f’


Variables.

Representan objetos que el mismo PROLOG determina. Una variable puede estar
instanciada ó no instanciada. Esta instanciada cuando existe un objeto determinado
representado por la variable. De este modo, cuando preguntamos "¿Un coche tiene X?",
PROLOG busca en los hechos cosas que tiene un coche y respondería: X = ruedas.
Instanciando la variable X con el objeto ruedas.

          •          Los nombres de variables comienzan siempre por una letra mayúscula.

Un caso particular es la variable anónima, representada por el carácter subrayado ("_"). Es
una especie de comodín que utilizaremos en aquellos lugares que debería aparecer una



Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

variable, pero no nos interesa darle un nombre concreto ya que no vamos a utilizarla
posteriormente.

En Prolog una variables se indica iniciando con mayúsculas (X, Y, Persona, ...). Las
variables representan cualquier objeto y se usan dentro de los predicados (NO como
nombres de predicados).

Por ejemplo, si a Juan le pertenece “algo”:
       pertenece(juan,X).

Reglas.

Las reglas se utilizan en PROLOG para significar que un hecho depende de uno ó mas
hechos. Son la representación de las implicaciones lógicas del tipo p ---> q (p implica q).

     •    Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-".
     •    La cabeza está formada por un único hecho.
     •    El cuerpo puede ser uno ó mas hechos (conjunción de hechos), separados por una
          coma (","), que actúa como el "y" lógico.
     •    Las reglas finalizan con un punto (".").

La cabeza en una regla PROLOG corresponde al consecuente de una implicación lógica, y
el cuerpo al antecedente. Este hecho puede conducir a errores de representación.
Supongamos el siguiente razonamiento lógico:

          tiempo(lluvioso) ----> suelo(mojado)
          suelo(mojado)

Que el suelo está mojado, es una condición suficiente de que el tiempo sea lluvioso, pero no
necesaria. Por lo tanto, a partir de ese hecho, no podemos deducir mediante la implicación,
que está‚ lloviendo (pueden haber regado las calles). La representación correcta en
PROLOG, sería:

          suelo(mojado) :- tiempo(lluvioso).
          suelo(mojado).

Adviértase que la regla está "al revés". Esto es así por el mecanismo de deducción hacia
atrás que emplea PROLOG. Si cometiéramos el error de representarla como:

          tiempo(lluvioso) :- suelo(mojado).
          suelo(mojado).

PROLOG, partiendo del hecho de que el suelo está mojado, deduciría incorrectamente que
el tiempo es lluvioso.




Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Para generalizar una relación entre objetos mediante una regla, utilizaremos variables. Por
ejemplo:

               Representación lógica                  Representación PROLOG
  es_un_coche(X) ----> tiene(X,ruedas) tiene(X,ruedas) :- es_un_coche(X).


Con esta regla generalizamos el hecho de que cualquier objeto que sea un coche, tendrá
ruedas. Al igual que antes, el hecho de que un objeto tenga ruedas, no es una condición
suficiente de que sea un coche. Por lo tanto la representación inversa sería incorrecta.

Ejemplo

Al programa que teníamos anteriormente, podemos agregarle las siguientes reglas:

abuelo(X,Y):- padre(X,Z), madre(Z,Y).
abuelo(X,Y) :- padre(XZ), padre(Z,Y).
Con estas reglas podernos consultar quién es abuelo de quién:

| ?- abuelo(X,Y).
X = andres,
Y=ainanda ?;
X = andres,
Y = patricio ? ;
X = andres,
Y = ana ?;
X = juan,
Y = bonifacio ?;
no
| ?-


Las reglas para abuelo se pueden escribir como la regla:
       abuelo(X,Y):— padre(X,Z), (madre(Z,Y);padre(Z,Y)).

En esta notación el símbolo “;” se utiliza corno disyunción. La regla anterior es equivalente
a las dos reglas originales. El uso de “;” debe restringirse intentando mantener la claridad
de las reglas que se escriban. No es recomendable utilizar “;” cuando el resultado sea difícil
de leer.

Como ejercicio, defina la relación herm (X , Y) entre dos individuos. Esta relación será
verdadera cuando los dos sujetos tengan al padre o a la madre en común.

Suponga que se desea definir la relación antecesor (X , Y). En primer término, definiremos:
      antecesorDirecto(X,Y) :— (padre(X,Y) ;madre(X,Y)).




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Con el significado obvio Así, podremos escribir que:
       antecesor(X,Y) antecesorDirecto(X,Y).
       antecesor(X,Y) antecesorDirecto(X,Z), antecesor(Z,Y).


De modo que obtenemos:
| ?— entecesor(X,Y).
X = juan,
Y = amanda ? ;
X = andres,
Y = juan ? ;
X = patricio,
Y = bonifacio ?;
X = juan,
Y = patricio ?;
% y así sucesivamente


El ámbito de las variables.

Cuando en una regla aparece una variable, el ámbito de esa variable es únicamente esa
regla. Supongamos las siguientes reglas:

          (1) hermana_de(X,Y) :- hembra(X), padres(X,M,P), padres(Y,M,P).
          (2) puede_robar(X,P) :- ladron(X), le_gusta_a(X,P), valioso(P).

Aunque en ambas aparece la variable X (y la variable P), no tiene nada que ver la X de la
regla (1) con la de la regla (2), y por lo tanto, la instanciación de la X en (1) no implica la
instanciacion en (2). Sin embargo todas las X de una misma regla sí que se instanciarán con
el mismo valor.


Operadores.

Son predicados predefinidos en PROLOG para las operaciones           X = Y igual
matemáticas básicas. Su sintaxis depende de la posición que          X = Y distinto
ocupen, pudiendo ser infijos ó prefijos. Por ejemplo el operador
suma ("+"), podemos encontrarlo en forma prefija '+(2,5)' ó          X < Y menor
bien infija, '2 + 5'. También disponemos de predicados de            X > Y mayor
igualdad y desigualdad.                                              X =< Y menor ó igual
Al igual que en otros lenguajes de programación es necesario X >= Y mayor ó igual
tener en cuenta la precedencia y la asociatividad de los            Verdadero si X e
                                                             X=:=Y
operadores antes de trabajar con ellos.                             Y son iguales
                                                                                  Verdadero si X e
En cuanto a precedencia, es la típica. Por ejemplo, 3+2*6 se X==                 Y son diferentes
evalúa como 3+(2*6). En lo referente a la asociatividad,


Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

PROLOG es asociativo por la izquierda. Así, 8/4/4 se interpreta como (8/4)/4. De igual
forma, 5+8/2/2 significa 5+((8/2)/2).


Aritmética:
      comparaciones: =, $<$, $>$, $=<$, $>=$, $/=$ (resultado binario)
      operaciones: +, -, *, / (división float), // (división integer), mod (números enteros)

X is A $<$op$>$ B (“X” debe ser una variable no instanciada)


El operador 'is'.

Es un operador infijo, que en su parte derecha lleva un término que se interpreta como una
expresión aritmética, contrastándose con el término de su izquierda.

Por ejemplo, la expresión '6 is 4+3.' es falsa. Por otra parte, si la expresión es 'X is 4+3.', el
resultado será la instanciación de X:

          X=7

Una regla PROLOG puede ser esta:

          densidad(X,Y) :- poblacion(X,P), area(X,A), Y is P/A.


Algunos comandos básicos

     •    consult: El predicado consult esta pensado para leer y compilar un programa PROLOG o
          bien para las situaciones en las que se precise añadir las cláusulas existentes en un
          determinado fichero a las que ya están almacenadas y compiladas en la base de datos. Su
          sintaxis puede ser una de las siguientes:
                  consult ( fichero ).
                  consult( 'fichero.ext' ).
                  consult( 'c:iaprologfichero' ).

     •    recon: El predicado recon es muy parecido a consult, con la salvedad de que las cláusulas
          existentes en el fichero consultado, reemplazan a las existentes en la base de hechos. Puede
          ser útil para sustituir una única cláusula sin consultar todas las demás, situando esa cláusula
          en un fichero. Su sintaxis es la misma que la de consult.

     •    forget: Tiene como fin eliminar de la base de datos actual aquellos hechos consultados de
          un fichero determinado. Su sintaxis es:
                  forget( fichero ).

     •    exitsys: Este predicado nos devuelve al sistema operativo.




Universidad Nacional de Ingeniería.                                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Programación básica en PROLOG.

Con los datos que conocemos, ya podemos construir un programa en PROLOG.
Necesitaremos un editor de textos para escribir los hechos y reglas que lo componen. Un
ejemplo sencillo de programa PROLOG es el siguiente:

          quiere_a(maria,enrique).
          quiere_a(juan,jorge).
          quiere_a(maria,susana).
          quiere_a(maria,ana).
          quiere_a(susana,pablo).
          quiere_a(ana,jorge).
          varon(juan).
          varon(pablo).
          varon(jorge).
          varon(enrique).
          hembra(maria).
          hembra(susana).
          hembra(ana).
          teme_a(susana,pablo).
          teme_a(jorge,enrique).
          teme_a(maria,pablo).

          /* Esta linea es un comentario */

          quiere_pero_teme_a(X,Y) :- quiere_a(X,Y), teme_a(X,Y).
          querido_por(X,Y) :- quiere_a(Y,X).
          puede_casarse_con(X,Y) :- quiere_a(X,Y), varon(X), hembra(Y).
          puede_casarse_con(X,Y) :- quiere_a(X,Y), hembra(X), varon(Y).

Una vez creado, lo salvaremos para su posterior consulta desde el interprete PROLOG. Un
programa PROLOG tiene como extensión por defecto '.PRO'. Le daremos el nombre
'relacion.pro'.

Un programa de “relaciones familiares” definiendo la relación “abuelo”. Sería:

          % familia:
          % hechos:
          m(luis).
          m(rico).
          m(fuhed).
          m(edgar).
          f(aida).
          f(bety).
          f(shafy).
          papa(fuhed,luis).
          mama(aida,luis).


Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

          papa(fuhed,rico).
          papa(luis,edgar).
          papa(fuhed,bety).
          papa(fuhed,shafy).
          papa(jesus,fuhed).
          % reglas:
          abuelo(X, Z) :- papa(X,Y), papa(Y, Z).
          abuelo(X,Z) :- papa(X, Y), mama(Y, Z).


Otro ejemplo.

A modo de ilustración considere el siguiente programa:

grande (oso).
grande(elefante).
pequeno (gato).
cafe(oso).
negro (gato).
gris(elefante).
oscuro(Z) :- negro(Z).
oscuro(Z) :— cafe(Z).

Junto con la consulta:

? - oscuro(X), grande(X).


La ejecución del programa PROLOG es equivalente a realizar una búsqueda en
profundidad en un espacio definido por el programa y por el objetivo inicial.


La resolución de objetivos.

Hemos creado un programa PROLOG [relacion.pro]. A partir de este momento podemos
interrogar la base de hechos, mediante consultas.

Una consulta tiene la misma forma que un hecho.

Consideremos la pregunta:
      ?-quiere_a(susana,pablo).

PROLOG buscar por toda la base de conocimiento hechos que coincidan con el anterior.
Dos hechos coinciden si sus predicados son iguales, y cada uno de sus correspondientes
argumentos lo son entre sí. Si PROLOG encuentra un hecho que coincida con la pregunta,
responderá yes. En caso contrario responderá no.



Universidad Nacional de Ingeniería.                      Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Además, una pregunta puede contener variables. En este caso PROLOG buscara por toda la
base de hechos aquellos objetos que pueden ser representado por la variable. Por ejemplo:
?-quiere_a(maria, Alguien).

[NOTA: Alguien es un nombre perfectamente válido de variable, puesto que empieza por
una letra mayuscula.]

El resultado de la consulta es:
        Alguien = enrique

El hecho 'quiere_a(maria,enrique).' coincide con la pregunta al instanciar la variable
Alguien con el objeto 'enrique'. Por lo tanto es una respuesta valida, pero no la única. Por
eso se nos pregunta si queremos obtener más respuestas. En caso afirmativo, obtendríamos:

Alguien = susana
Alguien = ana

La “,” (coma) representa una conjunción (Y). Es decir que hay que probar ambas submetas
para probar la meta representada por la regla.

Negación - en Prolog se implementa por lo que se conoce como negación por fallo, es decir
que si algo no se puede probar se considera falso.

La disjunción (O) se puede implementar mediante dos reglas con la misma meta.
También se pueden tener reglas recursivas, en las que una submeta es la misma meta (debe
haber una condición de terminación). Esto se ilustra en el resto del ejemplo de la familia:

          hermano(X, Z) :- papa(Y,X), papa(Y, Z), not(X=Z).
          tio(X, Z) :- m(X), papa(Y, Z), hermano(X,Y).
          tia(X,Z):-f(X),papa(Y,Z),hermano(X,Y).
          proj(X, Y) :- papa(X, Y).
          proj(X, Y) :- mama(X, Y).
          ancestro(X, Z) :- proj(X, Z).
          ancestro(X, Z) :- proj(X, Y), ancestro(Y, Z).

El operador "not".

Se define de tal forma que el objetivo not(X) se satisface solo si fracasa la evaluación de X. En
muchos casos, puede sustituir al operador corte, facilitando la lectura de los programas. Por
ejemplo:

       a :- b, c.
       a :- not(b), d.
       Equivale a:
       a :- b, !, c.
       a :- d.
Sin embargo, en términos de coste, el operador corte es más eficiente, ya que en el primer caso
PROLOG intentará satisfacer b dos veces, y en el segundo, solo una.


Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


Estructuras de datos: Las Listas
                                                                        Lista     Cabeza              Cola
Una lista es una arreglo ordenado se elementos cuya                [a,b,c,d] a                  [b,c,d]
longitud (numero de elementos) es variable. La lista es
una estructura de datos muy común en la programación no            [a]            a             [] (lista vacía)
numérica. Es una secuencia ordenada de elementos que               []             no tiene no tiene
puede tener cualquier longitud. Ordenada significa que el
orden de cada elemento es significativo. Un elemento
                                                                   [[a,b],c]      [a,b]         [c]
puede ser cualquier término e incluso otra lista. Se               [a,[b,c]]      a             [[b,c]]
representa como una serie de elementos separados por
                                                                   [a,b,[c,d]] a                [b,[c,d]]
comas y encerrados entre corchetes.

Por ejemplo: [Dom, Lun, Mar, Mier, Jue, Vier, Sab]

En Prolog se representa con una serie de elementos separados por “,” entre paréntesis cuadrados.

Ejemplos:

          [a,b,c]
          [ ] - lista vacía
          [a,[b,c],d] - un elemento puede ser a su vez una lista

Para procesar una lista, la dividimos en dos partes: la cabeza y la cola. Por ejemplo:

Para dividir una lista, utilizamos el símbolo "|". Una expresión con la forma [X | Y] instanciar X a la
cabeza de una lista e Y a la cola. Es decir, las listas se manipulan especificando su “cabeza” (Head -
primer elemento), y “cola” (Tail - lista del resto de los elementos.) Por ejemplo:

          p([1,2,3]).
          p([el,gato,estaba,[en,la,alfombra]]).

          ?-p([X|Y]).

          X = 1,
          Y = [2,3]
          More (Y/N):y

          X = el,
          Y = [gato,estaba,[en,la,alfombra]]
          ------------------------------------------

          [a,b,c] - H = a, T = [b,c]
          [a] - H = a, T = [ ]
          [[b,c],d] - H = [b,c], T = [d]
          [ ] - H = fail, T = [ ]


El valor de las listas en un programa Prolog disminuye si no es posible identificar los elementos
individuales que habrán de integrarlas. Debido a ello, es necesario tener en cuenta el concepto de su



Universidad Nacional de Ingeniería.                                       Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

división en dos partes: cabeza y cola. La cabeza de la lista es el primer elemento de la misma. La
cola es el resto de la lista, sin importar lo que pueda contener.

Para hacer uso practico de la capacidad de dividir listas en cabeza y cola, Prolog proporciona una
notación especial con la que se definen las listas en los programas. Existen dos símbolos especiales
que se utilizan: El corchete abierto /cerrado. Se usa para denotar el inicio y el final de una lista. El
separador, su símbolo es | y se usa para permitir que una lista se represente como una cabeza y una
cola. Para procesar una lista, la dividimos en dos partes: la cabeza y la cola.

Ejemplo:
       Lista                        Cabeza                     Cola
       -----                        ------                       ----
       [a, b, c, d]                  a                        [b, c, d]
       [a]                           a                        [ ] (lista vacía)
       [ ] no tiene no tiene elementos
       [[a, b],c]                   [a, b]                     [c]
       [a,[b, c]]                      a                      [[b, c]]
       [a, b,[c, d]]                   a                      [b,[c, d]]

Para dividir una lista, utilizamos el símbolo "|". Una expresión con la forma [ X | Y ] instanciar “X”
a la cabeza de una lista e “Y” a la cola.

Ejemplo:

          p([1,2,3]).
          ?-p([X | Y]).
          X = 1,
          Y = [2,3]
          p([el, gato, estaba,[ en, la, alfombra ]]).
          ?-p([X | Y]).
          X = el,
          Y = [gato, estaba, [en, la, alfombra]]

Se pueden hacer estructuras tan complejas como se quiera en Prolog. Se pueden poner listas dentro
de listas.

Ejemplo:

animales([[mono, búfalo, rata], [serpiente, iguana, cocodrilo], [paloma, pingüino]])



A continuación veremos algunas operaciones importantes con listas.

          % inserta un elemento al inicio de una lista:
          inserta(E,Li,Lf):-Lf=[E$|$Li].
          % inserta mejorado:
          inserta2(E,Li,[E$|$Li]).
          % match.
          match([],[]).


Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

          match([H1$|$T1],[H2$|$T2]):-H1=H2, match(T1,T2).
          % concatena 2 listas (para búsqueda):
          agrega([ ],L,L).
          agrega([H$|$L1],L2,[H$|$L3]):-
          agrega(L1,L2,L3).




Operador corte

Utilizando el operador de corte, observaremos el siguiente comportamiento:

| ?— rnernber(X,[a,b)), !.
X = a ?;
no
| ?-


Cuando se encuentra con el objetivo !, PROLOG se compromete con todas las unificaciones que se
han realizado antes del ! y desde el momento que se introduce el ! a la lista de objetivos pendientes.
Como estilo de programación se recomienda escribir programas sin corte


La recursividad.

La recursividad es un mecanismo que da bastante potencia a cualquier lenguaje de programación.
Veamos un ejemplo de programación recursiva que nos permitirá determinar si un átomo es
miembro de una lista dada:

          (1) miembro(X,[X|_]).
          (2) miembro(X,[_|Y]) :- miembro(X,Y).

La regla (1) es el caso base de la recursión. Se evaluará como cierta siempre que coincida la
variable X con la cabeza de la lista que se pasa como argumento. En la regla (2) está la definición
recursiva. X es miembro de una lista si lo es de la cola de esa lista (la cabeza se comprueba en la
regla (1)).

La regla (1) es una simplificación de la regla:

          miembro(X,[Y|_]) :- X = Y.
          La traza para el caso de 'miembro(b,[a,b,c]).' es la siguiente:
          (1) miembro(b,[a,b,c]) :- b = a. ---> no.
          (2) miembro(b,[a,b,c]) :- miembro(b,[b,c]).
          (1) miembro(b,[b,c]) :- b = b. ---> yes.

Si necesitamos conocer la longitud de una lista, emplearemos una función recursiva como la
siguiente:

          longitud([],0).



Universidad Nacional de Ingeniería.                                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

          longitud([_|Y],L1) :- longitud(Y,L2), L1 is L2 + 1.
          Otro ejemplo muy típico de función recursiva es el del factorial de un número:
          factorial(0,1) :- !.
          factorial(X,Y) :- X1 is X-1, factorial(X1,Y1), Y is X*Y1.


ENTRADA / SALIDA
                                                                           PROLOG, al igual que la
                                                                           mayoría de lenguajes de
                                                                           programación           modernos
                                                                           incorpora            predicados
                                                                           predefinidos para la entrada y
                                                                           salida de datos. Estos son
                                                                           tratados como reglas que
                                                                           siempre se satisfacen.

                                                                                •    write: Su sintaxis es:
                                                                                     write('Hola mundo').

                                                                   Las comillas simples encierran
                                                                   constantes, mientras que todo
lo que se encuentra entre comillas dobles es tratado como una lista. También podemos mostrar el
valor de una variable, siempre que este instanciada: write(X).

     •    nl: El predicado nl fuerza un retorno de carro en la salida.

Ejemplo:

     •    write('línea 1'), nl, write('línea 2').
          tiene como resultado:
                   línea 1
                   línea 2
     •    read: Lee un valor del teclado. La lectura del comando read no finaliza hasta que se
          introduce un punto ".". Su sintaxis es: read(X).
          Instancia la variable X con el valor leído del teclado.
                   read(ejemplo).

Se evalúa como cierta siempre que lo tecleado coincida con la constante entre paréntesis (en este
caso 'ejemplo').

Por ejemplo con, write(X), si “X” esta instanciada se despliega su valor, si no se despliega un
identificador.

Por ejemplo con, read(X), si “X” no esta instanciada se instancia al valor leído, si no se compara el
valor que tiene con el leído y falla si son diferentes.




Universidad Nacional de Ingeniería.                                      Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


EL MECANISMO DE CONTROL DE PROLOG
El mecanismo empleado por PROLOG para satisfacer las cuestiones que se le plantean, es el de
razonamiento hacia atrás (backward) complementado con la búsqueda en profundidad (depth first) y
la vuelta atrás o reevaluación (backtracking).

Razonamiento hacia atrás: Partiendo de un objetivo a probar, busca las aserciones que pueden
probar el objetivo. Si en un punto caben varios caminos, se recorren en el orden que aparecen en el
programa, esto es, de arriba a abajo y de izquierda a derecha.

Reevaluación: Si en un momento dado una variable se instancia con determinado valor con el fin
de alcanzar una solución, y se llega a un camino no satisfactorio, el mecanismo de control retrocede
al punto en el cual se instanció la variable, la desinstancia y si es posible, busca otra instanciación
que supondrá un nuevo camino de búsqueda.

Ejemplo:
      Se puede ilustrar esta estrategia sobre el ejemplo anterior. Supongamos la pregunta:
             ?-puede_casarse_con(maria, X).

PROLOG recorre la base de datos en busca de un hecho que coincida con la cuestión planteada. Lo
que halla es la regla:

puede_casarse_con(X, Y) :- quiere_a(X, Y), varon(X), hembra(Y).

Produciéndose una coincidencia con la cabeza de la misma, y una instanciación de la variable “X”
de la regla con el objeto 'maria'. Tendremos por lo tanto:

  (1) puede_casarse_con(maria,Y) :- quiere_a(maria,Y), varon(maria), hembra(Y).

A continuación, se busca una instanciación de la variable “Y” que haga cierta la regla, es decir, que
verifique los hechos del cuerpo de la misma.

La nueva meta será : (2) quiere_a(maria, Y).

De nuevo PROLOG recorre la base de datos. En este caso encuentra un hecho que coincide con el
objetivo:

          quiere_a(maria, enrique).

instanciando la variable “Y” con el objeto 'enrique'. Siguiendo el orden dado por la regla (1),
quedan por probar dos hechos una vez instanciada la variable “Y”:

          varon(maria), hembra(enrique).

Se recorre de nuevo la base de datos, no hallando en este caso ninguna coincidencia con el hecho
“varón(maria)”. Por lo tanto, PROLOG recurre a la vuelta atrás, desistanciando valor de la variable
“Y”, y retrocediendo con el fin de encontrar una nueva instanciación de la misma que verifique el
hecho (2). Un nuevo recorrido de la base de hechos da como resultado la coincidencia con:
        quiere_a(maria, susana).




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Se repite el proceso anterior. La variable Y se instancia con el objeto 'susana' y se intentan probar
los hechos restantes:

          varón(maria), hembra(susana).

De nuevo se produce un fallo que provoca la desinstanciación de la variable “Y”, así como una
vuelta atrás en busca de nuevos hechos que coincidan con (2). Una nueva reevaluación da como
resultado la instanciación de “Y” con el objeto 'ana' (la ultima posible), y un nuevo fallo en el hecho
“varón(maria).” Una vez comprobadas sin éxito todas las posibles instanciaciones del hecho (2),
PROLOG da por imposible la regla (1), se produce de nuevo la vuelta atrás y una nueva búsqueda
en la base de datos que tiene como resultado la coincidencia con la regla:

          (3) puede_casarse_con(maria,Y) :- quiere_a(maria,Y), hembra(maria), varon(Y).

Se repite todo el proceso anterior, buscando nuevas instanciaciones de la variable “Y” que
verifiquen el cuerpo de la regla. La primera coincidencia corresponde al hecho:

          quiere_a(maria,enrique).

que provoca la instanciación de la variable “Y” con el objeto 'enrique'. PROLOG tratar de probar
ahora el resto del cuerpo de la regla con las instanciaciones actuales:
        hembra(maria), varon(enrique).
Un recorrido de la base de datos, da un resultado positivo en ambos hechos, quedando probado en
su totalidad el cuerpo de la regla (3) y por lo tanto su cabeza, que no es mas que una de las
soluciones al objetivo inicial.

          X = enrique

PROLOG utiliza un mecanismo de búsqueda independiente de la base de datos. Aunque pueda
parecer algo ilógico, es una buena estrategia puesto que garantiza el proceso de todas las
posibilidades. Es útil para el programador conocer dicho mecanismo a la hora de depurar y
optimizar los programas.


Control
Prolog realiza, en forma general, una búsqueda por profundidad con retroceso
(“backtracking”). Al intentar probar una meta (regla), busca primero probar la primera
condición, después la segunda, etc. Si alguna es falsa, entonces falla dicha regla, e intenta la
siguiente regla (si existe) para la misma meta.

Hay ciertas formas de alterar la estrategia básica de búsqueda:
CUT (!) - evita el ``backtracking''




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Ejemplos:

          X:- a,b,c,!,d,e.

          Predicados mutuamente exclusivos - escalón:
                 esc(X,-1):- X $<$ 0, !.
                 esc(X, 0):- X $=$ 0, !. esc(X, 1):- X $>$ 0, !.

FAIL - siempre es falso (TRUE - siempre es verdadero)


Ejemplos:

          impuesto(Persona, X) :- desempleado(Persona), !, fail.
          impuesto(Persona, X) :- ...

          Excepciones:
                diferente(X,X):-!,fail.
                diferente(X,Y).

NOT - verdadero si no se puede probar la meta.
Predicado predefinido que se podría definir como:
not(P):-P,!,fail.  not(P)


Ordenamiento de Listas

Una solución es insertar el elemento en el lugar que le corresponde:

          sort([H|T],LO) :-                                  insertao(H,[F|T],[F|R]) :-
          sort(T,TO),                                        H > F,
          insertao(H,TO,LO).                                 insertao(H,T,R).
          sort([],[]).                                       insertao(H,[F|R],[H,F|R]) :-
          insertao(H,[],[H]).                                H =< F.

Método Quicksort (Ej. Dividir en menores y mayores a un cierto elemento, ordenarlos y
juntarlos todos.)

          qsort([H|T],LO) :-                                 El > H,
          divide(H,T,Men,May),                               divide(El,T,Men,May).
          qsort(Men,MenO),                                   divide(El,[H|T],Men,[H|May]) :-
          qsort(May,MayO),                                   El < H,
          agrega(MenO,[H|MayO],LO).                          divide(El,T,Men,May).
          qsort([],[]).                                      divide(_,[],[],[]).
          divide(El,[H|T],[H|Men],May) :-




Universidad Nacional de Ingeniería.                                Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Manipulación de la Base de Conocimientos

Un programa en Prolog se puede ver como una ``base de datos'', de forma que 'esta puede ser
modificada dinámicamente -- agregando y borrando cláusulas. Para ello existen varios predicados
predefinidos:

assert: agregar una cláusula a la base de datos
asserta: agregar una cláusula al inicio de la base de datos
assertz: agregar una cláusula al final la base de datos
retract: borra una cláusula de la base de datos

Ejemplos:

assert(padre(juan,rita)).
retract(padre(juan,rita)).

Estas facilidades son muy poderosas y útiles en algunas aplicaciones, pero hay que usarlas con
cuidado ya que en realidad se esta modificando el programa resultando en que en diferentes
momentos puede dar diferentes resultados.

Sistemas Expertos en Prolog

Es casi inmediato el implementar un sistema de reglas de producción en Prolog, ya que sus
cláusulas se pueden ver como reglas y su interprete como una maquina de inferencias la cual realiza
encadenamiento hacia atrás y búsqueda en profundidad.

Un sistema experto para créditos bancarios podría codificarse como el siguiente programa en
Prolog:

          prest(X,C):-
          solv(X,C),hist(X,C),ref(X,C).
          hist(X,C):-
          tarjeta(X,T1),tarjeta(X,T2).
          hist(X,C):-
          prestamo(X,casa).
          hist(X,C):-
          prestamo(X,carro).
          solv(X,C):-
          ing(X,I), P is C / 10, T is 3 * P, I > T.
          ref(X,C):-
          refer(X,Y), refer(X,Z), refer(X,W), not(Y=Z), not(Z=W).
          % Un caso:
          prestamo(juan,carro).
          ing(juan,100).
          refer(juan,pedro).
          refer(juan,maria).
          refer(juan,sol).




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


FUNCIONES Y PASOS DE PARÁMETROS.
La recursividad es un mecanismo que da bastante potencia a cualquier lenguaje de programación.
Ejemplo: La siguiente programación recursiva nos permitirá determinar si un tomo es miembro de
una lista dada:

          (1) miembro(X,[X|_]).
          (2) miembro(X,[_|Y]) :- miembro(X,Y).

La regla (1) es el caso base de la recursión. Se evalúa como cierta siempre que coincida la variable
“X” con la cabeza de la lista que se pasa como argumento. En la regla (2) es la definición recursiva.
“X” es miembro de una lista si lo es de la cola de esa lista (la cabeza se comprueba en la regla (1)).

La regla (1) es una simplificación de la regla:

          miembro(X,[Y|_]) :- X = Y.

La traza para el caso de 'miembro(b,[a,b,c]).' es la siguiente:

          (1) miembro(b,[a,b,c]) :- b = a. no.
          (2) miembro(b,[a,b,c]) :- miembro(b,[b,c]).
          (1) miembro(b,[b,c]) :- b = b. yes.

Si necesitamos conocer la longitud de una lista, emplearemos una función recursiva como la
siguiente:

          longitud([ ],0).
          longitud([_|Y],L1) :- longitud(Y,L2), L1 is L2 + 1.


Otro ejemplo muy típico de función recursiva es el del factorial de un número:

        factorial(0,1) :- !.
        factorial(X, Y) :- X1 is X-1, factorial(X1,Y1), Y is X * Y1.
La definición de una función esta en los hechos que adoptemos para inferir sobre la base de
conocimiento de Prolog, el paso de parámetros debe definirse en las reglas a través de los
predicados que los invoquen, ya sea por el mismo o por otro predicado.

Para que los predicados definidos como función, no retornen un valor errado, el tipo de dato de la
variable del predicado llamador debe ser igual al del predicado llamado. Esto es debido a que los
predicados aritméticos propios de Prolog no identifican entre un número real o entero.




Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


QUINTA UNIDAD:
SISTEMAS EXPERTOS

5.1 Sistemas expertos.
    a) Problemas solubles con sistemas expertos.
    b) Estructuras y cualidades de un sistema experto.
    c) Herramientas para la construcción de un sistema experto.
    d) Manejo de incertidumbre y probabilidad.

5.2. Algunos Shell de sistemas expertos.

INTRODUCCIÓN.

Ingeniería de conocimiento

La inteligencia artificial es la base de la ingeniería del conocimiento. Esta Inteligencia
Artificial (IA) se puede ver como ciencia o como ingeniería

Como ciencia:

          Por que trata de entender la naturaleza de la inteligencia
          Como ingeniería
          procura elaborar software capaz de actuar como humano
          elaborar artefactos que presenten una conducta inteligente

Objetivos de la IA

          La inteligencia es una noción transparente aun más cuando se trata de simular en
          una máquina.
          La IA ha emprendido la tarea de proporcionar una base teórica al concepto de la
          Inteligencia.
          Utiliza la computadora como un laboratorio donde desarrollar nuevas formas de
          pensar acerca del pensar.
          La IA se ha visto considerablemente enriquecida al intentar de describir los rasgos
          análogos a la IA

LA IA COMO INGENIERIA

          Tiene como meta construir sistemas reales que funcionan
          Se percibe como un intento de crear una nueva tecnología informática
          Se ocupa de los conceptos, la teoría y las prácticas de cómo construir
          máquinas inteligentes, es decir, máquinas que resuelvan problemas.

El ejemplo más paradigmático de máquinas inteligentes por el éxito que están
alcanzado comercialmente sean los sistemas basados en conocimientos
(SSBBCC) y los sistemas expertos en concreto (SSEE)


Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



A la actividad de construir estos sistemas se le denomina: Ingeniería del
Conocimiento (INCO)

La INCO busca el adquirir, conceptuar, formalizar y usar grandes cantidades de
conocimientos de la mas alta calidad


                        INTELIGENCIA
                                                        Sus programas exhiben
                        ARTIFICIAL
                                                   comportamientos inteligentes por
                     SISTEMAS BASADOS
                     EN CONOCIMIENTOS                    Hacen explícitos los

                                                    conocimientos de un dominio y

                        SISTEMAS                      Aplican los conocimientos
                        EXPERTOS

                                                   expertos a problemas difíciles del




Arquitectura típica de un sistema experto




          Motor de
         Inferencias.                   Interfaz




                                                                                      Usuario
          Base de
       Conocimientos




Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

  E
  S                                   MEMORIA A LARGO PLAZO
                                                                                                  R
  T                                                                                               E
  Í                                        MEMORIA DE                                             S
  M           SENSORES      MEMORIA
                                            TRABAJO                 MEMORIA      MÚSCULOS

  U
                                                                                                  P
  L                                                                                               U
  O                                                                                               E
                                                                                                  S
                                         PROCESADOR                                               T
                                          COGNITIVO                                               A
                SUSBSISTEMA                                            SUSBSISTEMA
                 PRECEPTIVO                                               MOTOR
                                      SUSBSISTEMA COGNITIVO


                    Sistema humano de procesamiento de la información




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


SOLUCIÓN INFORMÁTICA DE UN PROBLEMA


  PROBLEMA


         DEFINIRLO EN
      TERMINOS DE ESTADO
      Y OPERADORES (ALT)




      GENERAR Y ANALIZAR                          SOLUCION
     ESPACIO DE BUSQUEDA                         ALGORITMICA
                                                 TRADICIONAL



          IDENTIFICAR
         CONOCIMIENTO                           PROGRAMACION
      APLICABLE A REDUCIR                       CONVENCIONAL
       ESPACIO BUSQUEDA




     DESARROLLAR MARCO CONCEPTUAL EN
       TERMINOS DE REPRESENTACION E
                INFERENCIA




       INSTRUMENTAR SISTEMA ADECUADO .
             PROBAR Y ACTUALIZAR




                            SISTEMA BASADO EN EL CONOCIMIENTO




Universidad Nacional de Ingeniería.                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

        Psicologia                                                                                              Nuevos conceptos en
        Cognitiva                                                                                               análisis de trabajos y
                                                                                                                diseño organizaciones
                                      Sistemas de                                                                                    Instrumentos
        Lógica                        computacion
        Formal                                                                         VISION                                        inteligentes
                                       simbolica
                                                                                   COMPUTACIONAL

                                                                                                                   Sistemas de
        Lenguajes de                                                                                               pequeña
        procesamiento de                                                                                           escala
        listas                                                                                   ROBOTICA
                                                                                                                                         Workstations
                                                       INTELIGENCIA
                                                                                                                                         inteligentes
                                                        ARTIFICIAL
                                                         APLICADA                                LENGUAJE
                                                                                                  NATURAL
                                                                                                                     Sistemas
                                                                                                                    restringidos
                                  Entornos de                                                                         grandes
                                 programacion                                            SISTEMAS
                                  incremental                                            EXPERTOS


                Computación                                                                                                   Sistemas de tutoría
                 interactiva                                                                                                      inteligentes
                                                    Desarrollo de la
                                                    microelectrínica                   Herramientas
        Desarrollo de                                                                  construccion SE
        computadores                                                                                             Sistemas hibridos grandes



                                                                            Computacion de la                                      Sistemas hibridos
                                                                            V-generacion                                           muy grandes
Universidad Nacional de Ingeniería.                                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



5.1 SISTEMAS EXPERTOS.


  Los mecanismos de explicación, la parte más fascinante de los sistemas expertos,
  permiten a los sistemas explicar o justificar sus conclusiones, y también posibilitan
  a los programadores verificar el funcionamiento de los propios sistemas.



Desde que naciera la Inteligencia Artificial como tal ciencia, a principios de los 60, hasta la
actualidad, se han venido realizando numerosos trabajos, especialmente en los Estados Unidos,
para el desarrollo de los diversos campos que componen la Inteligencia Artificial. De todos esos
campos, quizá el que puede tener mayor número de aplicaciones prácticas sea el de los Sistemas
Expertos, siendo dichas aplicaciones de utilidad en temas tan variados que pueden ir desde la
medicina hasta la enseñanza pasando por el CAD.




Un sistema experto es una aplicación informática que simula el comportamiento de un experto
humano en el sentido de que es capaz de decidir cuestiones complejas, si bien en un campo
restringido.

Siendo la principal característica del experto humano el conocimiento o habilidades profundas en
ese campo concreto, por consiguiente, un sistema experto debe ser capaz de representar ese
conocimiento profundo con el objetivo de utilizarlo para resolver problemas, justificar su
comportamiento e incorporar nuevos conocimientos. Se podría incluir también el hecho de poder
comunicarse en lenguaje natural con las personas, si bien esta capacidad no es tan determinante
como las anteriores de lo que se puede definir como Sistema Experto.


a) Problemas solubles con sistemas expertos.

Las tareas para las que estos sistemas se desarrollan son, casi por definición, complejas. Por
tanto, un sistema experto es un sistema computacional capaz de representar y razonar sobre un
dominio determinado que precisa de gran cantidad de conocimiento, tal como la aeronáutica o la
medicina. Se puede distinguir de otros tipos de aplicaciones de IA en que: trabaja con temas
complejos que normalmente requieren una considerable cantidad de experiencia humana; debe
ser una herramienta práctica y útil; para ello debe ofrecer un alto rendimiento en cuanto a


Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



velocidad de ejecución y fiabilidad; debe ser capaz de explicar y justificar sus soluciones y
consejos para convencer al usuario de lo correcto de su razonamiento.

Los sistemas expertos son el tipo de aplicación de IA que mejores resultados ha conseguido.
Estos sistemas son usados hoy en día en un amplio abanico de dominios y han probado ser
altamente fiables. Por ello sería deseable la disponibilidad de interfaces en lenguaje natural que
facilitasen la comunicación con el sistema por parte de usuarios no expertos en computación
(médicos, biólogos, ingenieros).




b) Estructuras y cualidades de un sistema experto.

Un diagrama general de bloques de un Sistema Experto se representa en la figura siguiente:

                                                Usuario



                                            Interfase     del
                                            usuario




                                          Máquina de inferencia
                                      1. Reglas de inferencias
                                      2. Estrategias de control




  Base de conocimiento                                            Base de datos
  1. Reglas                                                       (Memoria de trabajo)
  2. Marcos                                                       Estado del sistema
  3. Redes semánticas                                             Estados iniciales
  etc.                                                            Estado actual
                                                                  Factores



Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



La base del conocimiento representa el universo donde esta el sistema, es decir la información
que rodea al problema.

A través del motor de inferencia sabemos como el experto decide cual regla aplicar a cuales
datos, como resolver conflictos entre reglas y entre datos; y como va ha inferir los nuevos hechos
o nuevos datos; y para eso debemos saber como piensa el experto y debemos saber como utiliza
la base del conocimiento (base de reglas y la base de datos.)

La interfaz del usuario debe servir para ingresar los datos, las reglas, cambiarlas, cambiar el
motor de inferencia; debe tener capacidad de circulación y capacidad de operación cuando se usa
en el sistema experto.

El Shell es un módulo formado por el motor de inferencia y la interface del usuario y son los
generadores del sistema experto. De acuerdo a todos los estudios (desde 1987) usar un Shell es
una manera racional para desarrollar un sistema experto.

La base de datos y las reglas deben cumplir ciertos formalismos para que el Shell lo entienda. Los
resultados de utilizar sistemas expertos hasta el momento son apenas aceptables. en algunos casos
buenos o bastante buenos y en algunos casos realmente malos.

Estos errores son debidos a que no se sabe elegir el Shell del sistema experto. No es lo mismo
usar un Shell que desarrolla una persona para un problema de Agricultura que usar el mismo
programa para resolver problemas de producción o de verificación de producción por poner un
ejemplo. La razón es que el dominio de la aplicación es diferente por lo tanto el sistema no va ha
funcionar. Muchas empresas nos dicen el origen del Shell. Algunos son muy atractivos pero
cuando se les hace una prueba de escritorio funcionan mal. Por lo tanto un Ingeniero o futuro
Ingeniero debe desarrollar métodos para evaluar estos Shell.

Motor de Inferencia

Es la forma como el experto soluciona un problema haciendo funcionar las reglas, encadenando
las reglas para llegar a la solución. Antes se tiene que definir estas reglas.

El ciclo de Cálculo: El motor sigue un orden. Selecciona cual es la regla que debe aplicar primero
basado en hechos, cuál es la hipótesis y cuáles son las metas; luego se aplican y se definen nuevas
reglas con nuevos datos o se demuestra que la elección es valida.

Función del Motor de Inferencia

     ♦ Determinar cuales son las acciones que deben de realizarse
     ♦ Determinar el orden de las acciones
     ♦ Determinar como se realizan las acciones entre las distintas partes del sistema experto,
       como se comunican con la base de conocimiento, la interface del usuario, etc.
     ♦ Como y cuando se procesan las reglas


Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



     ♦ Establecer los criterios de control de dialogo con la persona
     ♦ Establecer los criterios para resolver problemas; siempre existen criterios que utilizan
       mecanismos diferentes.

La Interfaz del Usuario

Debe permitir correr el programa y tener todas las facilidades para consultar, preguntar porqué el
programa eligió esa regla y obtuvo ese hecho o dato, porqué se usó ese algoritmo diferente. La
interfaz del usuario debe permitir desarrollo, es decir debe poder editarse reglas, crear nuevas
reglas, crear bases de datos, agregar datos, etc.

Tiene que haber una comunicación en forma amistosa y suave hacia el usuario, y mostrar todo el
proceso que se esta desarrollando, ya que a nosotros nos interesa saber lo que esta sucediendo y
porque se esta aplicando este teorema, esta regla, etc. La mayoría de estos Shell tienen esta
facilidad. Un usuario paso a paso aprende a pensar como el experto, esto es algo nuevo pues el
programa experto nos permite no solamente resolver un problema con éxito, sino que también
prepararnos.

Función de la Interfaz del Usuario

     ♦    Permite un aprendizaje rápido.
     ♦    Filtra los datos para eliminar errores.
     ♦    Presenta los resultados en forma clara y precisa.
     ♦    Permite dar explicaciones (hacer preguntas.)

Estrategias para Aplicar Control Experto

Una manera es meterse y buscar llegar hasta la respuesta final por una sola rama, llamada
búsqueda en profundidad. Otra manera es desarrollar todo lo que esta a lo ancho del problema
hasta llegar a la solución. Otras maneras pueden ser:

     ♦    Elegir la regla que más influye en la hipótesis.
     ♦    Elegir la regla donde la recopilación de hechos sea menos costosa.
     ♦    Elegir la regla cuyos hechos determinen menos riesgos.
     ♦    Elegir la regla que reduzca el espacio de búsqueda.




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Diagrama general de bloques de un Sistema Experto

Los componentes claves son la base de conocimiento, el sistema de inferencias, la base de datos y
el interfase con el usuario.

El corazón de los Sistemas Expertos es la base de conocimientos, que tiene diferentes formas de
representarse, como Reglas de producción, cálculo de predicado, Marcos, Listas, Redes
semánticas, Libretos, etc.

La base de datos es llamada algunas veces base de datos global porque contiene un amplio rango
de información acerca del estado actual del problema que está siendo resuelto. En la practica, la
base de datos es realmente una porción de memoria de trabajo donde el estado actual del proceso
del problema que se está resolviendo se guarda.

La máquina de inferencia es el software que implementa una búsqueda y opera los modelos
encontrados. Siendo su función principal probar la hipótesis o desaprobarla.

La interfase con el usuario hace fácil el manejo del Sistema experto, ocultando todas las
complejidades de sus procesos.

Un Sistema de Representación de Conocimiento para un universo U consiste en:

     a) Una colección E de etiquetas que pueden representar individuos en U; estas etiquetas se
        dividen en constantes y variables.
     b) Una colección F de funciones.
     c) Una colección R de relaciones.
     d) Un lenguaje L consistente en reglas para combinar las funciones, relaciones y etiquetas en
        expresiones bien formadas de L.
     e) Una semántica S que provee de significado a las etiquetas, funciones y relaciones.

Aún suponiendo que poseamos un conocimiento lo suficientemente detallado de la materia que
pretendemos representar, resulta crucial el disponer de una notación lo suficientemente precisa
como para poder plasmar ese conocimiento de forma que pueda ser usado de forma inteligente
por un cerebro electrónico. A esta notación se le da el nombre de esquema de representación.

En IA, el problema de diseñar un sistema experto se centra en construir una base de conocimiento
que represente el conocimiento de una empresa determinada.

Según la clase de problemas hacia los que estén orientados, podemos clasificar los Sistemas
Expertos en diversos tipos entre los que cabe destacar diagnosis, pronóstico, planificación,
reparación e instrucción; vamos a ver algunas de las aplicaciones existentes (o en periodo de
desarrollo) para cada uno de los campos citados.




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Los sistemas de diagnosis siguen un proceso de búsqueda de las razones del funcionamiento
incorrecto de un sistema a partir de la información disponible. Aquí se podrían tener en cuenta
tanto aplicaciones de diagnóstico médico como de averías. En lo referente al diagnóstico médico,
existe una serie de aplicaciones extensa en número (FLUIDEX, EACH, TROPICAID,
SPHINX,...), pero quizá la más conocida, a la vez que la más antigua, podría ser MYCIN.

MYCIN es el primer Sistema Experto que llegó a funcionar con la misma calidad que un experto
humano, dando a su vez explicaciones a los usuarios sobre su razonamiento. Antes del desarrollo
de MYCIN (mediados de los 70), se criticaba a la Inteligencia Artificial por resolver únicamente
problemas "de juguete", sin embargo, el éxito de MYCIN demostró que la tecnología de los
Sistemas Expertos estaba suficientemente madura como para salir de los laboratorios y entrar en
el mundo comercial. MYCIN es, en definitiva, un sistema de diagnóstico y prescripción en
medicina, altamente especializado, diseñado para ayudar a los médicos a tratar con infecciones de
meningitis (infección que produce inflamación de las membranas que envuelven al cerebro y la
médula espinal) y bacteriemia (infección que implica la presencia de bacterias en la sangre).
Dichas infecciones pueden ser fatales y a menudo aparecen durante la hospitalización. El
problema se complica por la necesidad de actuar con rapidez.

Existen además en este campo Sistemas Expertos como TROPICAID, que permiten obtener
información adicional sobre los medicamentos más usados. TROPICAID selecciona un conjunto
de posibles diagnósticos a partir del análisis del cuadro médico, y propone un tratamiento óptimo
para el caso concreto.

Por otra parte, el campo de la diagnosis abarca otras aplicaciones además de las médicas (si bien
pueden ser estas últimas las más conocidas). En este caso se trata de fallos, averías o anomalías
que se producen generalmente en una máquina. Dentro de este apartado existen también
numerosas aplicaciones, pudiendo encontrar incluso empresas en la propia CAPV que han
desarrollado trabajos dentro del campo de la diagnosis de equipos industriales complejos. Tal es
el caso de ADICORP (con su sistema TESP para la diagnosis de robots Puma) que trabaja
además en proyectos de Visión Artificial.

Los sistemas de pronóstico deducen consecuencias posibles a partir de una situación. Su objetivo
es determinar el curso del futuro en función de información sobre pasado y presente. Esto abarca
diversos problemas, tales como predicciones meteorológicas, predicciones demográficas, o
incluso previsiones de la evolución bursátil entre otros. Quizá la aplicación más conocida sea
PROSPECTOR, esto es un sistema para la evaluación de emplazamientos geológicos (con el que
se encontró un yacimiento de mineral importante).

Existen también sistemas de planificación, pudiéndose encontrar aplicaciones en este área, que
establecen una secuencia de acciones a realizar encaminadas a la consecución de una serie de
objetivos.

Hay una tendencia creciente a desarrollarlos y utilizarlos, sin embargo, los programas son caros y
tienen que ser analizados con cuidado para determinar su contribución potencial al resultado
final. Una de tales aplicaciones es el Palladian Operations Advisor (de Palladian Software, Inc.,

Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



en Estados Unidos), diseñado específicamente para la dirección de la producción. Las entradas a
este programa comprenden las designaciones de procesos y máquinas de fabricación de una
planta, las especificaciones de productos y el flujo de producción, a partir de lo cual puede
representar gráficamente la planta industrial y el flujo de cada tipo de productos. Con estas
representaciones pueden organizarse y reorganizarse las operaciones de fabricación. El programa
ayuda a la planificación y programación, asesorando en lo que se refiere a los programas que
reducen el trabajo no deseable en niveles de proceso, ajustan el volumen de producción a la
demanda de clientes y evalúan los cambios en las operaciones desde los puntos de vista
económicos y de producción. Puede crear una influencia recíproca con los planificadores y
directores de planta a medida que las condiciones cambian a diario o a cada hora, como
consecuencia de averías mecánicas, modificaciones en los pedidos de los clientes o crisis en el
exterior. El Palladian Operations Advisor puede analizar el estado de la combinación de
productos para mantener la mayor eficacia y rentabilidad posible de las operaciones.

Como caso concreto dentro de la CAPV, la empresa DATALDE ha desarrollado un Sistema
Experto para la planificación de la producción. Dicho trabajo se centra en un taller de propósitos
generales de unas características determinadas, consistiendo la planificación en ordenar en el
tiempo las cargas originadas por los diferentes pedidos, de forma que se asuman los objetivos de
cumplimiento de plazos, distribución eficaz del trabajo y gestión de colas y prioridades. Por su
parte, la empresa ROBOTIKER ha desarrollado un sistema de planificación y control de
producción integral, dentro del que se identifican algunas tareas susceptibles de resolución
mediante sistemas inteligentes (es un sistema basado en MRP-II).

El diseño es también un tema de planificación. En este caso, a partir de una serie de
requerimientos y restricciones, se obtiene el objeto que las satisface. En este campo, LABEIN
(Laboratorio de Ensayos e Investigaciones Industriales, Centro de Investigación tutelado por el
Gobierno Vasco), desarrolló un sistema inteligente para el diseño de motores eléctricos mediante
la aplicación de las tecnologías clásicas de Sistemas Expertos a los sistemas de CAD / CAE de
diseño y análisis. El problema que motivó este proyecto era que ciertos motores, de entre los
eléctricos, son de uso frecuente en la industria exigiendo a la vez un diseño a medida de cada
caso, por ello se creyó conveniente desarrollar una herramienta que asesorase o, incluso, dirigiera
al operador.

Otro tipo de Sistemas Expertos son los orientados a la reparación, sin embargo, no se puede
decir que sea un tipo realmente nuevo, ya que este enfoque abarca diagnosis y planificación.
Dentro de este grupo se incluyen sistemas como DELTA, que ayuda a los mecánicos en el
diagnóstico y reparación de locomotoras diesel-eléctricas. DELTA no solo da consejos expertos,
sino que también presenta informaciones por medio de un reproductor de vídeo. De hecho se
podría encasillar a DELTA más en el área de la instrucción que en reparación, dado que además
proporciona ayudas al trabajo que permiten al estudiante determinar si existe o no un
determinado problema, proporcionando también formación específica sobre el modo de realizar
ciertas reparaciones.




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Un sistema de instrucción (Sistema Experto para formación) realiza un seguimiento del proceso
de aprendizaje de un estudiante. El sistema detecta errores de los estudiantes e identifica el
remedio adecuado, es decir, desarrolla un plan de enseñanza para facilitar el proceso de
aprendizaje y la corrección de errores.

Además de DELTA, existen numerosos sistemas de este tipo; STEAMER, por ejemplo, se creó
para enseñar a los oficiales de la armada los problemas de funcionamiento de una planta de
propulsión a vapor, como las que impulsan a ciertos barcos. Este era el problema de formación
más importante que existía, dada la complejidad de los sistemas. El objetivo es dar al estudiante
una concepción global de lo que pasa en la planta en cualquier momento, con la ventaja de que
además el modelo de presentación es gráfico (utilizando Interlisp).

Con un objetivo similar al de STEAMER, Construcciones Aeronáuticas S. A. (CASA) desarrolló
el Proyecto Eolo CN-235. En este caso, el problema está en el hecho de que pilotar un avión que
cuesta cientos de millones de pesetas es un asunto muy serio a la vez que peligroso, lo que exige
mucho tiempo de entrenamiento, tanto para pilotos como mecánicos, suponiendo para las
compañías aéreas un gran problema, dado el elevado coste de los cursos y la escasez de
instructores. El proyecto surgió de la voluntad de Construcciones Aeronáuticas S. A. de ofrecer
un curso específico para pilotos y técnicos de mantenimiento, a todos los compradores del avión
CN- 235. Eolo CN-235 es un sistema de enseñanza interactivo que integra gráficos, texto y vídeo.

Otro sistema de este tipo, aunque en este caso orientado a medicina, es GUIDON, pensado para
que lo utilicen las Facultades de Medicina para formar a los médicos en la realización de
consultas. GUIDON viene a ser una reorganización de MYCIN con intenciones educativas, por
esto, tiene la ventaja adicional de disponer de toda la base de conocimientos de MYCIN además
de la experiencia acumulada, por consiguiente, puede recuperar como ejemplo cualquier caso que
MYCIN haya tratado.

Además de las áreas de aplicación ya citadas, existen otras como las relativas a los sistemas de
interpretación, que realizan tareas de inferencia a partir de una serie de datos observables (Ej.
análisis de imágenes, o bien interpretación de señal).

Diferencias entre programas convencionales, inteligencia artificial y Sistemas expertos

Convencionales o algorítmicos:

          Deterministas sin redundancia (si están incorrectamente diseñados puede introducirse un
          dato mas de una vez), suelen reflejar condiciones necesarias y suficientes para obtener los
          resultados (con mayor o menor eficiencia) mecanismo simple y camino computacional
          simple para producir la salida en función de la entrada. Los humanos tienen colecciones
          de técnicas para un problema y, si se olvida una, se puede encontrar soluciones de otra
          manera.

          Distinción entre código (receta para manipular estructuras, algoritmos y datos (las propias
          estructuras)

Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




           Según Wiston: Programa = Algoritmo + Estructura de datos.

          Carecen de "autosabiduría", solo las técnicas que encierran y no pueden razonar o explicar
          sus propios mecanismos

          Los programas complejos son opacos y difíciles de modificar. Los algoritmos incluyen
          detalles de representación del conocimiento (incipientes)

          Inútiles para codificar la experiencia o para comunicarla. Así seria difícil aprender a jugar
          al ajedrez examinando un programa convencional que supiera jugar.

Inteligencia Artificial

          Representación e inferencia simbólica
          Búsqueda heurística
          Campo base de la epistemología pragmática

Sistemas Expertos. (basados en el conocimiento), además de la I.A. incluyen

          Ejecutan tareas difíciles con la competencia de un experto humano
          Énfasis en las estrategias de solución de problemas de dominios concretos más que en
          métodos generales.
          Autoconocimiento para razonar acerca de sus propios procesos de inferencia y dan
          justificación de las conclusiones obtenidas.
          Dan una enorme importancia al conocimiento poseído, con relación al formalismo o
          esquema de inferencia utilizados.

Feignbaum: la potencia del S.E. deriva de su base de conocimiento

          De ahí que aparezca con entidad propia la base de conocimiento, separada de sus
          mecanismos de control.

          Programa = Estructura de datos + Base de conocimiento lógico + Control
          En tres niveles: hechos, conocimientos, decisiones.

          Emplean conjuntamente de manera coordinada muchas técnicas de IA.
          Resuelven problemas de:

          - interpretación            - predicción          - diagnóstico
          - depuración                - diseño              - planificación
          - vigilancia                - reparación          - instrucción
          - control                   - asesoramiento       - evaluación de situaciones
          - toma de decisiones        - evaluación de sucesos


Universidad Nacional de Ingeniería.                                  Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Metodología para construir un sistema experto:

     ♦    Identificación del Problema.
     ♦    Conceptualización del Problema .
     ♦    Formalizarlo a través de una lógica o algún lenguaje formal
     ♦    Implementación eligiendo un Shell
     ♦    Pruebas

Identificación del Problema

     ♦ El Experto e Ingeniero identifican el área del problema y definen alcances.
     ♦ Determinación de recursos necesarios, tiempo y facilidades computacionales.
     ♦ Decisión sobre metas y objetivos de la construcción del sistema experto.

Conceptualización del Problema

     ♦ El Ingeniero y Experto explican conceptos claves relaciones y características del flujo de
       Información, necesarias para describir la solución del problema.
     ♦ Especificaciones de sub-tareas, estrategias y necesidades relacionadas con la actividad de
       resolver el problema.

Formalización

     ♦ Graficar los conceptos claves y relaciones en una representación formal sugerida por un
       lenguaje o una herramienta.
     ♦ Selección del lenguaje o Shell.
     ♦ Representación de conceptos y relaciones dentro de la estructura del lenguaje.

Implementación

     ♦    El ingeniero organiza la base del conocimiento en una base de datos.
     ♦    Se elige la base de datos.
     ♦    Se define un conjunto de reglas y estructuras de control del programa.
     ♦    Se realiza el programa.

Pruebas

     ♦ Evaluación del rendimiento del programa.
     ♦ Revisión y ajuste a nivel de excelencia.
     ♦ El experto realiza una evaluación. incluso se diseñan problemas en el que el experto lo
       resuelve y el programa lo resuelve aparte.




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Control Experto

     ♦ Es la combinación de técnicas de Control de Procesos Industriales, del Conocimiento
       Heurístico y de Sistemas Expertos.
     ♦ El objetivo es controlar un proceso.

     Se busca Conocer:

          El proceso y estructuras de control, por pruebas en distintos puntos de operación.
          La información relevante para un sistema de control.

Para esto debemos saber como representar y usar el conocimiento; y además la existencia de
ciertas condiciones para ciertos procesos.




Universidad Nacional de Ingeniería.                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



TOMA DE DECISIONES
La potencia de un Sistema Experto se basa más en una gran cantidad de conocimientos que en un
formalismo deductivo muy eficaz. La idea que se persigue cuando se construye un Sistema
Experto es la de automatizar la labor del experto, partiendo en ocasiones de información
insuficiente o incompleta.




En las empresas, la Inteligencia Artificial, que se encontraba confinada en la "sala de
ordenadores", se va abriendo paso hacia la junta directiva. La razón de esto es simple: a medida
que el mundo empresarial se complica y se llega a la competencia internacional, el conocimiento
se convierte en el factor profesional más importante para un ejecutivo. A la persona que esté
planeando la estrategia a seguir por su empresa o que tome decisiones en producción, marketing,
distribución o asignación de recursos, los Sistemas Expertos le pueden demostrar que se pueden
tomar decisiones con más conocimiento, llevando a un aumento de ganancias así como a la
obtención de beneficios importantes para la empresa, como el aumento de su capacidad.




En las empresas, los Sistemas Expertos empiezan a tener cada vez mayor auge, hasta el punto de
ir suponiendo un punto de referencia importante en la toma de decisiones para la junta directiva.
En realidad, incluso se podría decir que el límite de las aplicaciones objeto de los Sistemas
Expertos está en la imaginación humana, siendo siempre de utilidad allí donde se necesite un
experto.

 La medida de la efectividad de las operaciones de planificación y control de una organización y
su sensibilidad a los cambios, son elementos importantes en la buena dirección de la producción.
Los planes y las decisiones en la producción se desarrollan y llevan a cabo en un mundo de
representaciones simbólicas de hechos y conjeturas, muchas de las cuales no están informatizadas
y representan la experiencia y el conocimiento de expertos. En cada estadio de los procesos de
planificación, decisión y control para las operaciones de producción, sea ésta automatizada o no,
las personas expertas son las que asesoran, localizan los fallos y dirigen. Ellas son las que ayudan


Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



a interpretar la multitud de datos procedentes de los departamentos de diseño, de la planta de
producción y de los representantes de los clientes, observan modelos procesables en dichos datos,
prueban mentalmente, y con ordenadores, posibles líneas de acción, recomiendan las medidas que
la gerencia debe tomar y ayudan luego a poner en marcha sistemas pensados para conseguir
planificaciones mejores, operaciones más fluidas y una competencia más efectiva.

Los Sistemas Expertos ofrecen procedimientos informatizados para perfeccionar la toma de
decisiones de la gerencia por medio de la combinación del conocimiento que poseen los expertos
acerca del tipo de acciones que tiene que efectuar y la forma y el tiempo en que debe llevarlas a
cabo con la permanencia, lógica, memoria y velocidad de cálculo del ordenador. En tanto que
muchos sistemas expertos se ocupan del razonamiento técnico más que del gerencial, la gerencia
puede obtener ordenadores de mucha potencia, con grandes memorias, rápidos y programados
para tratar problemas clave de forma efectiva en un área empresarial determinada.

El éxito del directivo experto en la aplicación de sistemas como en las plantas de fabricación,
grandes o pequeñas, se mide por resultados tales como rendimientos mayores en la calidad de los
productos, entregas a los clientes dentro de plazo, reducción de los retrasos en planta, reducción
de costes procedentes de errores, mejor utilización de los materiales, mejor utilización del
personal y mejora en las compras y reducción en los costes de material.

Como cualquier otra forma de software tradicional, los sistemas Expertos ofrecen algunas
ventajas:

     a) Permitir que los no expertos trabajen como expertos.
     b) Mejorar la productividad aumentando los trabajos realizados con mayor eficiencia.
     c) Ahorrar tiempo al alcanzar objetivos específicos.
     d) Simplificando algunas operaciones.
     e) Automatizar procesos repetitivos, tediosos y llenos de complejidad.
     f) Permiten que nuevos tipos de problemas sean resueltos haciendo a las computadoras más
        útiles.
     g) Capturan y guardan valiosos conocimientos evitando perdidas debidas a retiros o muertes
        de expertos.
     h) Hacen que el conocimiento esté disponible a una mayor audiencia, incrementando la
        habilidad de resolver problemas a un número mayor de personas.

Entre las desventajas tenemos:

     a) Desarrollar un sistema experto es más difícil que la creación de un software convencional.
        Los buenos expertos son difíciles de encontrar y la extracción del conocimiento es un
        trabajo tedioso y tardado.
     b) Los sistemas expertos son caros. Cuesta mucho su desarrollo, prueba y la entrega a los
        usuarios finales.
     c) El tamaño de la memoria y la rapidez de una computadora personal limitan su utilidad.



Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



     d) Los Sistemas Expertos no son totalmente confiables. Debido a esto se recomienda que sus
        resultados deben ser ponderados, probados y escrutinizados. El ser humano debe realizar
        la decisión final.

Algunas de estas desventajas gradualmente desaparecerán o disminuirán con las apariciones
mejoradas de la tecnología en hardware y software.

c) Herramientas para la construcción de un sistema experto

Una de las principales razones para el rápido crecimiento de desarrollo de sistemas expertos, es el
soporte de un conjunto de herramientas poderosas. Entre las herramientas para sistemas expertos
tenemos:

En un inicio los sistemas expertos se creaban como un conjunto de representaciones declarativa
(reglas en su mayor parte) combinadas con un interprete para esas declaraciones, fue posible
separar el interprete y el conocimiento específico del dominio, y así se pudo crear un sistema
capaz de construir nuevos sistemas expertos con la añadidura de nuevos conocimientos
correspondientes al dominio del nuevo problema. A los intérpretes resultantes se les llamó
Armazones (Shell). El valor de un Shell para SE está directamente relacionado con el grado en
que las características del dominio se parecen con las características esperadas por el modelo
interno del Shell.

En este momento existen comercialmente varios armazones que sirven de base para muchos de
los sistemas expertos que actualmente se construyen. Los últimos armazones presentan mucha
mayor flexibilidad en la presentación del conocimiento, del razonamiento y de las explicaciones
que los primeros. Con el tiempo la experiencia ganada indica que para facilitar las cosas los
sistemas expertos se deben integrar con otros tipos de programas. Los sistemas expertos no
pueden actuar aislados, necesitan acceder a bases de datos colectivas, y por tanto ser controlados
igual que otros sistemas. A menudo son incrustados en otros programas de aplicación más
grandes que usan técnicas de programación convencionales.

La herramienta más elemental para el desarrollo de sistemas expertos es un lenguaje de
propósito general. Lisp ha sido y continua siendo el lenguaje más ampliamente empleado para el
desarrollo de sistemas expertos, el lenguaje de programación Prolog, aunque su empleo como un
lenguaje para el desarrollo de sistemas expertos ha sido un poco menos que el de Lisp.

Generalmente las herramientas más poderosas para SE son las grandes herramientas híbridas
que combinan ambientes de desarrollo sofisticado con representaciones múltiples de
conocimiento y paradigmas múltiples de inferencia. Esta integración, de varias facilidades
básicas es muy útil porque posibilita que cualquier herramienta dada sea empleada con muchos
diferentes problemas, o problemas que involucren varias clases diferentes de representaciones del
conocimiento y de paradigmas de inferencia.




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



En resumen, indicamos que una de las características más importantes que debe tener una
armazón es una interfaz fácil de emplear entre un sistema experto escrito con la armazón y un
gran entorno de programación, que probablemente será más convencional.

Desarrollo de los Sistemas Expertos

Para desarrollar el software primero conocemos el equipo de gente necesario, después los
métodos que utiliza ese equipo de gente y por último como prueban y construyen prototipos de
software para terminar en el sistema final.

     1. Equipo de desarrollo
     2. Métodos auxiliares en el desarrollo
     3. Construcción de prototipos

El Equipo de desarrollo

Las personas que componen un grupo o un equipo, como en todos los ámbitos deben cumplir
unas características y cada uno de ellos dentro del equipo desarrolla un papel distinto.

A continuación cada componente del equipo dentro del desarrollo y la función de cada uno:

     1. El experto La función del experto es poner sus conocimientos especializados a
        disposición del Sistema Experto.

     2. El ingeniero del conocimiento El ingeniero plantea las preguntas al experto, estructura
        sus conocimientos y los implementa en la base de conocimientos.

     3. El usuario aporta sus deseos y sus ideas, determinando especialmente el escenario en el
        que debe aplicarse el Sistema Experto.

         ESQUEMA DE REPRESENTACIÓN EN EL QUE FIGURA EL EQUIPO DE DESARROLLO.




En el desarrollo del Sistema Experto, el ingeniero del conocimiento y el experto trabajan muy
unidos. El primer paso consiste en elaborar los problemas que deben ser resueltos por el sistema.
Precisamente en la primera fase de un proyecto es de vital importancia determinar correctamente
el ámbito estrechamente delimitado de trabajo. Aquí se incluye ya el usuario posterior, o un



Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



representante del grupo de usuarios. Para la aceptación, y en consecuencia para el éxito, es de
vital y suma importancia tener en cuenta los deseos y las ideas del usuario.

Una vez delimitado el dominio, se amplía el sistema con los conocimientos del experto. El
experto debe comprobar constantemente si su conocimiento ha sido transmitido de la forma más
conveniente. El ingeniero del conocimiento es responsable de una implementación correcta, pero
no de la exactitud del conocimiento. La responsabilidad de esta exactitud recae en el experto.

De ser posible, el experto deberá tener comprensión para los problemas que depara el
procesamiento de datos. Ello facilitará mucho el trabajo. Además, no debe ignorarse nunca al
usuario durante el desarrollo, para que al final se disponga de un sistema que le sea de máxima
utilidad.

La estricta separación entre usuario, experto e ingeniero del conocimiento no deberá estar
siempre presente. Pueden surgir situaciones en las que el experto puede ser también el usuario.
Este es el caso, cuando exista un tema muy complejo cuyas relaciones e interacciones deben ser
determinadas una y otra vez con un gran consumo de tiempo. De esta forma el experto puede
ahorrarse trabajos repetitivos.

La separación entre experto e ingeniero del conocimiento permanece, por regla general
inalterada.

Métodos auxiliares en el desarrollo

La eficiencia en la creación de Sistemas Expertos puede aumentarse en gran medida con la
aplicación de Shells.

Un Shell (de forma resumida) es un Sistema Experto que contiene una base de conocimientos
vacía. Existen el mecanismo de inferencia, el componente explicativo y a veces también la
interface de usuario.

Ya el mecanismo de inferencia depende del problema o grupos de problemas. No existe ningún
Shell para todas las aplicaciones, sino que hay que buscar un Shell para cada aplicación.

También es posible que haya que desarrollar adicionalmente partes del mecanismo de inferencia.
Según el tamaño de esta parte tendrá que pensar si la aplicación de un Shell determinado sigue
siendo apropiada. Si el ingeniero del conocimiento conoce bien este Shell, es decir si, por
ejemplo, conoce exactamente cómo son procesadas las reglas, entonces sólo tendrá que
concentrarse en la creación de la base de conocimientos.

A menudo, el Shell contiene Frames. Estos son marcos previamente preparados, en los que, por
ejemplo, sólo se introduce el nombre del objeto, sus cualidades y los correspondientes valores.

Las relaciones entre los objetos se indican mediante señalización de los dos objetos y del tipo de
relación que exista entre ellos. El trabajo de implementación debe reducirse al máximo. Los

Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Frames son componentes explicativos y/o el mecanismo de inferencia que están dimensionados
de forma distinta en los diferentes Shells.

Construcción de prototipos

En el desarrollo de Sistemas Expertos se nos plantean riesgos como:

     ♦ Falta de implementaciones similares que puedan servir de orientación al encargado del
       desarrollo en la casi totalidad de los casos.
     ♦ Requisitos necesarios están esbozados con muy poca precisión.

El diseño y la especificación requieren una temprana determinación de la interfaz del software y
de la funcionalidad de los componentes. En el desarrollo de Sistemas Expertos deben alterarse a
menudo durante y también después de su implementación, ya que los requisitos se han ido
configurando y han obtenido mayor precisión, o porque se ha descubierto que deben iniciarse
otras vías de solución.

Durante el desarrollo, resulta más apropiado empezar con implementaciones tipo test para
encontrar el camino hacia una solución definitiva y para hacerlas coincidir con las necesidades
del usuario.

Un método efectivo es la implementación de un prototipo de Sistema Experto que permita llevar
a cabo las funciones más importantes de éste, aunque con un esfuerzo de desarrollo
considerablemente inferior al de una implementación convencional. Este proceder se define bajo
el nombre de "Rapid Prototyping".

Las máquinas de Inteligencia Artificial especialmente desarrolladas, los lenguajes de
programación de Inteligencia Artificial y en determinados casos los Shells, ofrecen una
considerable ayuda para el "Rapid Prototyping". Para Sistemas Expertos, el "Rapid Prototyping
es el procedimiento más adecuado, pues posibilita una rápida reacción a los deseos en constante
cambio tanto por parte de los expertos como parte del usuario.




Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



                   Aplicación de sistemas basados en el conocimiento




Ejemplo: Cajero Automático - Problema Determinista.

Un usuario (por ejemplo, un cliente) desea sacar dinero de su cuenta corriente mediante un cajero
automático (CA). En cuanto el usuario introduce la tarjeta en el CA, la máquina la lee y la
verifica. Si la tarjeta no es verificada con éxito (por ejemplo, porque no es legible), el CA
devuelve la tarjeta al usuario con el mensaje de error correspondiente.

En otro caso, el CA pide al usuario su número de identificación personal (NIP). Si el número
fuese incorrecto, se dan tres oportunidades de corregirlo. Si el NIP es correcto, el CA pregunta al
usuario cuánto dinero desea sacar. Para que el pago se autorice, la cantidad solicitada no debe
exceder de una cierta cantidad limite diaria, además de haber suficiente dinero en su cuenta.

En este caso se tienen siete objetos, y cada objeto puede tomar uno y solo un valor de entre sus
posibles valores. La tabla muestra estos objetos y sus posibles valores.




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




En la Regla 1, por ejemplo, la premisa consiste
en seis afirmaciones objeto-valor conectadas
mediante el operador lógico y, lo que indica que
la premisa objeto Pago (en la conclusión) con los
demás objetos. Según la Regla 1, la acción que
debe iniciar el CA es dar el dinero al usuario si la
tarjeta se ha verificado correctamente, la fecha
no ha expirado, el NIP es correcto, el número de
intentos para dar el NIP correcto no se ha
excedido y la cantidad solicitada no excede ni la
cantidad disponible ni el límite máximo diario.

Las expresiones lógicas en cada una de las
restantes reglas de la figura constan de una sola
afirmación. Nótese que la Regla 1 indica cuándo
debe permitirse el pago, y las restantes cuándo
debe rechazarse. El motor de inferencia aplica
Modus Ponen y Modus Tollen.




Aplicando dichas reglas:




Universidad Nacional de Ingeniería.                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



d) Manejo de incertidumbre y probabilidad.

Los sistemas basados en reglas descritos en este capítulo pueden aplicarse sólo a situaciones
deterministas. En algunas resoluciones de problemas puede resultar adecuado describir las
creencias sobre las que no se tiene certeza, pero en las que existen algunas evidencias que las
apoyan. Por ejemplo, las relaciones entre las enfermedades y los síntomas no son deterministas,
puesto que un mismo conjunto de síntomas puede estar asociado a diferentes enfermedades. De
hecho, no es extraño encontrar dos pacientes con los mismos síntomas pero diferentes
enfermedades.

En muchos sistemas de resolución de problemas un objetivo importante consiste en reunir
evidencias sobre la resolución del sistema y modificar su comportamiento sobre la base de las
mismas. Para modelar este comportamiento se necesita una teoría estadística de la evidencia. Las
estadísticas bayesianas constituyen esta teoría. El concepto fundamental de las estadísticas
bayesianas es el de la probabilidad condicionada. El teorema de Bayes se enuncia así:

                                            P(Hi | E ) = P(E | Hi ) * P(Hi )

                                                       ∑          P(E | Hn ) * P(Hn )
                                                           K
                                                           n =1


donde:

     •    P(Hi | E): La probabilidad de que la hipótesis Hi sea verdad dada la evidencia E.
     •    P(E | Hi): La probabilidad de que se observe la evidencia E dada la hipótesis i como
          verdadera.
     •    P(Hi): La probabilidad a priori de que la hipótesis i sea cierta, independientemente de
          cualquier evidencia especifica. Estas probabilidades se denominan probabilidades previas
          o a priori.
     •    k: El número total de hipótesis posibles.

En algunas ocasiones se tendrá un cuerpo de evidencia previo y alguna nueva observación E, por
lo que será necesario hacer el siguiente calculo:

                                      P(H | E, e) = P(H | E) * P(e | E, H) / P (e | E)

El tamaño del conjunto de probabilidad combinadas que se necesitan para calcular esta función,
                                     n
crece con una función de la forma 2 , donde n es el número de proposiciones diferentes que es
necesario considerar, lo que hace inaplicable al teorema de Bayes. A pesar de esto las estadísticas
bayesianas proporcionan una base atractiva para los sistemas que razonan bajo incertidumbre, por
lo que se han desarrollado varios mecanismos que hacen uso de su potencialidad, como son:

     •    Incorporación de los factores de certeza.
     •    Redes bayesianas.


Universidad Nacional de Ingeniería.                                             Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Factores de certeza

Un factor de certeza se define en términos de dos componentes:

     •    Manager of believe: MB [h, e]. Una medida entre cero y uno de la creencia de que la
          hipótesis h proporciona la evidencia e. MB da una medida sobre hasta que punto la
          evidencia soporta la hipótesis. Es cero si la evidencia no soporta la hipótesis.

     •    Manager of disapoint: MD [h, e]. Una medida entre cero y uno sobre la incredulidad de
          que la hipótesis h proporciona la evidencia e. MD da una medida de hasta que punto la
          evidencia soporta la negación de la hipótesis. Es cero si la evidencia soporta la hipótesis.

A partir de estas dos medidas se puede definir el factor de certeza, CF [h, e], como sigue:

                                          CF [h, e]= MB [h, e] - MD [h, e]

Los factores de certeza los proporcionan los expertos, y estos reflejan las valoraciones del experto
sobre la fortaleza con que la evidencia soporta la hipótesis. Sin embargo en el proceso de
razonamiento los factores de certeza tienen que combinarse para reflejar el uso de las múltiples
partes de la evidencia y las múltiples reglas que se aplican para resolver el problema.

     •    Se obtiene el factor de certeza de una hipótesis dada una combinación de evidencias.


                                                  s1
                                                             h
                                                  s2



     Las medidas sobre la creencia o no creencia de una hipótesis dadas las observaciones s1 y s2
     se calculan de la siguiente forma:

                                  0                                                     sí MD[h, s1 ^ s2]= 1
     MB [h, s1 ^ s2] =
                                  MB [h, s1] + MB [h, s2 ]*(1 - MB [h, s1])             en caso contrario


                                  0                                                     sí MD[h, s1 ^ s2]= 1
     MD [h, s1 ^ s2]=
                                  MD [h, s1] + MD [h, s2 ]*(1 - MD [h, s1])             en caso contrario




Universidad Nacional de Ingeniería.                                    Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



     Ejemplo:

     Suponga que se tiene una observación inicial que confirma nuestra creencia en h con MB =
     0.3. Entonces:
               MD [h, s1]= 0
               CF[h, s1]= 0.3 – 0 = 0.3

     A continuación se hace una segunda observación, que confirma h con un valor de
     MB[h,s2]=0.2. Entonces:
              MB [h, s1 ^ s2] = 0.3 + (0.2 )* (1 - 0.3)
              MB [h, s1 ^ s2] = 0.3 + 0.14
              MB [h, s1 ^ s2] = 0.44

                   MD [h, s1 ^ s2] = 0
                   CF [h, s1 ^ s2] = 0.44 – 0
                   CF [h, s1 ^ s2] = 0.44

     •    Se obtiene el factor de certeza dada una combinación de hipótesis.



                                                            h1
                                        e
                                                            h2



Se utiliza cuando se necesita conocer el factor de certeza de un antecedente de una regla que
contiene varias cláusulas.

                                      MB [h1 ^ h2 , e ]= mín (MB [h1, e], MB [h2, e])

                                      MB [h1 v h2 , e ]= máx (MB [h1, e], MB [h2, e])

     •    Encadenamiento de reglas: El resultado de la incertidumbre de una regla es la entrada de
          otra.

                                                     e        s         h

Sea MB’s [h, s]la medida de la creencia sobre h estando completamente segura la validez de s y
sea e la evidencia que nos lleva a creer en s, se tiene:

                                        MB [h, s]= MB’[h, s] * máx (0, CF [s, e])


Universidad Nacional de Ingeniería.                                     Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Ejemplo

Considérense las siguientes características (variables y sus posibles valores) de las personas de
una población dada:

          • Sexo = {hombre, mujer}
          • Fumador = {sí (f), no ( ¯ f)}
          • Estado Civil = {casado (c), no casado (¯c)}
          • Embarazo = {sí (e), no (¯e)}

La función de probabilidad conjunta de estas cuatro
variables se da en la tabla. Por ello, por ejemplo, el 50%
de las personas de una población son mujeres, y el

                0.01 + 0.04 + 0.01 + 0.10
                                                          =
(0.01 + 0.04 + 0.01 + 0.10) + (0.00 + 0.02 + 0.00 + 0.07)

64% de los fumadores son mujeres.

Sea A una persona elegida al azar de la población. Sin conocer si la persona es fumadora, la
probabilidad de que se trate de una mujer es p(A = mujer) = 0.50. Pero si se sabe que la persona
es fumadora, esta probabilidad cambia de 0.50 a p(A = mujer|A = f) = 0.64. Por tanto, se tiene p(A
= mujer|A = f) ≠ p(A = mujer); por lo que las variables Sexo y Fumador son dependientes.

                                      Ejemplo

                                      Considérese la función de probabilidad conjunta de las tres variables binarias
                                      X, Y y Z dadas en la tabla Entonces se tiene:
                                      • Las funciones de probabilidad marginal de X, Y y Z se muestran en la tabla.
                                      Por ejemplo, la función de probabilidad marginal de X se calcula mediante




Universidad Nacional de Ingeniería.                                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



     ♦ Por ejemplo, las funciones de probabilidad conjunta de las parejas X e Y son:




     ♦ Por ejemplo, la probabilidad condicional de X dada Y es




     ♦ Funciones de Probabilidad Marginal




     ♦ Funciones de Probabilidad Conjuntas por Pares.




Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



     ♦ Función de Probabilidad Condicional de una Variable dado Otra.




Redes Bayesianas

En las redes bayesianas el formalismo se preserva y se confía en la modularidad del mundo que
se intenta modelar. La idea principal consiste en que para describir el mundo real no es necesario
utilizar una tabla de probabilidades enorme en la que se listen las probabilidades de todas las
combinaciones concebibles de sucesos. La mayoría de los sucesos son condicionalmente
independientes de la mayoría de los demás por lo que no deben considerarse sus interacciones.
En lugar de esto, se puede usar una representación mas local en donde se describan grupos de
sucesos que interactúen.

Existen dos diferentes formas en que las proposiciones pueden influenciar las probabilidades de
las demás, la primera de ellas consiste en que influya en las probabilidades de sus indicios; la
segunda en que la observación de un indicio afecte a la probabilidad de todas las posibles causas.
La idea que hay detrás de la estructura de red bayesiana es la distinción clara entre estos dos tipos
de influencia.

Se construye un grafo acíclico dirigido (GAD) que representa las relaciones de causalidad entre
las variables. Las variables del grafo pueden ser proposicionales (pueden tomar los valores
verdadero o falso) o pueden ser variables que tomen valores de algún tipo (una temperatura
corporal o una lectura tomada de algún dispositivo de diagnóstico).

Ejemplo: Observe el grafo formado por la siguiente situación: En una determinada mañana la
hierba se encuentra húmeda, pero no se tiene certeza de que la causa sea que hubo riego en la
noche anterior o por la lluvia.


                                              Estación lluviosa


                                      Riego                              Lluvia

                                                     Húmedo




Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Un GAD ilustra las relaciones de causalidad que pueden surgir entre los nodos que contiene. Sin
embargo, para poder usarlo como base de un razonamiento probabilístico, es necesario conocer
para cada valor de un nodo padre, que evidencia proporciona sobre los valores que pueden tomar
los nodos hijos. Estos datos se pueden encontrar en una tabla que contenga las probabilidades
condicionadas.

Ejemplo: Se muestra a continuación la tabla de probabilidades condicionadas para el grafo del
ejemplo anterior:

                                          Atributo              Probabilidad
                             P (Húmedo | Riego, Lluvia)             0.95
                             P (Húmedo | Riego, ¬ Lluvia)           0.9
                             P (Húmedo | ¬ Riego, Lluvia)           0.8
                             P (Húmedo | ¬ Riego, ¬ Lluvia)         0.1
                             P (Riego | Estación lluviosa)          0.0
                             P (Riego | ¬ Estación lluviosa)        1.0
                             P (Lluvia | Estación lluviosa)          0.9
                             P (Lluvia | ¬ Estación lluviosa)       0.1
                             P (Estación lluviosa)                  0.5

A partir de la tabla se observa que la probabilidad a priori de una época de lluvias es de 50 %,
entonces, si se esta en una época de lluvias, la probabilidad de que llueva durante una noche dada
es de 90 %, si no es así, la probabilidad de que llueva es sólo de 10 %.

Ejercicio.

Calcule CF, MB y MD de h1 dada tres observaciones, donde:

          CF(h1,o1) = 0.5
          CF(h1,o2) = 0.3
          CF(h1,o3) = -0.2




Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Ejemplo.

Para ilustrar el uso del teorema de Bayes, supóngase que un paciente puede estar sano (no tiene
enfermedad alguna) o tiene una de m−1 enfermedades posibles {E1, . . . , Em−1}. Por
simplicidad de notación, sea E una variable aleatoria que puede tomar uno de m posibles valores,
{e1, . . . , em}, donde E = ei significa que el paciente tiene la enfermedad Ei, y E = em significa
que el paciente no tiene ninguna enfermedad. Supóngase también que se tienen n síntomas {S1, . .
. , Sn}. Ahora, dado que el paciente tiene un conjunto de síntomas {s1, . . . , sk}, se desea calcular
la probabilidad de que el paciente tenga la enfermedad Ei, es decir, E = ei. Entonces, aplicando el
teorema de Bayes, se obtiene




Conviene hacer los siguientes comentarios sobre la fórmula:

     ♦ La probabilidad p(ei) se llama probabilidad marginal, prior, “a priori” o inicial de la
       enfermedad E = ei puesto que puede ser obtenida antes de conocer los síntomas.
     ♦ La probabilidad p(ei|s1, . . . , sk) es la probabilidad posterior, “a posteriori” o
       condicional de la enfermedad E = ei, puesto que se calcula después de conocer los
       síntomas S1 = s1, . . . , Sk = sk.
     ♦ La probabilidad p(s1, . . . , sk|ei) se conoce por el nombre de verosimilitud de que un
       paciente con la enfermedad E = ei tenga los síntomas S1 = s1, . . . , Sk = sk.


                                       Ejemplo 3.4 Adenocarcinoma gástrico. Un centro medico
                                       tiene una base de datos consistente en las historias clínicas
                                       de N = 1, 000 pacientes. Estas historias clínicas se resumen
                                       gráficamente en la figura. Hay 700 pacientes (la región
                                       sombreada) que tienen la enfermedad adenocarcinoma
                                       gástrico (G), y 300 que no la tienen (se considera estar sano
                                       como otro valor posible de la enfermedad). Tres síntomas,
                                       dolor (D), pérdida de peso (P) y vómitos (V), se considera
                                       que están ligados a esta enfermedad.

                                       Por tanto, cuando un paciente nuevo llega al centro médico,
                                       hay una probabilidad 700/1,000 = 70% de que el paciente
                                       tenga adenocarcinoma gástrico. Esta es la probabilidad
                                       inicial, o “a priori”, puesto que se calcula con la
información inicial, es decir, antes de conocer información alguna sobre el paciente.

Por simplicidad de notación, se utiliza g para indicar que la enfermedad está presente y ¯g para
indicar que la enfermedad está ausente. Notaciones similares se utilizan para los síntomas. Por
tanto, pueden hacerse las afirmaciones siguientes:

Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



• probabilidad “a priori”: 440 de 1,000 pacientes vomitan. Por ello, p(v) = card(v)/N = 440/1,000
= 0.44, donde card(v) denota el número de pacientes de la base de datos que vomitan. Esto
significa que el 44% de los pacientes vomitan.

• Verosimilitud: El 50% de los pacientes que tienen la enfermedad vomitan, puesto que p(v|g) = card(v,
g)/card(g) = 350/700 = 0.5, mientras que sólo 30% de los pacientes que no tienen la enfermedad vomitan,
puesto que p(v|¯g) = card(v, ¯g)/card(¯g) = 9 0/300 = 0.3.

• Verosimilitud: El 45% de los pacientes que tienen la enfermedad vomitan y pierden peso, p(v, p|g) =
card(v, p, g)/card(g) = 315/700 = 0.45, mientras que s´olo el 12% de los que no tienen la enfermedad
vomitan y pierden peso, p(v, p|¯g) = card(v, p, ¯g)/card(¯g) = 35/300 ≈ 0.12.

Puesto que la probabilidad inicial de que el paciente tenga adenocarcinoma gástrico, p(g) = 0.7, no es
suficientemente alta para hacer un diagnóstico (nótese que tomar una decisión ahora implica una
probabilidad 0.3 de equivocarse), el doctor decide examinar al paciente para obtener más información.

Supóngase que los resultados del examen muestran que el paciente tiene los síntomas vómitos (V = v) y
pérdida de peso (P = p). Ahora, dada la evidencia (el paciente tiene esos síntomas), ¿cual es la
probabilidad de que el paciente tenga la enfermedad? Esta probabilidad “a posteriori” puede ser obtenida
de la probabilidad “a priori” y de las verosimilitudes, aplicando el teorema de Bayes en dos etapas, como
sigue:

• Tras observar que V = v la probabilidad “a posteriori” es




•Tras observar que V = v y P = p la probabilidad “a posteriori” es




Universidad Nacional de Ingeniería.                                  Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




SEXTA UNIDAD:
REDES NEURONALES

6.1.      Concepto de red neuronal artificial
6.2.      Redes neuronales y computadoras digitales
6.3.      Redes neuronales e IA
6.4.      Redes neuronales y mecanismos de aprendizaje (supervisado – no supervisado)
6.5.      Redes neuronales y lógica borrosa


ANTECEDENTES DE LAS NEURONAS
Durante el periodo de 1967 a 1982, la búsqueda de la neurocomputación se lleva acabo fuera de
Estados Unidos (la búsqueda en Japón, Europa, y la Unión Soviética). Sin embargo, una gran
empresa investiga una cadena neuronal dentro de un proceso del principio adaptativo de procesos
de imágenes, reconocimiento de patrones y modelos biológicos.

Los primeros años de 1980, muchas investigaciones de la neurocomputacion empezaron a ser
audaces propuestas para explorar el desarrollo de neurocomputadoras y aplicaciones de redes
neuronales. En el primer lanzamiento de Defense Advanced Rechears Projects Agency
(DARPA), donde Ira Skurnick (un programa maestro para la oficina de defensa) rechazo a seguir
el concepto convencional e insistió a que escucharan sus argumentos a cerca de sus
investigaciones sobre la neurocomputacion.

Audazmente diversifica lo tradicional; Skurnick empezó sus investigaciones en 1983. Dando el
estatus DARPA'S, como uno de los árbitros mundiales de la moda tecnología.Pocos meses
después el programa maestro de otras organizaciones se consolidaron dando con esto un gran
salto. Skurnic estuvo en el lugar adecuado en el momento adecuado para hacer una llave de
decisión que ayudara al lanzamiento del renacimiento de la neurocomputación.

Algunas otras fuerzas en los años de 1983 a 1986 fue Jonh Hopfiel, un físico famoso con
reputación mundial quien comenzó una interesante investigación en redes neuronales en pocos
anos. Hopfiel escribió dos grandes volúmenes de redes neuronales en 1982 y 1984, que fueron
leídas por mucha gente alrededor del mundo persuadiendo a muchos físicos y matemáticos de
todo el mundo a unirse a la nueva investigación de redes neuronales.

En realidad alrededor de 1986, aproximadamente una tercera parte de toda esta gente se había
vuelto seguidor de Hopfiel. El trabajo de hopfiel ha sido descrito y su principal contribución a
esta ciencia es que la a revitalizado. En algunos círculos de investigadores se ha desarrollado una
confusión en torno a que Hopfiel invento la neurocomputacion o es el que ha hecho los adelantos



Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



más significativos. Esta creencia ha generado gran inconformidad por parte de muchos pioneros
especialmente por aquellos que han estado trabajando muchos años en la oscuridad.

Para 1986, con la publicación del libro "PDP" (que significa procesamiento paralelo distribuido,
volúmenes l y ll), editado por David Rumelhart el camino fue abierto.

En 1987, se realizo la primera conferencia abierta sobre redes neuronales del I.E.E.E. (1700
participantes) fue hecha en San Diego (anteriormente ha habido conferencias solo que son
extremadamente limitadas por el numero de participantes), y la Sociedad Internacional de Redes
neuronales fue formada en 1988 es seguida por la computación neuronal en 1989 y el I.E.E.E.
Transacción sobre Redes Neuronales en 1990. Y seguidas por muchas otras.

A principios de 1987, muchas universidades anunciaron la formación de institutos de
investigación y programas de educación acerca de la neurocomputacion. Alrededor de la
neurocomputacion se hace una interesante historia pero el camino aun se esta desarrollando.
Como dijo Winston Churchill estamos al final del principio.

6.1. CONCEPTO DE RED NEURONAL ARTIFICIAL

Las Redes Neuronales Artificiales (ANNs de Artificial Neural Networks1) fueron originalmente
una simulación abstracta de los sistemas nerviosos biológicos, formados por un conjunto de
unidades llamadas "neuronas" o "nodos" conectadas unas con otras. Estas conexiones tienen una
gran semejanza con las dendrítas y los axones en los sistemas nerviosos biológicos.

La teoría y modelado de redes neuronales artificiales está inspirada en la estructura y
funcionamiento de los sistemas nerviosos, donde la neurona es el elemento fundamental. Existen
neuronas de diferentes formas, tamaños y longitudes, estos atributos son importantes para
determinar la función y utilidad de la neurona.

                              Redes neuronales                   Redes neuronales
                              biológicas                         artificiales

                              Neuronas                           Unidades de proceso
                              Conexiones sinápticas              Conexiones ponderadas
                              Efectividad de la sinapsis         Peso de las conexiones
                              Efecto excitatorio o inhibitorio   Signo del peso de una conexión
                              Estimulación total                 Entrada total ponderada
                              Activación (tasa de disparo)       Función de activación (salida)
                                      Comparación entre RN biológicas y artificiales.

Una neurona es una célula viva, que consta de un cuerpo celular más o menos esférico, de 5 a 10
micras de diámetro, del que sale una rama principal llamada axón, y varias ramas más cortas
llamadas dendritas. A su vez, el axón puede producir ramas en torno a su punto de arranque, y
con frecuencia se ramifica extensamente cerca de su extremo.

1
    Véase: http://www.gc.ssr.upm.es/inves/neural/ann2/abrtions.htm

Universidad Nacional de Ingeniería.                                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




Las dendritas y el cuerpo celular reciben señales de entrada; el cuerpo celular las combina e
integra y emite unas señales de salida. El axón transporta esas señales a los terminales axónicos,
que se encargan de distribuir información a un nuevo conjunto de neuronas. Una neurona recibe
información de miles de otras neuronas, y a su vez, envía información a miles de neuronas más.
Se calcula que en el cerebro existen 1015 conexiones.

Estas señales que reciben y emiten las neuronas son de dos tipos distintos de naturaleza: eléctrica
y química. La señal generada por la neurona y transportada a lo largo del axón es un impulso
eléctrico, mientras la señal que se transmite entre los terminales axónicos de una neurona y las
dendritas de la neurona siguiente es de origen químico; concretamente se realiza mediante
moléculas de sustancias transmisoras (neurotransmisores) que fluyen a través de unos contactos
especiales, llamados sinapsis, que tiene la función de receptor y estan localizados entre los
terminales axónicos y las dendritas de la neurona siguiente.

Existen numerosas formas de definir lo que son las redes neuronales artificiales, desde las
definiciones cortas y genéricas hasta las que intentan explicar más detalladamente lo que significa
red neuronal o computación neuronal, veamos algunas de estas:

Computación neuronal es una nueva forma de computación, inspirada en modelos biológicos.

Una red neuronal artificial es un sistema de computación hecho por un gran número de
elementos simples, elementos de procesos muy interconectados, los cuales procesan información
por medio de su estado dinámico como respuestas a entradas externas.

Redes neuronales artificiales son redes interconectadas masivamente en paralelo de elementos
simples (usualmente adaptativos ) y con organización jerárquica, las cuales intentan interactuar
con los objetos del mundo real del mismo modo que lo hace el sistema nervioso biológico.

 En las redes neuronales biológicas, las células neuronales (neuronas) corresponden a los
elementos de procesos anteriores. Las interconexiones se realizan por medio de las ramas de
salida (axones) que producen un número variable de conexiones (sinapsis) con otras neuronas.
Las redes neuronales son sistemas de simples elementos de proceso muy interconectados.

El Primer modelo de red neuronal fue propuesto en 1943 por McCulloch y Pitts en términos de
un modelo computacional de "actividad nerviosa". El modelo de McCulloch-Pitts es un modelo
binario, y cada neurona tiene un escalón o umbral prefijado. Este primer modelo sirvió de
ejemplo para los modelos posteriores de Jhon Von Neumann, Marvin Minsky, Frank Rosenblatt,
y muchos otros.

Una primera clasificación de los modelos de ANNs podría ser, atendiendo a su similitud con la
realidad biológica:




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



          Los modelos de tipo biológico. Este comprende las redes que tratan de simular los
          sistemas neuronales biológicos así como las funciones auditivas o algunas funciones
          básicas de la visión.

          El modelo dirigido a aplicación. Estos modelos no tienen porque guardar similitud con los
          sistemas biológicos. Sus arquitecturas están fuertemente ligadas a las necesidades de las
          aplicaciones para las que son diseñados.

El objetivo principal de de las redes neuronales de tipo biológico es desarrollar un elemento
sintético para verificar las hipótesis que conciernen a los sistemas biológicos.

Las neuronas y las conexiones entre ellas (sinápsis) constituyen la clave para el procesado de la
información. Observe la figura:




Hay tres partes en una neurona:
       El cuerpo de la neurona,
       Ramas de extensión llamadas dendrítas para recibir las entradas, y
       Un axón que lleva la salida de la neurona a las desdirías de otras neuronas.

La forma que dos neuronas interactuan no está totalmente conocida, dependiendo además de cada
neurona. En general, una neurona envía su salida a otras por su axón. El axón lleva la
información por medio de diferencias de potencial, u ondas de corriente, que depende del
potencial de la neurona. Este proceso es a menudo modelado como una regla de propagación
representada por la función de red u(.).



Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



La neurona recoge las señales por su sinápsis sumando todas las influencias excitadoras e
inhibidoras. Si las influencias excitadoras positivas dominan, entonces la neurona da una señal
positiva y manda este mensaje a otras neuronas por sus sinápsis de salida. En este sentido la
neurona puede ser modelada como una simple función escalón f(.). Como se muestra en la
siguiente figura, la neurona se activa si la fuerza combinada de la señal de entrada es superior a
un cierto nivel, en el caso general el valor de activación de la neurona viene dado por una función
de activación f(.)

Es generalmente admitido que las sinápsis pueden ser modificadas por la experiencia, es decir,
por aprendizaje. Para su análisis, es conveniente considerar una sola neurona con sus sinápsis.
Esta unidad es llamada perceptron, y constituye la base de las redes de neuronas.

                                                              Las ANNs dirigidas a aplicación
                                                              están en general poco ligadas a las
                                                              redes neuronales biológicas. Ya que
                                                              el conocimiento que se posee sobre el
                                                              sistema nervioso en general no es
                                                              completo, se han de definir otras
                                                              funcionalidades y estructuras de
                                                              conexión distintas a las vistas desde
                                                              la    perspectiva     biológica.    Las
                                                              características principales de este tipo
                                                              de ANNs son los siguientes:

                                                                 1. Auto      Organización       y
          Adaptatividad: utilizan algoritmos de aprendizaje adaptativo y auto organización, por lo
          que ofrecen posibilidades de procesado robusto y adaptativo.

     2. Procesado No Lineal: aumenta la capacidad de la red de aproximar, clasificar y su
        inmunidad frente al ruido.

     3. Procesado paralelo: normalmente se usa un gran número de células de procesado por el
        alto nivel de interconectividad.

Estas características juegan un importante papel en las ANNs aplicadas al procesado de señal e
imagen. Una red para una determinada aplicación presenta una arquitectura muy concreta, que
comprende elementos de procesado adaptativo masivo paralelo combinadas con estructuras de
interconexión de red jerárquica.

Los componentes más importantes de una red neuronal artificial son:

     •    Unidades de procesamiento (la neurona artificial)
     •    Estado de activación de cada neurona.
     •    Patrón de conectividad entre neuronas.


Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



     •    Regla de propagación.
     •    Función de transferencia.
     •    Regla de activación.
     •    Regla de aprendizaje.

De acuerdo a las características de cada nodo de la red (microestructura), se presenta la forma de
organización de la red neuronal artificial (mesoestructura) en función de:



                     Número de niveles                                    Número de
                                                                          neuronas por nivel



                                                                             Grada de
                     Tipo de conexiones                                      conectividad
             (Hacia atrás, hacia delante, lateral)


                                Características de un grupo de neuronas

     •    Número de niveles o capas: La distribución de neuronas dentro de la red se realiza
          formando niveles o capas de un número determinado de neuronas cada una. A partir de su
          situación dentro de la red, se pueden distinguir tres tipos de capas: 1) de entrada, es la
          capa que recibe directamente la información proveniente de las fuentes externa de la red;
          2) ocultas, son internas a la red y no tiene contacto directo con el entorno exterior; y 3) de
          salida, transfieren información de la red hacia el exterior.

     •    Número de neuronas por nivel:

     •    Patrones de conexión: La conectividad entre los nodos de una red neuronal artificial está
          relacionada con la forma en que las salidas de las neuronas están canalizadas para
          convertirse en entradas de otras neuronas,

     •    Flujo de información:

Debido a su constitución y a sus fundamentos, las redes neuronales artificiales presentan un gran
número de características semejantes a las del cerebro. Esto hace que ofrezcan numerosas
ventajas y que este tipo de tecnología se este aplicando en diferentes áreas. Estas ventajas
incluyen:

Aprendizaje adaptativo: capacidad de aprender a realizar tareas basadas en un entrenamiento o
una experiencia inicial.



Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Autoorganización: una red neuronal puede crear su propia organización o representación de la
información que recibe mediante una etapa de aprendizaje.

Tolerancia a fallos: la destrucción parcial de una red conducen a una degradación de su
estructura; sin embargo, algunas capacidades de la red se pueden retener, incluso sufriendo un
gran daño.

Operación en tiempo real: los computadores neuronales pueden ser realizados en paralelo, y se
diseñan o fabrican maquinas con hardware especial para obtener esta capacidad.

Fácil inserción dentro de la tecnología existente: se pueden obtener chip especializados para
redes neuronales que mejoran su capacidad en ciertas tareas. Esto facilitará la integración
modular en los sistemas existentes.

Las redes neuronales son una tecnología computacional emergente que puede utilizarse en un
gran número y variedad de aplicaciones, tanto comerciales como militares. Se pueden desarrollar
redes neuronales en un periodo de tiempo razonable y puede realizar tareas concretas mejor que
otras tecnologías convencionales.

     •    El perceptron está constituido por las N entradas provenientes de fuentes externas, las N
          conexiones o pesos w = (w1,w2,…,wN) y la salida . En realidad un perceptron es la red
          neuronal más simple posible: aquella donde no existen capas ocultas. Para cada
          configuración de los estados de las neuronas de entrada (estímulo) la respuesta del
          perceptron obedece la siguiente dinámica: sumar los potenciales sinápticos wij (ver
          figura 2). Esta suma ponderada, también llamada campo, se escribe:




          Si hi > qi, la respuesta de la neurona es = +1; si no, es inactiva y si = -1. Si tanto las
          entradas como las salidas son binarias; se dice entonces que el perceptron realiza una
          función booleana de sus entradas. Pero otras posibilidades han sido estudiadas (entradas
          reales, salidas sigmoideas en función del campo, etc.), en vista de las aplicaciones. Con
          una arquitectura tan simple como la del perceptron no se pueden realizar más que una
          clase de funciones booleanas muy simples, llamadas linealmente separables. Son las
          funciones en las cuales los estados de entrada con salida positiva pueden ser separados de
          aquellos a salida negativa por un hiperplano. Un hiperplano es el conjunto de puntos en el
          espacio de estados de entrada, que satisfacen una ecuación lineal. En dos dimensiones, es
          una recta, en tres dimensiones un plano, etc. La figura 3 presenta dos ejemplos de
          funciones booleanas con 2 entradas (N=2). El ejemplo 3b no es realizable por un
          perceptron. Si se quieren realizar funciones más complejas con redes de neuronas, es
          necesario intercalar neuronas ocultas entre las entradas y la salida.



Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




                                      Red neuronal con una capa oculta y H unidades

          Una red multicapas se define como un conjunto de perceptrones, ligados entre si por
          sinápsis y dispuestos en capas siguiendo diversas arquitecturas. Una de las arquitecturas
          más comúnmente usada es llamada feedforward: se tienen conexiones de la entrada a las
          capas ocultas y de aquí a la salida. En la figura 4 se muestra una RN feedforward con N
          entradas x=(x1,x 2,…,x N) y una capa oculta de H unidades ocultas. El perceptron de
          salida es denotado por z.

          El funcionamiento de una RN es gobernado por reglas de propagación de actividades y de
          actualización de los estados. Teóricamente, una RN puede ser vista como un modelo que
          realiza una función de un espacio de entrada hacia un espacio de salida. El objetivo de
          esta modelización consiste en que la asociación sea lo más acorde posible con el medio
          ambiente del fenómeno estudiado. Observe en la figura 4 que el perceptron de salida z
          tiene ahora como entradas las salidas de las unidades ocultas s: es justamente aquí donde
          se realiza el mapeo del espacio de entrada hacia estados ocultos llamados
          representaciones internas, que son una codificación de la información, y de éstas a la
          salida.


6.2. REDES NEURONALES Y COMPUTADORAS DIGITALES

Para entender el potencial real de la computación neuronal, será necesario hacer una clara
distinción entre los sistemas de computación neuronal y digitales.

Los sistemas neurológicos no aplican principios de circuitos lógicos o digitales: un sistema de
computación digital debe ser asíncrono o asíncrono; mientras que las neuronas non pueden ser
circuitos de umbral lógico, porque hay miles de entradas variables en la mayoría de las neuronas
y el umbral es variable con el tiempo, siendo afectado por la estimulación, atenuación, etc. Los
procesos colectivos que son importantes en computación neuronal no pueden implementarse en
computación digital. Por lo que el cerebro debe ser un computador analógico.



Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Ni las neuronas ni las sinapsis son elementos de memoria biestables.

En la computación neuronal no hay instrucción de máquina ni códigos de control.

                                 Los circuitos del cerebro no implementan computación recursiva, y por
                                 tanto no son algorítmicos.

                                 Incluso en el nivel más alto, la naturaleza del proceso de información es
                                 diferente en el cerebro y en los computadores digitales.

                                 Con el fin de llegar al entendimiento global de ANNs, adoptamos la
                                 siguiente perspectiva, llamada top-down que empieza por la aplicación se
                                 pasa al algoritmo y de aquí a la arquitectura:

                        Esta aproximación a las ANNs está motivada por la aplicación, basada en
                        la teoría y orientada hacia la implementación. Las principales aplicaciones
                        son para el procesado de señal y el reconocimiento de patrones. La
                        primera etapa algorítmica representa una combinación de la teoría
                        matemática y la fundamentación heurística por los modelos neuronales. El
fin último es la construcción de neurocomputadores digitales, con la ayuda de las tecnologías y el
procesado adaptativo, digital y paralelo

Las redes neuronales tratan de resolver de forma eficiente problemas que pueden encuadrarse
dentro de tres amplios grupos: optimización, reconocimiento y generalización. Estos tres tipos
engloban un elevado número de situaciones, lo que hace que el campo de aplicación de las redes
neuronales en la gestión empresarial sea muy amplio.

En los problemas de optimización, se trata de determinar una solución que sea óptima.
Generalmente se aplican redes neuronales realimentadas, como el modelo de Hopfield citado. En
la gestión empresarial, son decisiones de optimización encontrar los niveles de tesorería, de
existencias, de producción, construcción de carteras óptimas, etc.

En los problemas de reconocimiento, se entrena una red neuronal con inputs como sonidos,
números, letras y se procede a la fase de test presentando esos mismos patrones con ruido. Este es
uno de los campos más fructíferos en el desarrollo de redes neuronales y casi todos los modelos:
perceptrón, redes de Hopfield, mapas de Kohonen, etc, han sido aplicados con mayor o menor
éxito.

En los problemas de generalización, la red neuronal se entrena con unos inputs y el test se realiza
con otros casos diferentes. Problemas típicos de generalización son los de clasificación y
predicción.

Las redes neuronales son modelos matemáticos especializados que pueden aplicarse en dominios
muy concretos. Las redes neuronales están mostrando su utilidad en muchos problemas reales.


Universidad Nacional de Ingeniería.                                     Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Los estudios empíricos muestran la eficiencia de las redes neuronales con datos basados en lógica
difusa, patrones o rasgos ocultos para la mayoría de las técnicas incluida la capacidad humana,
datos que exhiben no linealidad e información en la que se ha detectado caos.

La elección entre los diferentes sistemas de ayuda a la toma de decisiones depende del tipo de
tarea a realizar. También el nivel al que se toman las decisiones afecta la elección del tipo de
sistema más apropiado. Simón (1960) clasificó las decisiones en estructuradas y no estructuradas:
las decisiones estructuradas son repetitivas, rutinarias y existe un procedimiento definido para
abordarlas, por el contrario, en las decisiones no estructuradas el decisor debe proporcionar
juicios y aportar su propia evaluación.

Más recientemente Gorry y Scott-Morton (1971) han propuesto un esquema que relaciona el tipo
de decisión (estructurada, semiestructurada y no estructurada) y el nivel organizacional (control
operativo, de gestión y estratégico) con la herramienta a utilizar. Lógicamente en el nivel
operativo dominan las decisiones estructuradas, en el nivel de gestión las semiestructuradas y en
el estratégico las no estructuradas, formando una diagonal. En la figura siguiente hemos
actualizado este esquema incorporando las últimas tecnologías de la información, e incluso
anticipando lo que puede ser un futuro próximo.

6.3. REDES NEURONALES E IA
Las redes neuronales se encuentran dentro del campo de la IA, tal y como se muestra en el
esquema siguiente:
                             Inteligencia Artificial



                                       Redes de Autoproceso



                Procesamiento Numérico                   Procesamiento Simbólico



  Sistemas Asociativos                Sistemas Distribuidos




                     Redes Neuronales         Redes Subsimbólicas




Universidad Nacional de Ingeniería.                              Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



La Inteligencia Artificial clásica (IA) ha generado una cierta decepción al tratar de explicar los
procesos cognoscitivos debido a que la representación usando reglas se aleja mucho de cualquier
inspiración biológica por una parte y por otra conduce a la creación de sistemas que son
demasiado rígidos y al mismo tiempo extremadamente frágiles.

El reconocimiento, el aprendizaje y la memoria son mecanismos cognoscitivos que no pueden ser
explicados por medio del simbolismo de la IA, sino más bien en función de unidades simples
pero altamente interconectadas de las cuales emerge un comportamiento complejo, paralelo y
auto-organizado, sin necesidad de tener reglas explícitas de decisión ni de un procesador maestro
o motor de inferencia.

La secuenciación y la rigidez de reglas son dos aspectos que han sido duramente atacados en las
técnicas de IA. La inmensa ventaja de los métodos conexionistas comparado con los métodos
tradicionales de IA es la siguiente: no es necesario conocer ni una expresión ni una construcción
de la función a modelar, tan solo se requiere disponer de un conjunto de aprendizaje satisfactorio
para que la red pueda aproximar esta función aplicando una regla de aprendizaje. Así, muchos
fenómenos cognoscitivos han logrado ser modelados a través de sistemas conexionistas.

Por otra parte, en lo que concierne a la aplicación tecnológica, las redes de neuronas son
actualmente ampliamente utilizadas en aplicaciones tan variadas como la previsión, la
clasificación, el diagnóstico automático, el procesamiento de señales, el reconocimiento de
formas, la compresión de datos, la optimización combinatoria, la robótica y la búsqueda de
documentos, entre otras.

Existen diferencias relevantes entre redes neuronales con respecto a lo que se entiende como
inteligencia artificial, las cuales se destacan a continuación:

Representación del conocimiento: En IA se utilizan métodos de representación del
conocimiento (reglas de producción, marcos, reglas semánticas, etc ) generalmente localizados:
átomos de conocimiento, concepto asociado a una regla, etc. Esto hace que la gestión de las bases
de conocimiento sea problemática: añadir una regla o suprimir un dato puede tener consecuencias
imprevisibles sobre los demás datos.

Actualmente se piensa que los conocimientos se presentan de forma distribuida en el cerebro. De
esto se puede deducir algunas consecuencias:

     a) La red puede crear su propia organización de la información.
     b) Como se dispone de un número finito de neuronas, varios hechos se memorizan por la
        activación de clases de neuronas no disjuntas.
     c) Mejor tolerancia a fallos, la perdida de neuronas no implica que se deje de recordar, por
        tanto, debe existir información redundante.




Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Mecanismos de inferencia: Los mecanismos de inferencia (razonamiento) utilizados en la IA
estan basados en la lógica (lenguaje Prolog, por ejemplo). Sin embargo, el cerebro humano no
realiza un razonamiento necesariamente lógico; utiliza la imprecisión y la contradicción parcial.
El modo de funcionamiento del cerebro es la evolución dinámica de las actividades neuronales.

Aprendizaje: El aprendizaje en IA consiste simplemente en añadir nuevos átomos de
conocimientos (nuevos hechos, reglas, etc.). En el cerebro, el aprendizaje de un hecho parecido a
otro del que ya tenemos conocimiento se hace por refuerzo de las conexiones entre neuronas y
esta actividad conjunta es necesario para memorizarlo. Se ha demostrado que si un sujeto no esta
expuesto a ciertos estímulos al comienzo de su vida, no podrá detectar más de estos estímulos,
debido a la degeneración de las conexiones necesarias.

Paralelismo: Es una característica innata de los sistemas conexionistas. Aunque un ordenador
realiza cálculos mucho más rápido que un ser humano, no es capaz de desarrollar procesos que
éste realiza de forma sencilla (comprensión de una frase, analizar una imagen, reconocer un
rostro, etc). Esto es debido a que el cerebro humano, para hacerlo, pone en marcha
simultáneamente millones de neuronas.




Modo de trabajo con redes neuronales.




Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Originalmente la red neuronal no dispone de ningún tipo de conocimiento útil almacenado. Para
que ejecute una tarea es preciso entrenar o enseñar a la red neuronal. El entrenamiento se realiza
mediante patrones-ejemplo. Existen dos tipos de aprendizaje: supervisado y no supervisado. Si la
red utiliza un tipo de aprendizaje supervisado debemos proporcionarle parejas de patrones
entrada-salida y la red neuronal aprende a asociarlos. En terminología estadística equivale a los
modelos en los que hay vectores de variables independientes y dependientes. Si el entrenamiento
es no supervisado, únicamente debemos suministrar a la red los datos de entrada para que
extraiga los rasgos característicos esenciales. Estas redes neuronales no supervisadas están
relacionadas con modelos estadísticos como el análisis de conglomerados o las escalas
multidimensionales.

Durante la fase de aprendizaje en la mayor parte de los modelos se produce una variación de los
pesos sinápticos, es decir, de la intensidad de interacción entre las neuronas, lo que en
terminología estadística equivale a calcular los coeficientes de las funciones de ajuste.

INCONVENIENTES

Los sistemas neuronales presentan ciertos inconvenientes. Uno importante es que habitualmente
realizan un complejo procesamiento que supone millones de operaciones, por lo que no es posible
seguir paso a paso el razonamiento que les ha llevado a extraer sus conclusiones. Sin embargo, en
redes pequeñas, mediante simulación o por el estudio de los pesos sinápticos sí es posible saber,
al menos, qué variables de las introducidas han sido relevantes para tomar la decisión. Falta
todavía mucho por estudiar en el modo de operación de las redes neuronales.

Otro problema es que al ser una herramienta novedosa y en pleno desarrollo, no se trata de una
disciplina con un cuerpo formal, coherente y establecido, por lo que el investigador se encuentra
con muchos problemas a los que todavía no se ha encontrado solución.


6.4. REDES NEURONALES Y MECANISMOS DE APRENDIZAJE (SUPERVISADO –

NO SUPERVISADO)

Los cambios que se producen durante el proceso de aprendizaje se reducen a la destrucción,
modificación y creación de conexiones entre las neuronas. En los modelos de redes neuronales
artificiales, la creación de una nueva conexión implica que el peso de la misma pasa a tener un
valor distinto de cero. De la misma forma, una conexión se destruye cuando su peso pasa a ser
cero.

Un aspecto importante respecto al aprendizaje en las redes neuronales es el conocer como se
modifican los valores de los pesos; es decir, cuales son los criterios que se sigue para cambiar el
valor asignado a las conexiones cuando se pretende que la red aprende una nueva información.
Estos criterios determinan lo que se conoce como ña regla de aprendizaje de la red.



Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Se suele considerar dos tipos de reglas: las que responden a los que habitualmente se conoce
como aprendizaje supervisado, y las correspondientes a un aprendizaje no supervisado. La
diferencia entre ambos tipos estriba en la existencia o no de un agente externo (supervisor) que
controle el proceso de aprendizaje de la red.

a) Redes con aprendizaje supervisado
El aprendizaje supervisado se caracteriza porque el proceso de aprendizaje se realiza mediante un
entrenamiento controlado por un agente externo (supervisor, maestro) que determina la respuesta
que debería generar la red a partir de una entrada determinada. El supervisor comprueba la salida
de la red y en el caso de que esta no coincida con la deseada, se procederá a modificar los pesos
de las conexiones, con el fin de conseguir que la salida obtenida se aproxime a la deseada.

En este tipo de aprendizaje se suele considerar, a su vez, las siguiente formas de llevar a cabo
aprendizajes supervisados:

Aprendizaje por corrección de errores: Consiste en ajustar los pesos de las conexiones de la
red en función de la diferencia entre los valores deseados y los obtenidos en la salida de la red; es
decir en función del error cometido en la salida. La red neuronal Perceptron utiliza esta forma de
aprendizaje.

Aprendizaje por refuerzo: Se trata de un aprendizaje supervisado más lento que el anterior, que
se basa en la idea de no disponer de un ejemplo completo del comportamiento deseado; es decir,
de no indicar durante el entrenamiento exactamente la salida que se desea que proporcione la red
ante una determinada entrada. La función del supervisor se reduce a indicar mediante una señal
de refuerzo si la salida obtenida en la red se ajusta a la deseada (éxito = + 1 o fracaso = - 1), y en
función de ello se ajustan los pesos basándose en un mecanismo de probabilidades. Una red que
utiliza este tipo de aprendizaje es la conocida como Linear Reward Penalty.

Aprendizaje estocástico: Consisten básicamente en realizar cambios aleatorios en los valores de
los pesos de las conexiones de la red y evaluar su efecto a partir del objetivo deseado y de
distribuciones de probabilidades. Una red que utiliza este tipo de aprendizaje es la conocida como
Boltzmann Machine.


b) Aprendizajes no supervisados

Las redes con aprendizaje no supervisado (autosupervisado) no requieren influencia externa para
ajustar los pesos de las conexiones entre sus neuronas. La red no recibe ninguna información por
parte del entorno que le indique si la salida generada en respuesta a una determinada entrada es o
no correcta; por ello, suele decirse que estas redes son capaces de autoorganizarse.
Se consideran dos tipos de algoritmos de aprendizaje no supervisado:




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.



Aprendizaje hebbiano: El aprendizaje hebbiano consiste básicamente en el ajuste de los pesos
de las conexiones de acuerdo con la correlación (multiplicación en los casos de valores binarios
+1 y –1 ) de los valores de activación (salidas) de dos neuronas conectadas.

Si las dos unidades son activas (positivas), se produce un reforzamiento de la conexión, cuando
una es activa y la otra pasiva (negativa), se produce un debilitamiento de la conexión. Se trata de
una regla de aprendizaje no supervisado, pues la motivación de los pesos se realiza en función de
los estados (salidas) de las neuronas obtenidos tras la presentación de cierto estímulo
(información de entrada a la red ), sin tener en cuenta si se desea obtener o no esos estados de
activación.

Este tipo de aprendizaje fue empleado por Hopfield en la conocida red que lleva su nombre: “Red
Hopfield”.

Aprendizaje competitivo y cooperativo: En las redes con aprendizaje competitivo ( y
cooperativo), suele decirse que las neuronas compiten (y cooperan ) unas con otras con el fin de
llevar a cabo una tarea dada. Con este tipo de aprendizaje, se pretende que cuando se presente a la
red cierta información de entrada, solo una de las neuronas de salida de la red, o una por cierto
grupo de neuronas compiten por activarse, quedando finalmente una, o una por grupo, como
neurona vencedora, siendo anuladas el resto, que son forzadas a sus valores de respuesta mínimo.

El objetivo de este aprendizaje es categorizar los datos que se introducen a la red. De esta forma,
las informaciones similares son clasificadas formando parte de la misma categoría, y por tanto
deben activar la misma neurona de salida. Las clases o categorías deben ser creadas por la propia
red, puesto que se trata de un aprendizaje no supervisado, a través de las correlaciones entre los
datos de entrada. Este tipo de aprendizaje se ha aplicado a redes feedforward de dos capas.




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

6.5. REDES NEURONALES Y LÓGICA BORROSA
La lógica borrosa o multivaluada permite asignar diferentes grados de certeza a los hechos. En
lógica borrosa se trabaja con conjuntos, que se definen por sus funciones de pertenencia, que se
denotan como µ c (x) e indican el grado de pertenencia (entre 0 y 1) del elemento con valor x al
conjunto C.

Las operaciones entre conjuntos se plantean en forma de operaciones borrosas entre sus funciones
de pertenencia. Las más utilizadas son la Unión ( ∪ ), Intercepción ( ∩ ) y complemento ( - ) para
los conjuntos, y las correspondientes suma lógica borrosa ( ∨ ), producto lógico borroso ( ∧ ) y
negación borrosa para las funciones de pertenencia.

Sean dos conjuntos borrosos A y B, con funciones de pertenencia µ A y µ B tendríamos:

Unión: µ A ∪ B = µ A (x) ∨ µ B (x) = máx. (µ A (x), µ B (x))

Intercepción: µ A ∩ B = µ A (x) ∧ µ B (x) = mín. (µ A (x), µ B (x))

Complemento: µ -A (x) = 1 - µ A (x)


Neuronas borrosas y aprendizaje borroso

Una neurona borrosa puede modelarse como una unidad de procesamiento que recibe una señales
borrosas de entrada a través de una sinapsis borrosas, siendo la entrada el producto borroso de la
salida de la neurona anterior por el peso borroso de la conexión. La entrada neta de la neurona no
se obtiene como la suma aritmética de las entradas, sino como la suma borrosa de las mismas.

Una posible utilidad en este tipo de redes, es servir de memoria asociativa para almacenar y
evaluar las reglas de control en un sistema borroso. El mecanismo de aprendizaje también utiliza
operadores borrosos para la obtención de los pesos, siendo una adaptación de la regla de hebb,
conocida como aprendizaje hebbiano borroso.

Implementación neuronal de mapas cognitivos borrosos.




Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


SÉPTIMA UNIDAD:
ALGORITMOS GENÉTICOS
7.1. Introducción

7.2. Algoritmos Genéticos
       7.2.1 Representación de Hipótesis
       7.2.2 Operadores Genéticos
       7.2.3 Función de evaluación y selección

7.3. Búsqueda en el espacio de Hipótesis

7.4. Programación Genética
        7.4.1 Representación de Programas

7.5. Modelos de evolución y aprendizaje
       7.5.1 Evolución Lamarckiana
       7.5.2 El efecto Baldwin

7.6. Paralelismo en Algoritmos Genéticos


7.1. INTRODUCCIÓN
Los algoritmos genéticos (AG) proporcionan un método de aprendizaje basado en la analogía con
la evolución de las especies. Los AG generan un conjunto de hipótesis mediante la mutación y
recombinación de parte del conjunto de hipótesis conocido. En cada paso el conjunto de hipótesis
conocido como “población actual” se renueva remplazando una proporción de esta población por
los sucesores de las hipótesis más “adecuadas” (mediante el uso de una función de evaluación).

La popularidad de los AG se debe en parte a que la evolución es un método robusto y bien
probado dentro de los sistemas biológicos naturales. Además son fácilmente paralelizables, lo
que supone una ventaja gracias al abaratamiento actual de los costes en hardware. Por otra parte,
los AG pueden realizar búsquedas en espacios de hipótesis que contienen complejas interacciones
entre las distintas partes, donde el impacto de cada parte sobre la función de evaluación es difícil
de especificar.

Aunque no se garantice encontrar la solución óptima, los AG generalmente encuentran soluciones
con un alto grado de acierto.

Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


7.2. ALGORITMOS GENÉTICOS
El objetivo de los AG es buscar dentro de un espacio de hipótesis candidatas la mejor de ellas. En
los AG la “mejor hipótesis” es aquella que optimiza a una métrica predefinida para el problema
dado, es decir, la que más se aproxima a dicho valor numérico una vez evaluada por la función de
evaluación.

El comportamiento básico de un algoritmo genético es el siguiente: de forma iterativa va
actualizando la población de hipótesis. En cada iteración, todos los miembros de la población son
procesados por la función de evaluación, tras lo cual una nueva población es generada. La nueva
generación estará compuesta por:

- Las mejores hipótesis de la población actual (seleccionadas probabilísticamente)
- Y el resto de hipótesis necesarias para mantener el número, que se consiguen mediante el cruce
de individuos. A partir de dos hipótesis padre (seleccionadas probabilísticamente a partir de la
población actual) se generan dos hipótesis hijas recombinando sus partes siguiendo algún criterio
establecido.

Una vez llegados a este punto (con una nueva población con el mismo número de individuos), a
un determinado porcentaje de la población se le aplica un operador de mutación.

7.2.1. Representación de Hipótesis
Las hipótesis en los AG se suelen representar mediante cadenas de bits, de forma que puedan ser
fácilmente manipulables por los operadores genéticos de mutación y cruce.
Primero veamos como usar una cadena de bits para representar los posibles valores de un
atributo. Si un atributo puede tomar tres valores posibles (A, B y C), una manera de representarlo
es mediante tres bits de forma que:

Atributo         (100)        =          puede          tomar        el          valor          A
Atributo         (010)         =         puede          tomar        el          valor          B
Atributo         (001)         =         puede          tomar        el          valor          C
Atributo    (110)     =    puede      tomar     el    valor    A    ó     B      (A      or     B)
Atributo (111) = puede tomar el valor A, B ó C (A or B or C). No importa el valor del atributo.

De esta forma podemos representar fácilmente conjunciones de varios atributos para expresar
restricciones (precondiciones) mediante la concatenación de dichas cadenas de bits.




Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Ejemplo:
“Tiempo”       puede         ser        Despejado,         Nublado           o        Lluvioso.
“Viento”           puede            ser             Fuerte             o             Moderado.
(Tiempo = Nublado ó Lluvioso) y (Viento = Fuerte) se representaría con la siguiente cadena: 011
10.

Las postcondiciones de las reglas se pueden representar de la misma forma. Por ello una regla se
puede describir como la concatenación de la precondición y la postcondición.

Ejemplo:
“Jugar al Tenis” puede ser Cierto o Falso.

Si Viento = Fuerte entonces “Jugar al Tenis” = Cierto se representaría mediante 111 10 10.
Donde los tres primeros bits a uno indican que el atributo “Tiempo” no afecta a nuestra regla.

Cabe destacar que una regla del tipo 111 10 11 no tiene demasiado sentido, puesto que no impone
restricciones en la postcondición. Para solucionar esto, una alternativa es codificar la
postcondición con un único BIT (1 = Cierto y 0 = Falso).

Otra opción es condicionar los operadores genéticos para que no produzcan este tipo de cadenas o
conseguir que estas hipótesis tengan una adecuación muy baja (según la función de evaluación)
para que no logren pasar a la próxima generación de hipótesis.

7.2.2. Operadores Genéticos
Los dos operadores más comunes son la “mutación” y el “cruce”.
El operador de cruce genera dos nuevos hijos a partir de dos cadenas padre recombinando sus
bits. Para elegir con que bits contribuye cada padre hacemos uso de una “máscara de cruce”.
Veamos un par de ejemplos:


Cruce Simple:
         Cadenas padre                Mascara de Cruce           Hijos

              11101001000                                        11101010101
                                      11111000000
              00001010101                                        00001001000




Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Cruce Doble:
        Cadenas padre                 Mascara de Cruce             Hijos

              11101001000                                          11001011000
                                      00111110000
              00001010101                                          00101000101

El operador mutación produce un nuevo hijo de un solo padre cambiando el valor de uno de sus
bits elegido al azar. Generalmente se aplica después de hacer uso del operador cruce.

Otros operadores genéticos son “AddAlternative” y “DropCondition”. El primero de ellos cambia
un BIT de un atributo de 0 a 1, es decir, permite que el atributo pueda tomar el valor representado
por dicho BIT. El segundo pone todos los bits de un atributo a 1, con lo que elimina la restricción
impuesta por el atributo.

Una posibilidad interesante que surge con la aplicación de estos operadores, es la de incluir
nuevos bits en las cadenas que representan las hipótesis y que indiquen que operadores pueden
ser aplicados a dicha hipótesis (añadiendo un BIT por operador). Como estos bits van a sufrir
modificaciones a causa de los operadores aplicados a la cadena, estaremos alterando
dinámicamente los métodos de búsqueda del algoritmo genético.


7.2.3. Función de evaluación y selección
La función de evaluación define el criterio para ordenar las hipótesis que potencialmente pueden
pasar a formar parte de la siguiente generación.

La selección de las hipótesis que formarán parte de la siguiente generación o que serán usadas
para aplicarles los operadores genéticos, puede realizarse de varias formas. Las más usuales son:

- Selección proporcional al ajuste dado por la función de evaluación. En este método la
probabilidad de que una hipótesis sea seleccionada viene determinada por:




Universidad Nacional de Ingeniería.                           Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.




                            Figura 1 - Probabilidad de que la hipótesis hi sea elegida.

- Selección mediante torneo. Se eligen dos hipótesis al azar. La más “adecuada” (según la función
de evaluación) tiene una probabilidad p (prefijada de antemano) de ser elegida, mientras que la
otra tiene una probabilidad (1 – p).

- Selección por rango. Las hipótesis de la población actual se ordenan de acuerdo a su
adecuación. La probabilidad de que una hipótesis sea seleccionada será proporcional a su
posición en dicha lista ordenada, en lugar de usar el valor devuelto por la función de evaluación.

7.3. BÚSQUEDA EN EL ESPACIO DE HIPÓTESIS
Una de las dificultades que nos encontramos en algunos algoritmos genéticos es el problema del
“crowding” (muchedumbre). Se trata de un fenómeno por el cual las mejores hipótesis se
reproducen rápidamente de manera que las nuevas generaciones una gran proporción se debe a
éstas hipótesis y a otras muy similares (descendientes), reduciendo así la diversidad de la
población, y por lo tanto, las posibilidades de la evolución. Para reducir los efectos del
“crowding” se usan varias estrategias. Una solución consiste en cambiar el método de selección
habitual (selección proporcional al ajuste) por alguno de los otros vistos con anterioridad
(selección mediante torneo o selección por rango). Otra opción consiste en usar otra función de
evaluación, “ajuste compartido”, de manera que el valor devuelto por esta función se devalúa
ante la presencia de otras hipótesis similares en la población. Y una tercera alternativa es
restringir el tipo de hipótesis a los que se les permite la recombinación.


7.4. PROGRAMACIÓN GENÉTICA
La programación genética (PG) es una forma de computación evolutiva en la que los individuos
de la población son programas, en lugar de cadenas de bits.




Universidad Nacional de Ingeniería.                                   Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

7.4.1. Representación de Programas
Los programas usados en la programación genética suelen representarse mediante sus árboles
sintácticos. En esta notación, cada llamada a una función se representa por un nodo en el árbol, y
los argumentos de la función corresponden con los nodos hijos de éste. Para aplicar programación
genética a un dominio particular, es necesario que el usuario defina de antemano las primitivas
que se van a emplear así como el tipo de los nodos hoja. Por lo tanto, la programación genética
realiza una búsqueda evolutiva en un espacio de programas descritos mediante sus árboles
sintácticos.

De igual forma que los algoritmos genéticos, la programación genética itera sobre una población
de individuos produciendo una nueva generación mediante el empleo de la selección, el cruce y
la mutación. La adecuación de un programa viene determinada por los resultados de su ejecución
sobre unos datos de entrenamiento (función de evaluación).

Así, por ejemplo, el operador de cruce se implementa mediante el intercambio de subárboles
entre programas padres.

En la mayoría de los casos, el rendimiento de la programación genética depende básicamente de
la representación elegida y de la elección de la función de evaluación.




                         Figura 2 - Representación de un programa mediante su árbol.




Universidad Nacional de Ingeniería.                               Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.


7.5. MODELOS DE EVOLUCIÓN Y APRENDIZAJE

En muchos sistemas naturales, los individuos aprenden a adaptarse durante sus vidas. Al mismo
tiempo distintos procesos biológicos y sociales permiten a la especie adaptarse a lo largo de las
distintas generaciones, por lo que surge una interesante pregunta: ¿Cuál es la relación entre el
aprendizaje individual de un organismo durante su vida y el aprendizaje colectivo de la especie?

A esta cuestión intentan responder la teoría de la evolución Lamarckiana y la teoría del efecto
Baldwin.

7.5.1. Evolución Lamarckiana
Lamarck (científico de finales del siglo XIX) propuso que la experiencia de un individuo afecta
directamente a su descendencia, por lo que el conocimiento sería hereditario y las siguientes
generaciones no necesitarían adquirirlo. Se trata de una conjetura que mejora la eficiencia de los
algoritmos genéticos y la programación genética, en las cuales se ignoraba la experiencia
adquirida por el individuo durante su vida.

Aunque biológicamente esta teoría no es correcta como modelo de evolución, sin embargo si es
perfectamente aplicable al caso de la computación genética, donde recientes estudios han
demostrado su capacidad para mejorar la efectividad.

7.5.2. El efecto Baldwin
Se trata de otro mecanismo que sugiere como el aprendizaje de un individuo puede alterar el
curso de la evolución de la especie. Se basa en las siguientes afirmaciones:

- Si una especie evoluciona en un entorno cambiante, entonces los individuos capaces de
aprender durante su vida se verán favorecidos. De hecho, la habilidad para aprender permite a los
individuos maximizar su capacidad de adaptación en el entorno.

- Los individuos con capacidad de aprendizaje dependerán en menor medida de su código
genético. Como consecuencia de lo anterior las nuevas generaciones poseerán una diversidad
genética mayor, lo que permitirá una evolución más rápida. En resumen, la capacidad de
aprendizaje de algunos individuos provoca indirectamente una aceleración en la evolución de
toda la población.




Universidad Nacional de Ingeniería.                          Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

7.6. PARALELISMO EN ALGORITMOS GENÉTICOS

Los algoritmos genéticos son fácilmente paralelizables. A continuación se muestran las
posibilidades de paralelismo con AG’s:

Grano Grueso: Se subdivide la población en una serie de grupos distintos (siguiendo algún
criterio), llamados “demes”. Cada uno de estos grupos se asigna a un nodo de computación
distinto, y a continuación se aplica un AG en cada nodo. Los operadores de cruce se aplicaran
generalmente entre individuos del mismo grupo, y en menor porcentaje, entre individuos de
distintos grupos. En este entorno surge un nuevo concepto, denominado migración, que se
produce cuando un individuo de un grupo se copia o se traslada a otro (s). Un beneficio del
modelo de grano grueso es que se reduce el efecto “crowding” que aparecía en los AG no
paralelizados.

Grano Fino: Se asigna un procesador a cada individuo de la población. La recombinación se
efectúa entre individuos vecinos en la red de computación. Algunos ejemplos de redes de
procesadores (especifican las reglas de vecindad) son la malla, el toroide, etc.

EJERCICIO
Diseñar un algoritmo genético que aprenda a clasificar conjunciones de reglas ara el problema
“Jugar al Tenis” descrito en el capítulo 3 [nota]. Describe detalladamente la codificación de la
cadena de bits para las hipótesis y el conjunto de operadores de cruce.
La expresión que soluciona el problema es la siguiente:

(Tiempo = soleado y Humedad=Normal) o
(Tiempo = nublado) o
(Tiempo = lluvioso y Viento=Debil)
Los posibles valores de los atributos son:
Tiempo = (Soleado,Nublado,Lluvioso)
Humedad=(Alta,Normal)
Viento=(Fuerte,Debil)
JugarTenis=(Si,No)

Por lo tanto, para la cadena de bits de las hipótesis usaremos tres bits para “Tiempo”, dos para
“Humedad”, dos para “Viento” y uno para “Jugar tenis”.
Ejemplo:
       Si (Tiempo = soleado y Humedad=Normal y Viento = fuerte) -> JugarTenis=Si
       se expresaría como: 100 01 10 1



Universidad Nacional de Ingeniería.                         Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

Como la solución buscada es la disyunción de tres de estas reglas, las cadenas de bits de nuestras
hipótesis estarán formadas por la concatenación de tres cadenas.

Ejemplo:
      100 01 10 1 + 010 10 10 1 + 100 10 01 1

En cuanto al operador de cruce, elegiremos uno de tipo uniforme con la siguiente máscara:

          Máscara de cruce = 11000011 11000011 11000011

Para elegir las hipótesis que pasarán a la siguiente generación, o que serán elegidas para sufrir las
operaciones de cruce, usaremos una selección probabilística tal que: ver Figura 1

A la hora de implementar el algoritmo, haremos uso de los siguientes parámetros:
       r= % población que sufrirá la operación de cruce
       p= número de hipótesis de la población
       m= % de individuos (hipótesis) que mutan

Durante las iteraciones del algoritmo:
   a) (1-r)p pasarán a la siguiente generación (Ps) intactos
   b) (r*p)/2 parejas de hipótesis realizarán la operación de cruce
   c) Y el m porciento de la “nueva” población sufrirán mutaciones. Este m porciento se elige
   con una probabilidad uniforme.

Función Fitness (función de evaluación)

Dispondremos de una base de datos de entrenamiento, compuesta por cadenas de 7 bits tal que
nos indique que condiciones habrán de darse para jugar o no al tenis.
Ejemplo:
       100 01 10 1 = (Tiempo = soleado y Humedad=Normal) -> Si

En nuestro ejemplo, el número de combinaciones posible es 3x2x2=12 (lo cual no es mucho y
nos permite tener una muestra de entrenamiento completa).

El objetivo de la función es el de comprobar el porcentaje de reglas de entrenamiento que nuestra
hipótesis es capaz de clasificar correctamente para, de esta forma, dotar a cada individuo de un
valor numérico indicativo de su precisión (ajuste al modelo buscado).

Nuestra hipótesis (individuo) se puede representar en tres partes (A,B y C) donde Z es el bit que
indica si se juega o no al tenis en cada caso.


Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

       A                              B                              C
       x x x x x x x x                x x x x x x x x                x x x x x x x x
                     z                              z                              z

Nuestra función de evaluación tomará una hipótesis y la procesará con todo el conjunto de
entrenamiento. Una cadena de entrenamiento se representa de la siguiente forma (donde R es el
BIT que indica si se juega o no al tenis):

                                      Entrenamiento
                                      x x x x x x x x
                                      Data (7 bits) R

Esta cadena de entrenamiento se compara con cada una de las partes de la hipótesis para ver si
alguna de las tres la clasifica correctamente. Para saber si una parte clasifica bien una regla de
entrenamiento procederemos de la siguiente forma:
       Si R=1 entonces
       Si ( (Entrenamiento AND A) = Entrenamiento) devolver SI
       Sino devolver NO
       Si R=0 entonces
       Si ( (Data AND A) = Data)
       Si R=Z devolver SI
       Sino devolver NO
       Sino devolver NO

Si se ha devuelto SI, procedemos con el siguiente dato de entrenamiento. Si se ha devuelto NO,
evaluamos la siguiente parte del individuo (B y después C).

Para cada individuo, la función de evaluación realiza esta tarea con todos los datos de
entrenamiento, devolviendo un número entre 0 y 1 que indique el porcentaje de clasificaciones
correctas de la hipótesis actual (0% a 100%). Así pues, cada individuo estará asociado a un valor
numérico que usará posteriormente la función de selección.

Función AG (Fitness,Umbral,p,r,m)
{
Inicializar población P.
Para cada hipótesis en P, calcular Fitness.
Mientras que max(Fitness) < Umbral hacer
Seleccionar (1-r)p individuos de P que pasan a Ps.
Elegir (r*p)/2 parejas de P y aplicarles operadores de cruce. Añadir los hijos a Ps.
Elegir m porciento sobre Ps y aplicar mutación.

Universidad Nacional de Ingeniería.                            Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.
Inteligencia Artificial.

P <- Ps
Para cada hipótesis en P, calcular Fitness.
Fin mientras
Devolver la hipótesis con mayor fitness.
}

En nuestro caso el Umbral será 1 (100% de clasificaciones correctas) ya que disponemos en la
base de entrenamiento de todas las combinaciones posibles (algo que no ocurrirá en problemas
reales y no de juguete, como es éste)

Nota: Se trata de un ejemplo sencillo en el que una determinada persona juega al tenis siempre y
cuando se cumplan unas determindas condiciones atmosféricas.


CONCLUSIONES

Como hemos podido observar, la principal ventaja de los algoritmos genéticos radica en su sencillez. Se
requiere poca información sobre el espacio de búsqueda ya que se trabaja sobre un conjunto de soluciones
o parámetros codificados (hipótesis o individuos). Se busca una solución por aproximación de la
población, en lugar de una aproximación punto a punto. Con un control adecuado podemos mejorar la
aptitud promedio de la población, obteniendo nuevos y mejores individuos y, por lo tanto, mejores
soluciones.

Se consigue un equilibrio entre la eficacia y la eficiencia. Este equilibrio es configurable mediante los
parámetros y operaciones usados en el algoritmo. Así, por ejemplo, bajando el valor del umbral
conseguiremos una rápida solución a cambio de perder en “calidad”. Si aumentamos dicho valor,
tendremos una mejor solución a cambio de un mayor tiempo consumido en la búsqueda. Es decir,
obtenemos una buena relación entre la calidad de la solución y el costo.

Quizás el punto más delicado de todo se encuentra en la definición de la función de evaluación. Al igual
que en el caso de la heurística, de su eficacia depende el obtener buenos resultados. El resto del proceso es
siempre el mismo para todos los casos.

La programación mediante algoritmos genéticos suponen un nuevo enfoque que permite abarcar todas
aquellas áreas de aplicación donde no sepamos como resolver un problema, pero si seamos conscientes de
que soluciones son buenas y cuales son malas.

Desde aplicaciones evidentes, como la biología o la medicina, hasta otros campos como la industria
(clasificación de piezas en cadenas de montaje). Los algoritmos genéticos poseen un importante papel en
aplicaciones de búsqueda y optimización, pero desde nuestro punto de vista, es en el aprendizaje
automático donde encuentra un estupendo marco de trabajo. La capacidad que poseen para favorecer a los
individuos que explican bien los ejemplos, a costa de los que no lo hacen, consigue una nueva generación
con mejores reglas y, por lo tanto el sistema será capaz de ir aprendiendo a conseguir mejores resultados.


Universidad Nacional de Ingeniería.                                 Elaborado por Ing. Ariel Chávez Toruño
Facultad de Ciencias y Sistemas.

Apuntes de Inteligencia Artificial

  • 1.
    Inteligencia Artificial. Universidad Nacionalde Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 2.
    Inteligencia Artificial. PRIMERA UNIDAD: GENERALIDADESEN INTELIGENCIA ARTIFICIAL. 1.1 Concepto de Inteligencia Artificial. 1.2 Alcance de la Inteligencia Artificial. a) Percepción b) Sistemas expertos. c) Hardware (Memoria, rapidez y arquitectura) d) Robótica (Automatización). e) Cibernética (Interdisciplina para control de automatización) 1.3 Algunos programas de la Inteligencia Artificial. a) Eliza. b) Mycin c) Dendral 1.4 El proyecto Japonés de la Quinta Generación. 1.1. INTRODUCCIÓN. En primer lugar, revisemos algunas definiciones generales de inteligencia, antes de intentar definir inteligencia artificial. Inteligencia es la aptitud de crear relaciones. Esta creación puede darse de manera puramente sensorial, como en la inteligencia animal; también puede darse de manera intelectual, como en el ser humano, que pone en juego el lenguaje y los conceptos. También se la puede conceptuar como la habilidad para adquirir, comprender y aplicar conocimiento; o como la aptitud para recordar, pensar y razonar. La IA es una nueva generación de tecnología informática, caracterizada no sólo por su arquitectura (hardware), sino también por sus capacidades. El énfasis de generaciones previas fue en las computaciones numéricas para aplicaciones científicas o de negocios. La nueva generación de tecnología informática incluye además la manipulación simbólica, con el objetivo de emular el comportamiento inteligente; y, la computación en paralelo, para tratar de conseguir resultados prácticamente en tiempo real. La capacidad predominante de la nueva generación, también conocida como la Quinta Generación, es la habilidad de emular (y tal vez en algunos casos superar) ciertas funciones inteligentes del ser humano. Por ejemplo: Aprendizaje: Captación automática de conocimientos. Razonamiento: • Sistemas basados en conocimientos. • Bases de datos inteligentes. • Prueba de teoremas y juegos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 3.
    Inteligencia Artificial. Percepción: • Comprensión de lenguaje natural. • Interpretación de escenas visuales (Visión por computadora). Locomoción y Manipulación: Realizar procesos mecánicos y tareas manuales (Robótica). Creación: Generación, verificación, depuración y optimización automática de programas. Algunas de las tareas que estos sistemas realizan en el campo de la IA son: Tareas generales • Percepción: Visión, Fonemas. • Lenguaje Natural: Comprensión, generación y traducción. • Razonamiento de sentido común. • Control de robots. Tareas formales • Juegos: Ajedrez, Backgammon, Damas. • Matemáticas: Geometría, Lógica, Cálculo Integral. Tareas expertas • Ingeniería: Diseño, Localización de fallas, Planeamiento. • Análisis Científico. • Diagnóstico Médico. • Análisis Financiero. La inteligencia artificial, en su sentido más amplio, indica la capacidad de un artefacto de realizar los mismos tipos de funciones que caracterizan al pensamiento humano. La posibilidad de desarrollar un artefacto así ha despertado la curiosidad del ser humano desde la antigüedad; sin embargo, no fue hasta la segunda mitad del siglo XX, cuando esa posibilidad se materializó en herramientas tangibles. La Inteligencia Artificial comenzó como el resultado de la investigación en psicología cognitiva y lógica matemática. Se ha enfocado sobre la explicación del trabajo mental y construcción de algoritmos de solución a problemas de propósito general. Punto de vista que favorece la abstracción y la generalidad. El término inteligencia artificial (IA) fue acuñado en 1956 por John McCarthy, del Instituto de Tecnología de Massachussets. En ese año se celebró la conferencia de Dartmouth, en Hanover (Estados Unidos), y en ella, McCarthy, Marvin Minsky, Nathaniel Rochester y Claude E. Shannon establecieron las bases de la inteligencia artificial como un campo independiente dentro de la informática. Previamente, en 1950, Alan M. Turing había publicado un artículo en la revista Mind, titulado “Computing Machinery and Intelligence” (“Ordenador e inteligencia”), en el que reflexionaba sobre el concepto de inteligencia Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 4.
    Inteligencia Artificial. artificial yestablecía lo que luego se conocería como el test de Turing, una prueba que permite determinar si un ordenador o computadora se comporta conforme a lo que se entiende como artificialmente inteligente o no. Con el avance de la ciencia moderna la búsqueda de la IA ha tomado dos caminos fundamentales: la investigación psicológica y fisiológica de la naturaleza del pensamiento humano, y el desarrollo tecnológico de sistemas informáticos cada vez más complejos. La Inteligencia Artificial es una combinación de la ciencia del computador, fisiología y filosofía, tan general y amplio como eso, es que reúne varios campos (robótica, sistemas expertos, por ejemplo), todos los cuales tienen en común la creación de máquinas que pueden "pensar". La idea de construir una máquina que pueda ejecutar tareas percibidas como requerimientos de inteligencia humana es un atractivo. Las tareas que han sido estudiadas desde este punto de vista incluyen juegos, traducción de idiomas, comprensión de idiomas, diagnóstico de fallas, robótica, suministro de asesoría experta en diversos temas. Es así como los sistemas de administración de base de datos cada vez más sofisticados, la estructura de datos y el desarrollo de algoritmos de inserción, borrado y locación de datos, así como el intento de crear máquinas capaces de realizar tareas que son pensadas como típicas del ámbito de la inteligencia humana, acuñaron el término Inteligencia Artificial en 1956. Trabajos teóricos fundamentales fueron el desarrollo de algoritmos matemáticos por Warren McCullock y Walter Pitts, en 1943, necesarios para posibilitar el trabajo de clasificación, o funcionamiento en sentido general, de una red neuronal. En 1949 Donald Hebb desarrolló un algoritmo de aprendizaje para dichas redes neuronales creando, en conjunto con los trabajos de McCullock y Pitts, la escuela creacionista. Esta escuela se considera hoy como el origen de la Inteligencia Artificial, sin embargo se trató poco por muchos años, dando paso al razonamiento simbólico basado en reglas de producción, lo que se conoce como sistemas expertos. En este sentido, el término IA se ha aplicado a sistemas y programas informáticos capaces de realizar tareas complejas, simulando el funcionamiento del pensamiento humano, aunque todavía muy lejos de éste. En esta esfera los campos de investigación más importantes son el procesamiento de la información, el reconocimiento de modelos, los juegos y las áreas aplicadas, como el diagnóstico médico. Un ejemplo de los logros alcanzados fue la partida de ajedrez que el superordenador de IBM denominado Deep Blue ganó, en mayo de 1997, al campeón del mundo Gari Kaspárov. Algunas áreas de la investigación actual del procesamiento de la información están centradas en programas que permiten a un ordenador o computadora comprender la información escrita o hablada, y generar resúmenes, responder a preguntas específicas o redistribuir datos a los usuarios interesados en determinados sectores de esta información. En esos programas es esencial la capacidad del sistema de generar frases gramaticalmente Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 5.
    Inteligencia Artificial. correctas yde establecer vínculos entre palabras e ideas. La investigación ha demostrado que mientras que la lógica de la estructura del lenguaje, su sintaxis, está relacionada con la programación, el problema del significado, o semántica, es mucho más profundo, y va en la dirección de una auténtica inteligencia artificial. Actualmente existen dos tendencias en cuanto al desarrollo de sistemas de IA: los sistemas expertos y las redes neuronales. Los sistemas expertos intentan reproducir el razonamiento humano de forma simbólica. Las redes neuronales lo hacen desde una perspectiva más biológica (recrean la estructura de un cerebro humano mediante algoritmos genéticos). A pesar de la complejidad de ambos sistemas los resultados distan mucho de un auténtico pensamiento inteligente. Muchos científicos se muestran escépticos acerca de la posibilidad de que alguna vez se pueda desarrollar una verdadera IA. El funcionamiento de la mente humana todavía no ha llegado a conocerse en profundidad y, en consecuencia, el diseño informático seguirá siendo esencialmente incapaz de reproducir esos procesos desconocidos y complejos. La metáfora entre mente y computadora se ha ampliado y madurado. Existe mecanismos o procesos básicos; sean comunes a actividades y comportamientos tan variados como: Resolver un problema en general matemático, financiero,... Descubrir una estructura de pensamiento. Ir de casa a la oficina. Jugar al ajedrez. Otras actividades del pensamiento que habitualmente se reconoce que requieren inteligencia. La existencia de otros mecanismos Confirmación del funcionamiento de la inteligencia. Detección de la inteligencia. Entendimiento de la inteligencia. La confluencia de IA con la sicología cognitiva. El conocimiento que se tenga de la inteligencia y el aprendizaje, será alguna vez suficiente para que sirva de ayuda en la construcción de modelos mentales (Ej.: el conocimiento de la aeronáutica ayuda a construir aviones.) Estudiase el acto de aprender --> en las personas el aprendizaje parece estar íntimamente ligado al crecimiento de la estructura física del cerebro. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 6.
    Inteligencia Artificial. 1.2. CRONOLOGÍADE LA IA. La inteligencia artificial es el estudio de la inteligencia como computación (Hayes.) Es la ciencia de hacer máquinas que hacen cosas que, realizadas por el hombre, requieran el uso de inteligencia (Minski.) El estudio de las ideas que permiten a los ordenadores ser inteligentes (Winston.) Conjunto de técnicas encaminadas al diseño y la construcción de sistemas informáticos que exhiban algún aspecto de inteligencia (Luis Arranz.) El nacimiento de la inteligencia artificial se refiere a la conferencia de Darwouth de 1956. Se reunieron ciertos investigadores de informática para intercambiar sus ideas. En 1957 aparece un programa que es el General Power Solver (GPS) desarrollado por Newell, Shan y Simon que era un intento de hacer un programa que resolviera problemas. Todo quedó en un fracaso. En 1958 aparece un lenguaje llamado LISP de McCarthy. En 1961 aparece un programa para jugar a las damas (Samel) que además era capaz de aprender cuantas más partidas ganaba. En 1965 se comienza a desarrollar DENTRAL, que es un sistema experto relacionado con la química y es el primer S.E. (Sistema Experto.) En 1966 aparece un programa de ajedrez creado por Greunblat. En 1968 aparece un robot denominado SHAKEY con movimientos muy torpes. En el 69 aparecen otros sistemas expertos: PROSPECTOR (yacimientos minerales), MYCIN (enfermedades infecciosas.) En 1975 aparece PROLOG (Colmenawer.) 1981: Conferencia de Tokyo MITI Robot Superordenadores Quinta generación MCC (Microelectronics and Computer technology Corporation) SCS (Strategic Computing and Survivability) MCNC (Microelectronics Center of Nort Carolina) Proyecto “Guerra de las galaxias” Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 7.
    Inteligencia Artificial. 1.3. CONCEPTODE INTELIGENCIA ARTIFICIAL. No existe una definición para la IA que tenga una aceptación general, lo cual no es de extrañar ya que tampoco ha existido nunca una definición universalmente aceptada de la inteligencia humana. De las muchas definiciones de IA existentes tenemos: Inteligencia Artificial 1. “La interesante tarea de lograr que las computadoras piensen... maquinas con mentes, en su amplio sentido.” (Haugeland, 1985.) 2. Disciplina científico-técnica que trata de crear sistemas artificiales capaces de comportamientos que, de ser realizados por seres humanos, se diría que requieren inteligencia. 3. “La automatización de actividades que vinculamos con procesos de pensamiento humano, actividades tales como toma de decisiones, resolución de problemas, aprendizaje...” (Bellman, 1978.) 4. “El estudio de las facultades mentales mediante el uso de modelos computacionales”. (Charniak y McDermott, 1985.) 5. “El estudio de los cálculos que permiten percibir, razonar y actuar”. (Winston, 1992.) 6. Estudio de los mecanismos de la inteligencia y las tecnologías que lo sustentan. (Newell) 7. “El arte con crear máquinas con capacidad de realizar funciones que al realizadas por personas requieren de inteligencia”. (Kurzweil, 1990.) 8. “El estudio de cómo lograr que las computadoras realicen tareas que, por el momento, los humanos hacen”. (Rich y Knight, 1991.) 9. “Un campo de estudio que se enfoca a la explicación y emulación de la conducta inteligente en función de procesos computacionales”. (Schalkoff, 1990.) 10. “La rama de la ciencia de la computación que se ocupa de la automatización de la conducta inteligente”. (Luger y Stubblefield, 1993). Las primeras cinco definiciones se refieren a procesos mentales y al razonamiento, mientras que las ultimas cinco a la conducta. La 1, 3, 5 y 7 miden la condición deseable en función Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 8.
    Inteligencia Artificial. de eficienciahumana, y las 3, 4, 8, y 9 lo hacen en conformidad con un concepto de inteligencia ideal (racionalidad.) Desde sus comienzos hasta la actualidad, la Inteligencia Artificial ha tenido que hacer frente a una serie de problemas: • Los computadores no pueden manejar (no contienen) verdaderos significados. • Los computadores no tienen autoconciencia (emociones, sociabilidad, etc.). • Un computador sólo puede hacer aquello para lo que está programado. • Las máquinas no pueden pensar realmente. Los esfuerzos de la Inteligencia Artificial (IA) están encaminados tanto a la construcción de entidades inteligentes como a su comprensión. En 1843, Lady Ada Augusta Byron, patrocinadora de Charles Babbage planteó el asunto de si la máquina de Babbage podía "pensar". Los primeros problemas que se trató de resolver fueron puzzles, juegos de ajedrez, traducción de textos a otro idioma. Durante la II Guerra Mundial Norbert Wiener y John Von Neumann establecieron los principios de la cibernética en relación con la realización de decisiones complejas y control de funciones en máquinas. La teoría de la retroalimentación en mecanismos, como por ejemplo un termostato que regula la temperatura en una casa, tuvo mucha influencia. Esto aún no era propiamente Inteligencia Artificial. Se hizo mucho en traducciones (Andrew Booth y Warren Weaver), lo que sembró la semilla hacia el entendimiento del lenguaje natural. En el año 1955 Herbert Simon, el físico Allen Newell y J.C. Shaw, programador de la RAND Corp. y compañero de Newell, desarrolla el primer lenguaje de programación orientado a la resolución de problemas de la Inteligencia Artificial, el IPL-11. Un año más tarde estos tres científicos desarrollan el primer programa de Inteligencia Artificial al que llamaron Logic Theorist, el cual era capaz de demostrar teoremas matemáticos, representando cada problema como un modelo de árbol, en el que se seguían ramas en busca de la solución correcta, que resultó crucial. Este programa demostró 38 de los 52 teoremas del segundo capítulo de Principia Mathematica de Russel y Whitehead. En 1956, con la ahora famosa conferencia de Dartmouth, organizada por John McCarthy y en la cual se utilizó el nombre de inteligencia artificial para este nuevo campo, se separó la Inteligencia Artificial de la ciencia del computador, como tal. Se estableció como conclusión fundamental la posibilidad de simular inteligencia humana en una máquina. En 1957 Newell y Simon continúan su trabajo con el desarrollo del General Problems Solver (GPS). GPS era un sistema orientado a la resolución de problemas; a diferencia del Logic Theorist, el cual se orientó a la demostración de teoremas matemáticos, GPS no Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 9.
    Inteligencia Artificial. estaba programadopara resolver problemas de un determinado tipo, razón a la cual debe su nombre. Resuelve una gran cantidad de problemas de sentido común, como una extensión del principio de retroalimentación de Wiener. Diversos centros de investigación se establecieron, entre los más relevantes están, la Universidad Carnegie Mellon, el Massachusetts Institute of Technologie (MIT), encabezado por Marvin Minsky, la Universidad de Standford e IBM. Los temas fundamentales eran el desarrollo de heurísticas y el aprendizaje de máquinas. En 1957 McCarthy desarrolló el lenguaje LISP. La IBM contrató un equipo para la investigación en esa área y el gobierno de USA aportó dinero al MIT también para investigación en 1963. A finales de los años 50 y comienzos de la década del 60 se desarrolla un programa orientado a la lectura de oraciones en inglés y la extracción de conclusiones a partir de su interpretación, al cual su autor, Robert K. Lindsay, denomina "Sad Sam". Este podía leer oraciones del tipo "Jim es hermano de John" y "La madre de Jim es Mary", a partir de ella el sistema concluía que Mary debía ser también la madre de John. Este sistema representó un enorme paso de avance en la simulación de inteligencia humana por una máquina, pues era capaz de tomar una pieza de información, interpretarla, relacionarla con información anteriormente almacenada, analizarla y sacar conclusiones lógicas. En el mismo período de tiempo hay trabajos importantes de Herbert Gelernter, de IBM, quien desarrolla un "Demostrador Automático de Teoremas de la Geometría", Alex Bernstein desarrolla un programa para el juego de ajedrez que se considera el antecedente para "Deep Blue". En 1961 se desarrolla SAINT (Simbolic Automatic INTegrator) por James Slagle el cual se orienta a la demostración simbólica en el área del álgebra. En 1964 Bertrand Raphael construye el sistema SIR (Semantic Information Retrieval) el cual era capaz de comprender oraciones en inglés. Formalmente la IA inicia como disciplina en 1956. En la década del 60 se comienza en el MIT el estudio de la visión artificial, lo cual implica no solo captar imágenes a través de una cámara, sino también la comprensión, de lo que estas imágenes representan. Un resultado importante en este trabajo lo constituye el "mundo de micro-bloques", en el cual un robot era capaz de percibir un conjunto de bloques sobre una mesa, moverlos y apilarlos; el éxito se debió a los investigadores Larry Roberts, Gerald Sussman, Adolfo Guzman, Max Clowes, David Huffman, David Waltz, Patrick Winston, y Berthold Horn. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 10.
    Inteligencia Artificial. Posteriormente seobtuvieron resultados importantes entre ellos el de mayor resonancia fue el sistema SCHRDLU de Terry Winograd, pues permitía interrogar y dar órdenes a un robot que se movía dentro de un mundo de bloques. En los primeros años de la década del 60 Frank Rosemblatt desarrolla, en la Universidad de Cornell, un modelo de la mente humana a través de una red neuronal y produce un primer resultado al cual llama perceptrón. Este sistema era una extensión del modelo matemático concebido por McCullock y Pitts para las neuronas, y funcionaba basándose en el principio de "disparar" o activar neuronas a partir de un valor de entrada el cual modifica un peso asociado a la neurona, si el peso resultante sobrepasa un cierto umbral la neurona se dispara y pasa la señal a aquellas con las que está conectada. Al final, en la última capa de neuronas, aquellas que se activen definirán un patrón el cual sirve para clasificar la entrada inicial. Este trabajo constituye la base de las redes neuronales de hoy en día, sin embargo a raíz de su desarrollo sufrió fuertes críticas por parte de Marvin Minsky y Seymour Papert lo cual provocó que la mayoría de los investigadores interesados en el tema lo abandonarán, y este no se retomara hasta los años 80. En 1965-70, comenzaron a aparecer los programas expertos, que predicen la probabilidad de una solución bajo un set de condiciones, entre esos proyectos estuvo: DENDRAL, que asistía a químicos en estructuras químicas complejas euclidianas; MACSYMA, producto que asistía a ingenieros y científicos en la solución de ecuaciones matemáticas complejas, etc. En la década 1970-80, creció el uso de sistemas expertos, muchas veces diseñados para aplicaciones médicas y para problemas realmente muy complejos como MYCIN, que asistió a médicos en el diagnóstico y tratamiento de infecciones en la sangre. Otros son: R1/XCON, PIP, ABEL, CASNET, PUFF, INTERNIST/CADUCEUS, etc. Algunos permanecen hasta hoy. De 1975 en adelante, comienza la era de los lenguajes expertos (shells) como EMYCIN, EXPERT, OPSS, etc. para luego tratar de que éstos sean más amigables y funcionales. Las definiciones de Inteligencia Artificial son muchas, pero podría decirse que son programas que realizan tareas que si fueran hechas por humanos se considerarían inteligentes. Estos programas obviamente corren en un computador y se usan, como por ejemplo, en control robótico, comprensión de lenguajes naturales, procesamiento de imágenes basado en conocimientos previos, estrategias de juegos, etc. reproduciendo la experiencia que un humano adquiriría y de la forma en que un humano lo haría. Para clasificar las máquinas como "pensantes", es necesario definir qué es inteligencia y qué grado de inteligencia implica resolver problemas matemáticos complejos, hacer generalizaciones o relaciones, percibir y comprender. Los estudios en las áreas del Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 11.
    Inteligencia Artificial. aprendizaje, dellenguaje y de la percepción sensorial han ayudado a los científicos a definir a una máquina inteligente. Importantes desafíos han sido tratar de imitar el comportamiento del cerebro humano, con millones de neuronas y extrema complejidad. DIFERENCIA ENTRE LA INTELIGENCIA NATURAL Y LA ARTIFICIAL Atributos Inteligencia Inteligencia Natural Artificial Capacidad de usar detectores Alta Baja Capacidad de ser creativo Alta Baja Capacidad de aprender de la experiencia Alta Baja Capacidad de adaptación Alta Baja Capacidad de permitirse el costo de adquirir Alta Baja experiencia Capacidad de usar diversas fuentes de información Alta Alta Capacidad de adquirir una gran cantidad de Alta Alta información externa Capacidad de realizar cálculos complejos Baja Alta Capacidad de transferir información Baja Alta Capacidad de hacer una serie de cálculos con rapidez y Baja Alta exactitud La IA tiene cuatro objetivos que alcanzar: • Sistemas que piensan como humanos. • Sistemas que actúan como humanos. • Sistemas que piensan racionalmente. • Sistemas que actúan racionalmente. Desde el punto de vista de los objetivos, la IA puede considerarse en parte como ingeniería y en parte como ciencia: • Como ingeniería, el objetivo de la IA es resolver problemas reales, actuando como un conjunto de ideas acerca de cómo representar y utilizar el conocimiento, y de cómo desarrollar sistemas informáticos. • Como ciencia, el objetivo de la IA es buscar la explicación de diversas clases de inteligencia, a través de la representación del conocimiento y de la aplicación que se da a éste en los sistemas informáticos desarrollados. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 12.
    Inteligencia Artificial. Preguntas fundamentalesde la IA. 1. ¿Cuales son las suposiciones subyacentes acerca de la inteligencia? 2. ¿Cuáles son las técnicas útiles para la resolución de problemas en IA? 3. ¿A qué nivel de detalle se trata de modelar la inteligencia humana? 4. ¿Cómo se puede saber que se ha tenido éxito en el desarrollo de un sistema inteligente? La hipótesis del sistema físico de símbolos Un sistema físico de símbolos está formado por un conjunto de entidades básicas (llamadas símbolos), las cuales son patrones físicos que pueden ocurrir como componentes de otro tipo de entidad llamada expresión o estructura de símbolos. Una estructura de símbolos está compuesta de un número de instancias de símbolos, relacionados en alguna forma física. Además de estas estructuras, el sistema también contiene una colección de procesos que operan sobre las expresiones, para producir otras: procesos de creación, modificación, reproducción y destrucción. Un sistema físico de símbolos es una máquina que produce, a través del tiempo, una colección evolutiva de estructuras de símbolos. Hipótesis: Un sistema físico de símbolos tiene los medios necesarios y suficientes para actuar en general de forma inteligente. Importancia de la hipótesis Representa una importante teoría acerca de la naturaleza de la inteligencia humana. Constituye la base sobre la que se fundamenta la creencia de que es posible construir programas que pueden realizar tareas inteligentes como las que hacen las personas. Agentes Inteligentes. Agente, del latín agere, es "el que hace". En el ámbito de los negocios, un agente es "aquel que tiene por oficio gestionar negocios ajenos". ¿Qué es un Agente Inteligente? Es todo aquello que puede considerarse que percibe su ambiente mediante sensores y que responde o actúa en tal ambiente por medio de efectores. Es decir: "un tipo de programa informático que, por encargo de un usuario u otro programa, realiza de forma autónoma tareas que requieren cierto grado de inteligencia y aprendizaje". Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 13.
    Inteligencia Artificial. El agentepuede ser: • Autónomo: Un agente autónomo es un sistema anidado y parte integrante de un ambiente (environment) y que detecta o percibe (percepts) datos ambientales, momento a momento, y actúa sobre él con la intención de usar (actions) esos datos para su propia tarea (task) o agenda, afectando así lo que va a detectar en el futuro, sin intervención de terceras partes (basado en Franklin y Greasser, 1996). • Racional, que hace lo correcto, siendo "ideal" si hipoteticamente lo consigue del todo.- inteligente, siendo aceptable cualquiera de las numerosas definiciones de inteligencia, por ejemplo, capaz de aprender/adaptivo. • Activo, o sea que tiene en cuenta la gama de acciones abiertas a la elección y sus recompensas o penalidades. • Pro-activo donde más allá de actuar en respuesta a su mundo, lo hace tomando la iniciativa. • Meta-intensivo (orientado a metas), que elige las acciones que lo conducen a la meta, que intenta lograr prioritariamente. • Modelo-intensivo, que tiene internalizado un cierto modelo del mundo y lo respeta en sus acciones. • Utilidad-intensivo, que se esfuerza por obtener un máximo de "felicidad". • Social-intensivo o de comunicación, capaz de comunicarse en algun lenguaje de comunicación para agentes comprensible para otros. • De planificación, parecido al agente problema-intensivo (orientado a resolver problemas y tomar decisiones) • Softbot o sea robot basado en un software (como los robots bidimensionales de Beer que mimetizan a un invertebrado). • Reactivo cuando percibe perturbaciones en su mundo y responde a esa percepción de una manera actualizada (adaptada). • Reflejo o tropista, que responde de inmediato y en forma bien definida a un tropismo, a una percepción alarmante o beneficiosa (así un agente para el heliotropismo se orienta al Sol.) La mayoría de los agentes poseen las siguientes tres características: comunicación, inteligencia y autonomía. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 14.
    Inteligencia Artificial. • Comunicación. El agente puede comunicarse con el usuario, con otros agentes y con otros programas. Con el usuario se comunica con un interfaz amigable, mediante el que personaliza sus preferencias. Algunos agentes permiten comunicarse en lenguaje natural, algo típico de los chatbots. • El grado de inteligencia varía mucho de unos agentes a otros, que suelen incorporar módulos con tecnologías procedentes de la Inteligencia Artificial. Los más sencillos se limitan a recoger las preferencias del usuario, quien debe personalizarlos. Un ejemplo son los agentes inteligentes basados en tecnología de redes neuronales especializados en identificar mensajes de correo electrónico sospechosos de contener spam -mensajes no deseados-. En una primera fase el usuario debe marcarlos como spam, el agente va aprendiendo a identificar los rasgos que caracterizan a estos mensajes y posteriormente los filtra. • Autonomía. Un agente no sólo debe ser capaz de hacer sugerencias al usuario sino de actuar. En el ejemplo anterior, el agente que filtra el spam no puede estar continuamente alertando al usuario en cada mensaje de correo que llega sobre la posibilidad de que sea un mensaje no deseado y su verdadera utilidad surge cuando elimina de forma autónoma dichos mensajes. Ejemplos de agentes. • Representante virtual. • Asistentes personales (Agentes, Asistentes Financieros, Auditores.) • Negociadores de mercados electrónicos (subastas.) • Agentes de búsquedas de información o rastreadores de información solicitada (Maimai, Googlealert, Copernic, Spypress, Tracerlook, Trademarkboots, Google News.) • Agente secreto espía, para monitorear páginas web previamente identificadas por el usuario e informa sobre cambios en dicha página (Changedetection, Spyweb.) En general no se trabaja con agentes aislados sino con sistemas multi-agente, como lo ilustra la figura. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 15.
    Inteligencia Artificial. De maneraintrínseca, los sistemas multiagentes tienen las ventajas tradicionales en la solución de problemas concurrente y distribuido, además de incorporar patrones de interacción sofisticados: • Cooperación: Trabajan juntos hacia un propósito común. • Coordinación: Organizan las actividades para solución de problemas, de tal forma que las interacciones dañinas (en conflicto muto) sean evitadas; y las interacciones benéficas sean explotadas. • Negociación: Llegan a acuerdos aceptables por todas las partes involucradas Practique con el agente inteligente de inversiones diligentdingo. (http://www.diligentdingo.com/DDingoLatest.exe) Existen cuatro programas de agentes: 1. Agente de reflejo simple. 2. Agente bien informado de todo lo que pasa. 3. Agentes basados en metas. 4. Agentes basados en utilidad. Los ambientes poseen las siguientes propiedades: 1. Accesibles y no accesibles: Si el aparato sensorial de un agente le permite tener acceso al estado total de un ambiente, se dice que este es accesible a tal agente. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 16.
    Inteligencia Artificial. 2. Determinísticos y no determinísticos: Si el estado siguiente de un ambiente se determina completamente mediante el estado actual y las acciones escogidas por los agentes, se dice que el ambiente es determinista. 3. Episódicos y no episódicos: La experiencia del agente se divide en episodios. Cada episodio consta de una gente que percibe y actúa, la calidad de su actuación dependerá del episodio mismo (Para los ambientes episódicos). 4. Estáticos y dinámicos: Si existe la posibilidad de que el ambiente sufra modificaciones mientras el agente se encuentra deliberando se dice que el ambiente se comporta en forma dinámica en relación con el agente. 5. Discretos y continuos: Si existe una cantidad limitada de percepciones y acciones distintas y claramente discernibles, se dice que el ambiente es discreto. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 17.
    Inteligencia Artificial. 1.4. ALCANCEDE LA INTELIGENCIA ARTIFICIAL. Como se menciono anteriormente, no existe una definición universalmente aceptada de IA, pero existen los procesos que generalmente pueden ser llamados IA si son programados en una computadora. La lista no es exhaustiva, pero se abordan las áreas principales a) Percepción: Las maquinas serán capaces de reaccionar a su entorno e influenciarlo mediante sensores y dispositivos de interacción con el exterior. Podemos señalar las percepciones de la vista, la audición y el tacto. La visión ya se ha llevado a cabo en una escala limitada mediante aparatos de televisión y dispositivos para la percepción de imágenes sintetizadores que permiten al ordenador comunicarse mediante audición del lenguaje hablado en la salida y no escrito como se ha hecho hasta ahora, con el uso de pantallas o impresoras. Algunos de los progresos conseguidos con el desarrollo de circuitos integrados permitirán al computados aceptar órdenes y datos especializados, también mediante la utilización del lenguaje hablado. b) Sistemas expertos. Sistema experto, tipo de programa de aplicación informática que adopta decisiones o resuelve problemas de un determinado campo, como las finanzas o la medicina, utilizando los conocimientos y las reglas analíticas definidas por los expertos en dicho campo. Para algunas personas los términos IA y sistemas expertos son sinónimos. Muchos de los sistemas expertos existentes actualmente consisten en grandes bases de conocimientos, creadas para almacenar la información de que se dispone expertos humanos en varios campos y a las que se aplica una serie de reglas de manipulación expresadas en lenguajes específicos. La diagnosis medica, la ingeniería química, la exploración geológica y el Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 18.
    Inteligencia Artificial. diseño decomputadoras han proporcionado material para el diseño de sistemas expertos de gran éxito. Con el nacimiento de la Revolución Industrial, muchas fábricas tuvieron gran aceptación por la automatización de procesos repetitivos en la línea de ensamblaje. La automatización Los sistemas expertos, tienen dos elementos básicos y separados, aunque relacionados: una base de conocimientos y una máquina de deducción, o de inferencia. La base de conocimientos proporciona hechos objetivos y reglas sobre el tema, mientras que la máquina de deducción proporciona la capacidad de razonamiento que permite al sistema experto extraer conclusiones. consiste, principalmente, en diseñar sistemas capaces de ejecutar tareas repetitivas hechas por los hombres, y capaces de controlar operaciones sin la ayuda de un operador humano. El término automatización también se utiliza para describir a los sistemas programables que pueden operar independientemente del control humano. La mayoría de las industrias has sido automatizadas o utilizan tecnología para automatizar algunas labores; en la industria de la telefonía, marcación, transmisión y facturación esta completamente automatizados. Pero no todas las industrias requieren el mismo grado de automatización. La agricultura es una industria difícil de automatizar, y con esto se ha vuelto más mecanizada, esencialmente en el procesamiento y empaque de comida. De manera similar, los doctores pueden dar consulta asistiéndose en una computadora, pero finalmente el doctor, y no la computadora, termina por dar el diagnóstico final al paciente. Los robots comenzaron a aparecer en este proceso de automatización industrial hasta la aparición de las computadoras en los 40’s. Estos robots computarizados, están equipados con pequeños microprocesadores capaces de procesar la información que le proveen los sensores externos y así es como el robot puede tomar cambiar o mantener una operación en ejecución, a esto se le llama retroalimentación, y forma parte de la Cibernética. La retroalimentación es esencial en cualquier mecanismo de control automático, ya que ayuda a controlar los factores externos que le afecten en la correcta ejecución de sus operaciones normales. c) Hardware para la IA. El diseño tradicional de hardware no ha conseguido alcanzar, en gran medida el fin propuesto por la IA. Las técnicas de IA requieren acceso rápido a bancos de memoria, enormes según los estándares tradicionales y, por tanto, las velocidades de proceso son demasiado lentas para las aplicaciones más exigentes. La antigua idea de solucionar un problema paso a paso mediante la ejecución de una secuencia de instrucciones esta cediendo al paso a la idea del procesamiento en paralelo, en el cual un conjunto de procesadores trabajan simultáneamente en la diferentes partes del problema. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 19.
    Inteligencia Artificial. Según otrosrumbos tomados se propone la inclusión de compiladores en hardware más que en software, y la obtención de un microcódigo para procesadores en un lenguaje lógico como el Prolog. d) Robótica La ciencia de la robótica implica diferentes técnicas de IA. La idea de un robot "listo" con la capacidad de aprender por experiencia es el tema central de teorías e investigaciones en IA. El robot debe ser capaz de comunicarse en lenguaje natural y debe poder realizar tareas que requieran que el equivalente a la iniciativa y la originalidad, esto implica que el robot debe llegar a realizar, tras un periodo de aprendizaje cosas para las cuales no estaba inicialmente programado, a diferencia de los robots que se utilizan actualmente en la aplicación industrial, los cuales no son más que meros autómatas. La idea global en la inteligencia artificial estuvo desacreditada durante varios años debido parcialmente, al excesivo optimismo por parte de la primera teoría pero, mayormente causado por la exageración y el sensacionalismo de algunos de sus divulgadores. Los primeros robots creados en toda la historia de la humanidad, no tenían más que un solo fin: entretener a sus dueños. Estos inventores se interesaban solamente en conceder los deseos de entretener a quien le pedía construir el robot. Sin embargo, estos inventores se comenzaron a dar cuenta de que los robots podían imitar movimientos humanos o de alguna criatura viva. Estos movimientos pudieron ser mecanizados, y de esta manera, se podía automatizar y mecanizar algunas de las labores más sencillas de aquellos tiempos. El origen del desarrollo de la robótica, se basa en el empeño por automatizar la mayoría de las operaciones en una fábrica; esto se remonta al siglo XVII en la industria textil, donde se diseñaron telares que se controlaban con tarjetas perforadas. Isaac Asimov formuló sus geniales "Tres Leyes de la Robótica": 1. "Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser humano sufra daño." 2. "Un robot debe obedecer las órdenes que le son dadas por un ser humano, excepto cuando etas órdenes están en oposición con la primera Ley." 3. "Un robot debe proteger su propia existencia, hasta donde esta protección no esté en conflicto con la primera o la segunda Leyes." Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 20.
    Inteligencia Artificial. Cronología de la Robótica. FECHA DESARROLLO SigloXVIII. A mediados del J. de Vaucanson construyó varias muñecas mecánicas de tamaño humano que ejecutaban piezas de música 1801 J. Jaquard invento su telar, que era una máquina programable para la urdimbre 1805 H. Maillardet construyó una muñeca mecánica capaz de hacer dibujos. 1946 El inventor americano G.C Devol desarrolló un dispositivo controlador que podía registrar señales eléctricas por medio magnéticos y reproducirlas para accionar un máquina mecánica. La patente estadounidense se emitió en 1952. 1951 Trabajo de desarrollo con teleoperadores (manipuladores de control remoto) para manejar materiales radiactivos. Patente de Estados Unidos emitidas para Goertz (1954) y Bergsland (1958). 1952 Una máquina prototipo de control numérico fue objetivo de demostración en el Instituto Tecnológico de Massachusetts después de varios años de desarrollo. Un lenguaje de programación de piezas denominado APT (Automatically Programmed Tooling) se desarrolló posteriormente y se publicó en 1961. 1954 El inventor británico C. W. Kenward solicitó su patente para diseño de robot. Patente británica emitida en 1957. 1954 G.C. Devol desarrolla diseños para Transferencia de artículos programada. Patente emitida en Estados Unidos para el diseño en 1961. 1959 Se introdujo el primer robot comercial por Planet Corporation. estaba controlado por interruptores de fin de carrera. 1960 Se introdujo el primer robot ‘Unimate’’, basada en la transferencia de articulaciones programada de Devol. Utilizan los principios de control numérico para el control de manipulador y era un robot de transmisión hidráulica. 1961 Un robot Unimate se instaló en la Ford Motors Company para atender una máquina de fundición de troquel. 1966 Trallfa, una firma noruega, construyó e instaló un robot de pintura por pulverización. 1968 Un robot móvil llamado ‘Shakey’’ se desarrollo en SRI (standford Research Institute), estaba provisto de una diversidad de sensores así como una cámara de visión y sensores táctiles y podía desplazarse por el suelo. 1971 El ‘Standford Arm’’, un pequeño brazo de robot de accionamiento eléctrico, se desarrolló en la Standford University. 1973 Se desarrolló en SRI el primer lenguaje de programación de robots del tipo de computadora para la investigación con la denominación WAVE. Fue seguido por el lenguaje AL en 1974. Los dos lenguajes se desarrollaron posteriormente en el lenguaje VAL comercial para Unimation por Víctor Scheinman y Bruce Simano. 1974 ASEA introdujo el robot Irb6 de accionamiento completamente eléctrico. 1974 Kawasaki, bajo licencia de Unimation, instaló un robot para soldadura por arco para estructuras de motocicletas. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 21.
    Inteligencia Artificial. 1974 Cincinnati Milacron introdujo el robot T3 con control por computadora. 1975 El robot ‘Sigma’’ de Olivetti se utilizó en operaciones de montaje, una de las primitivas aplicaciones de la robótica al montaje. 1976 Un dispositivo de Remopte Center Compliance (RCC) para la inserción de piezas en la línea de montaje se desarrolló en los laboratorios Charles Stark Draper Labs en estados Unidos. 1978 El robot T3 de Cincinnati Milacron se adaptó y programó para realizar operaciones de taladro y circulación de materiales en componentes de aviones, bajo el patrocinio de Air Force ICAM (Integrated Computer- Aided Manufacturing). 1978 Se introdujo el robot PUMA (Programmable Universal Machine for Assambly) para tareas de montaje por Unimation, basándose en diseños obtenidos en un estudio de la General Motors. 1979 Desarrollo del robot tipo SCARA (Selective Compliance Arm for Robotic Assambly) en la Universidad de Yamanashi en Japón para montaje. Varios robots SCARA comerciales se introdujeron hacia 1981. 1980 Un sistema robótico de captación de recipientes fue objeto de demostración en la Universidad de Rhode Island. Con el empleo de visión de máquina el sistema era capaz de captar piezas en orientaciones aleatorias y posiciones fuera de un recipiente. 1981 Se desarrolló en la Universidad de Carnegie- Mellon un robot de impulsión directa. Utilizaba motores eléctricos situados en las articulaciones del manipula dor sin las transmisiones mecánicas habituales empleadas en la mayoría de los robots. 1982 IBM introdujo el robot RS-1 para montaje, basado en varios años de desarrollo interno. Se trata de un robot de estructura de caja que utiliza un brazo constituido por tres dispositivos de deslizamiento ortogonales. El lenguaje del robot AML, desarrollado por IBM, se introdujo también para programar el robot SR-1. 1983 Informe emitido por la investigación en Westinghouse Corp. bajo el patrocinio de National Science Foundation sobre un sistema de montaje programable adaptable (APAS), un proyecto piloto para una línea de montaje automatizada flexible con el empleo de robots. 1984 Robots 8. La operación típica de estos sistemas permitía que se desarrollaran programas de robots utilizando gráficos interactivos en una computadora personal y luego se cargaban en el robot. e) Cibernética. La cibernética es una ciencia interdisciplinaria, tratando con sistemas de comunicación y control sobre organismos vivos, máquinas u organizaciones. El término es una derivación del vocablo griego kybernetes que significa gobernador o piloto, y fue aplicado por primera vez en 1948 a la teoría del control de mecanismos por el matemático americano Norbet Wiener. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 22.
    Inteligencia Artificial. En elcuerpo humano, el cerebro y el sistema nervioso funcionan para coordinar la información, la cual es utilizada para determinar el futuro curso de una acción; controlar los mecanismos para la auto corrección en máquinas que sirven con un propósito similar. Este principio es conocido como retroalimentación, el cual es fundamental en el concepto de automatización. La cibernética también se aplica al estudio de la psicología, servomecanismo, economía, neuropsicología, ingeniería en sistemas y al estudio de sistemas sociales, el término cibernética no es muy utilizado para describir por separado a un campo de estudio, y muchas de las investigaciones en el campo ahora se centran en el estudio y diseño de redes neuronales artificiales. 1.3 ALGUNOS PROGRAMAS DE IA. a) El programa ELIZA Casi cada publicación famosa en la IA menciona el programa ELIZA que fue escrito a finales de los sesenta por el profesor Joseph Weizenbaum de Massachusetts Institute of Technology (MIT). El programa fue diseñado como una ayuda al análisis del lenguaje y el profesor J. W. Lo llamo así en honor a la muchacha que aparece en la obra de G. B. Shaw, que comenzó como una vendedora callejera de flores y su vida se transformo cuando el profesor de dicción le enseño a hablar un correcto ingles, quien asumió esta tarea como parte de una apuesta. Un elemento muy importante del mensaje de Shaw era que aunque Eliza continuaba siendo la misma persona, con las misma virtudes y defectos antes y después de su transformación, la gente la veía de un manera deferente, como una señorita bien vestida y con un acento culto, en contraste con la desastrada vendedora de flores que hablaba de una forma vulgar. Podemos obtener la moraleja de esta historia y observar que aunque un programa sea muy complejo la computadora sigue siendo una acumulación inanimada de dispositivos electrónicos y que, aunque algunos de los resultados puedan ser sorprendentes la maquina es capaz de ejecutar únicamente las tareas para las cuales fue exactamente programada y nada más. b) El programa MYCIN La especialización de cualquier actividad requiere un gran conocimiento asociado. El proceso para poder practicar una cierta actividad depende de la asimilación de este conocimiento. Un conjunto de hechos constituyen una gran parte del conocimiento básico sobre un tema, pero son igualmente importantes la destreza que se puede adquirir con la experiencia, las ideas generales en algunos casos acerca de lo que es una buena practica y el arte de tomar Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 23.
    Inteligencia Artificial. un decisiónacertada basándose en información incompleta. Esto resulta tan importante para el aprendizaje de cualquier materia o para que el estudiante de cualquier ciencia adquiera los aspectos sutiles del tema, como aprender las premisas básicas. En la creación de un sistema experto hay una parte bastante inmediata de codificación de los hechos conocidos sobre un tema; la parte más difícil, conocida como modelación de la maestría, consiste en la formulación y aplicación de reglas extraídas de la experiencia que se posee en el tema. En cualquiera de los casos el sistema esta constituido por una base de conocimientos que proporcionan los hechos y un motor de inferencia para desarrollar las deducciones lógicas y tomar decisiones (algunas veces acompañadas de un porcentaje de probabilidad acerca de la corrección de las deducciones), basadas en los hechos y reglas conocidas. El programa MYCIN publicado por E. Schortcliffe en 1976 es un sistema que diagnostica enfermedades infecciosas, en particular infecciones sanguíneas. MYCIN lo usan médicos en prácticas para obtener ayuda en sus diagnósticos, a su vez el sistema se actualiza con los hechos y reglas de inferencia que proporcionan los especialistas. c) El programa DENDRAL DENDRAL es un programa experto de análisis químico y se ha aplicado con mucho éxito en muchos lugares del mundo. DENDRAL soluciona un problema de ingeniería química en tres fases. En primer lugar, el programa infiere cualquier posible restricción sobre la solución basándose en el conocimiento que posee en su base de datos. A continuación permite a los usuarios añadir cualquier otro tipo de restricción y finalmente genera y comprueba una lista de posibles soluciones, que imprime en orden de preferencia. DENDRAL se escribió originalmente en LIPS, pero ha sido reprogramado para ser usado en varias maquinas diferentes de entre las que se destaca la implementación realizada sobre un PDP-10 en Edimburgo. Este programa basado en la estrategia de "planificar, generar y comprobar" se usa en las universidades y en las industrias de Estados Unidos y en Europa y representa una de las aplicaciones prácticas de la IA que mas éxito ha conseguido de entre las desarrolladas hasta la fecha. 1.5. EL PROYECTO JAPONÉS DE LA QUINTA GENERACIÓN. La investigación y el desarrollo japonés de nueva tecnología están dirigidos por la unión de la industria y el gobierno en el instituto para la nueva generación de Tecnología de computadoras (ICOT). La investigación se desarrolla principalmente en tres campos: hardware, software y aplicaciones. Los investigadores en el campo del hardware están concentrados en una arquitectura de computadoras que se caracteriza por la inferencia secuencial, inferencia en paralelo y el desarrollo de maquinas para bases de datos afines. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 24.
    Inteligencia Artificial. El grupode software esta investigando sobre un lenguaje que sea el núcleo del proyecto, esté incluye sistema operativo, lenguaje natural y representación del conocimiento. El tercer grupo combina los resultados de los dos primeros grupos en la labor sobre sistemas de gestión de bases de datos afines y sistemas expertos y para conseguir validar la teoría propuestas por el resto del grupo. En contraste en las aproximaciones que se han realizado en otras partes del mundo, los japoneses están tratando de formular una nueva teoría unificada para todo el campo de representación y procesamiento de la información. Ya hemos visto que existen numerosas aproximaciones diferentes que pueden asimilarse a las diferentes ramas de la IA, pero solo si se aceptan estas aproximaciones incluyéndolas en una estrategia global, el número de opciones se reducirá y los japoneses creen que de este modo aumentarán las oportunidades para lograr una estrategia global coherente. El mayor logro desarrollado en los primeros cuatro años del proyecto ha sido una maquina basada en el conocimiento y que ha sido llamada Delta que comprende un sistema de inferencia, un sistema de conocimiento, un sistema de software y un sistema para el desarrollo de prototipos de software. Las maquinas para bases de datos afines tienen acceso a algo así como unos 20 gigabytes de almacenamiento y en las etapas iniciales se encontraron algunos problemas debido al uso de las maquinas convencionales que se basan en un procesamiento secuencial y que se incluyeron como compromiso con la reconocida necesidad de efectuar un procesamiento en paralelo a gran escala. Se estima que las maquinas de inferencia que se necesitan al final del proyecto deberán ser capaces de ejecutar 10 LIPS y esta potencia de procesamiento sólo será proporcionada por el equivalente de 1000 procesadores trabajando en paralelo. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 25.
    Inteligencia Artificial. SEGUNDA UNIDAD: REPRESENTACIÓNDEL CONOCIMIENTO 2.1. Formalismos para la representación del conocimiento: listas y árboles, redes semánticas, frames, scripts. 2.2. Fundamentos lógicos en inteligencia artificial: Lógica proposicional y de predicados. Sistemas conjuntivos, Forma de Skolen 2.3.Inferencia a) Reglas de producción. b) Cláusulas de Horn. Introducción. Desde el punto de vista de ingeniería, la mayor parte del trabajo requerido para construir sistemas de IA, está basado en el desarrollo de adecuadas representaciones de conocimiento y sus correspondientes estrategias de manipulación. No se puede manipular conocimiento a menos que esté adecuadamente representado. En consecuencia, las siguientes tres preguntas claves pueden guiarnos en el estudio de la IA. • ¿Qué es el conocimiento? • ¿Cómo se puede representar el conocimiento? • ¿Cómo se podría manipular el conocimiento? A continuación, se dan respuestas parciales a estas preguntas planteadas. En los capítulos posteriores se presenta un estudio más formal y detallado acerca del conocimiento, su representación y manipulación. Conocimiento Puede ser definido como el conjunto de hechos y principios acumulados por la humanidad, o el acto, hecho o estado de conocer. Es la familiaridad con el lenguaje, conceptos, procedimientos, reglas, ideas, abstracciones, lugares, costumbres y asociaciones, unida a la habilidad de utilizar estas nociones en forma efectiva para modelar diferentes aspectos del universo que nos rodea. Los conceptos de conocimiento e inteligencia están íntimamente ligados. La inteligencia requiere de la posesión y acceso al conocimiento. Conocimiento no debe ser confundido con datos o información. El conocimiento incluye y requiere del uso de datos e información. Además, combina relaciones, dependencias, y la noción del saber con datos e información. A veces es también útil o más aun necesario distinguir entre conocimiento y otros términos como creencia e hipótesis. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 26.
    Inteligencia Artificial. Esencialmente, sedefine como creencia a toda expresión que tiene significado, que es coherente y puede ser representada. En consecuencia una creencia puede ser verdadera o falsa. Hipótesis se define como una creencia justificada que no se conoce sea verdadera. Una hipótesis es una creencia que está respaldada por cierta evidencia, pero todavía puede resultar falsa. Finalmente, se puede también decir que conocimiento es una creencia justificada como verdadera. Otros términos relacionados con el conocimiento y que son ocasionalmente empleados son epistemología y metaconocimiento. Epistemología es el estudio de la naturaleza del conocimiento, mientras que metaconocimiento es conocimiento acerca del conocimiento, esto es, conocimiento acerca de lo que se conoce. El conocimiento puede ser de tipo procedimental, declarativo o heurístico. Conocimiento procedimental es aquel conocimiento compilado que se refiere a la forma de realizar una cierta tarea (el saber como hacerlo). Por ejemplo, los pasos necesarios para resolver una ecuación algebraica son expresados como conocimiento procedimental. Por otro lado, el conocimiento declarativo es conocimiento pasivo, expresado como sentencias acerca de los hechos del mundo que nos rodea (el saber que hacer). La información personal en una base de datos es un típico ejemplo de conocimiento declarativo. Tales tipos de datos son piezas explícitas de conocimiento independiente. El conocimiento heurístico es un tipo especial de conocimiento usado por los humanos para resolver problemas complejos. El adjetivo heurístico significa medio para descubrir. Está relacionado con la palabra griega heuriskein que significa descubrir, encontrar. Se entiende por heurístico a un criterio, estrategia, método o truco utilizado para simplificar la solución de problemas. El conocimiento heurístico usualmente se lo adquiere a través de mucha experiencia. El proceso de organizar y coleccionar el conocimiento es llamado ingeniería del conocimiento. Es tal vez la parte más difícil y la que consume más tiempo en cualquier proceso que desarrolla software de IA. Dado que el conocimiento es importante y primordial para el comportamiento inteligente, su representación constituye una de las máximas prioridades de la investigación en IA. El conocimiento puede ser representado como imágenes mentales en nuestros pensamientos, como palabras habladas o escritas en algún lenguaje, en forma gráfica o en imágenes, como cadenas de caracteres o colecciones de señales eléctricas o magnéticas dentro de un computador. En nuestro estudio de IA, consideraremos las representaciones escritas y sus correspondientes estructuras de datos utilizadas para su almacenamiento en un computador. La forma de representación que se escoja dependerá del tipo de problema a ser resuelto y de los métodos de inferencia disponibles. Existen diferentes esquemas de representar el conocimiento, abordaremos algunas formas de representarlo y aplicarlo de una manera adecuada para su manipulación en computadoras. Los esquemas de representación del conocimiento han sido categorizados como declarativos o procedimentales. Los métodos de representación declarativos se usan para representar factores y aserciones; y un esquema de representación procedimental trata con acciones descritas paso a paso para llegar a un resultado final. Los métodos de representación del conocimiento declarativos incluyen lógica, listas, árboles, redes semánticas, marcos y libretos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 27.
    Inteligencia Artificial. En términosgenerales, se debe tratar que el conocimiento esté representado de tal forma que: • Capture generalizaciones. • Pueda ser comprendido por todas las personas que vayan a proporcionarlo y procesarlo. • Pueda ser fácilmente modificado. • Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o completo. • Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería considerarse para buscar soluciones. El conocimiento declarativo puede ser representado con modelos relacionales y esquemas basados en lógica. Los modelos relacionales pueden representar el conocimiento en forma de árboles, grafos o redes semánticas. Los esquemas de representación lógica incluyen el uso de lógica proposicional y lógica de predicados. Los modelos procedimentales y sus esquemas de representación almacenan conocimiento en la forma de cómo hacer las cosas. Pueden estar caracterizados por gramáticas formales, usualmente implantadas por sistemas o lenguajes procedimentales y sistemas basados en reglas (sistemas de producción). Las representaciones declarativas son usualmente más expansivas y costosas, en el sentido que la enumeración puede ser redundante e ineficiente. Sin embargo, la modificación de las representaciones declarativas es usualmente muy fácil; simplemente se agrega o se elimina conocimiento. Las representaciones procedimentales, en cambio, pueden ser más compactas, sacrificando flexibilidad. Representaciones prácticas pueden incluir elementos tanto declarativos (listado de hechos conocidos), como procedimentales (un conjunto de reglas para manipular los hechos). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 28.
    Inteligencia Artificial. Manipulación delconocimiento Existen tres paradigmas que los investigadores han utilizado tradicionalmente para la resolución de problemas de IA: • Programación Heurística.- Está basado en el modelo de comportamiento humano y su estilo para resolver problemas complejos. Existen diversos tipos de programas que incluyen algoritmos heurísticos. Varios de ellos son capaces de aprender de su experiencia. • Redes Neuronales Artificiales.- Es una representación abstraída del modelo neuronal del cerebro humano. Las redes están formadas por un gran número de elementos simples y por sus interconexiones. Una red neuronal artificial puede ser simulada o ser real. Al elemento procesador de la red, se lo denomina neurona artificial. • Evolución Artificial.- Su modelo está basado en el proceso genético de evolución natural, propuesto por Charles Darwin. Se utilizan sistemas simulados en computador que evolucionan mediante operaciones de reproducción, mutación y cruce (Algoritmos Genéticos). Cada paradigma comprende una colección de métodos, configuraciones y técnicas desarrolladas para manipular el conocimiento. En general, una técnica de IA está caracterizada por incluir los siguientes componentes: • Procesos de Búsqueda.- Proporciona una forma de resolver problemas para los cuales no hay un método más directo, así como también se constituye en un marco de trabajo dentro del cual cualquier técnica directa puede ser incorporada. • Uso del Conocimiento.- Proporciona una forma de resolver problemas FUNDAMENTOS LÓGICOS EN INTELIGENCIA ARTIFICIAL Tal vez la forma más antigua de representar el conocimiento es la lógica. Esta trata el estudio científico de los procesos de razonamientos, de sistemas de reglas y procedimientos que ayudan al pensamiento adecuado. La lógica es considerada una subdivisión de la filosofía, su desarrollo y el refinamiento de sus procesos son generalmente acreditados a los griegos. La forma general de cualquier proceso lógico consiste de información dada, juicios hechos o de observaciones que son notadas; esto constituye las entradas al proceso lógico y son llamadas premisas. Las premisas son empleadas por el procesamiento lógico para crear las salidas que constituyen las conclusiones llamadas inferencias. Esto constituye hechos que son conocidos como verdaderos y pueden ser usados para derivar nuevos hechos que también deben ser verdaderos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 29.
    Inteligencia Artificial. FORMALISMOS PARAREPRESENTAR DEL CONOCIMIENTO LISTAS Y ÁRBOLES Son las estructuras más sencillas que se usan para representar un conocimiento jerárquico. Listas: Una lista es una serie de elementos del mismo tipo. Ejemplo: a) [Juan, Roberto, Ana, Inés ]: Lista de personas. b) [caramelos, galletas, bombones]: Cosas que se compran en una miscelánea. c) [clavos, bloques, cemento]: Productos de construcción. Lista 1 Cuadernos Libros Escritorio Escritorio Libros Madera Filosofía Metal Matemáticas Madera Historia Caoba Pino Representación gráfica y jerárquica de una lista. Árbol: Es una forma sencilla de ilustrar las listas y otros tipos de conocimiento jerárquicos. Ejemplo: Los nodos están representados por los círculos y las líneas que los unen son los arcos. REDES SEMÁNTICAS Es la representación esquemática del conocimiento mediante descripciones graficas que muestra una jerarquía relacional entre objetos. Se le denomina nodo a la representación de elementos del dominio y se muestran como rectángulos o círculos y son rotulados con los nombres de los elementos representados; y se denominan arcos a los enlaces desde un nodo a otro, se representan como un vector y se rotula con el nombre de las relaciones representadas. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 30.
    Inteligencia Artificial. Nodo =objeto Donde un Objeto puede ser representado por: 1. Personas 2. Animales 3. Eventos 5. Acciones 6. Conceptos 7. Atributos o características que identifican a un objeto. Existen ciertos tipos de Arcos típicos entre los cuales están. 1. ISA (Es-un): El cual usa para identificar que un cierto pertenece a una clase mayor de objeto. Ser _humano Es un Hombre Es un Manuel 2. HAVE-a (tiene-un), este tipo de arcos se utiliza para identificar que un cierto nodo tiene o pase una cierta características o atributo o propiedad. También se puede utilizar para representar situaciones, acciones y eventos. Propiedades de las Redes Semánticas Las redes Semánticas posen la propiedad de la Herencia; en la que unos nodos heredaron las propiedades o atributos de Nodos de una clase mayor. Así por ejemplo en las siguientes Red Semántica: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 31.
    Inteligencia Artificial. Nota: Através de la característica de la herencia, las Redes Semánticas tienen la capacidad de inferir conocimiento. Ejemplo de Red Semántica. Considera la anterior Red Semántica acerca de SAM y su familia. 1. Necesita Sam Alimento Si, por la herencia que recibe de los seres humanos. 2. Trabaja SAM para AJAX Si por característica o por propiedades de herencia ya que CME pertenece AJAX. Nota: En Redes Semánticas las inferencias de información o respuestas o preguntas se hacen con base en las propiedades de herencia que existen entre los Nodos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 32.
    Inteligencia Artificial. Ejemplo de Red Semántica: Roedor. Es_un Es_un Ejemplo de Red Semántica: Lassie. Tiene un Ti de en e po un Ti tiene Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 33.
    Inteligencia Artificial. Ejemplo de Red Semántica: Animal. puede Ti Ti de po po po de de Ti s ata vo come tiene p lar ne Tie Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 34.
    Inteligencia Artificial. Ejemplo de Red Semántica: Animal2. ANIMAL Es del tipo Es del tipo respira come tiene Esta formado por Aire Masa Miembros Alimentos PAJARO puede Alas PERSONA Es del tipo Está formado por Está formado por Un Representante Plumas Alas de Piernas Brazos CANARIO Un representante ARTURO color Trabaja en Amarillo Piolín NASA Un animal come alimento, respira aire, tiene masa y está formado por miembros. Una persona es del tipo animal, la cual hereda todas las características antes descritas del animal. Así también tenemos la posibilidad de detallar más sus cualidades como que tiene piernas y brazos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 35.
    Inteligencia Artificial. Ejercicios: Dado elsiguiente conocimiento construya la correspondiente Red Semántica. - Los Jorobados son personas pequeñas. - Bilbo es un jorobado. - Los jorobados tienen dedos gordos. - Bilbo posee un anillo mágico. - El anillo fue encontrado en una cueva. - Los jorobados son personas míticas y las personas míticas son estudiadas por los estudiantes de literatura. 1. ¿Qué posee Bilbo? Un anillo mágico. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 36.
    Inteligencia Artificial. FRAMES (MARCOS) UnFrames es una estructura de datos que contiene todo el conocimiento acerca de un objeto. Los Frames son organizados en forma jerárquica y esta característica es utilizada como medio para responder a Preguntas. Los Frames surgieron de la pregunta orientada a objetos. Cada frames describe un objeto en particular. Por lo tanto cada frames me representa una estructura de conocimiento en la cual se esta describiendo a un objeto, un evento o una situación ó cualesquier otro elemento. En los frames se describe el conocimiento acerca de un objeto utilizado SLOTS (Ranuras). Representación del conocimiento en una jerarquía de frames que heredan propiedades de frames del nivel superior. Modo de transporte Carro Ranura Generalidades Auto Ranura del carro Motor Ranura Especificaciones del Automóvil Tipos de SLOTS en los Frames 1. Hay Slot para describir Conocimiento Declarativo como lo es: - Peso de un Objeto. - La Altura - La forma - El color - Hobbies (leer, nadar, trotar) 2. Hay slots para describir conocimiento procedural (el cual se refiere a pequeños procesos que me identifica a ciertas funciones).Ejemplo: Velocidad, aceleración, trabajo, cálculo de energía, etc. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 37.
    Inteligencia Artificial. 3. Que identifican a las Reglas. Ejemplo: If máquina caliente THEN prender ventilador. 4. Un Slot puede indicar la conexión con otro FRAME 5. Un Slot puede indicar la conexión con otros frame de representación de conocimiento como lo son con las Redes Semánticas. FRAME de un Auto. -Clase; transportación -Nombre del fabricante; Audi -Origen del fabricante Nota: Una de las características de los frames es que un frame puede identificar a toda una familia de objetos. SCRIPT (LIBRETO) Este tipo de Representación de conocimiento es utilizado para representar secuencias de EVENTOS de tipo: - Historias Visitas al: - Dramas - Doctor. - Visitas - Restaurante - Viajes - Museo, etc. - Estética En los SCRIPTS o libretos intervienen elementos básicos como lo son: 1. Requerimientos de Entrada. 2. Roles o papeles de las personas o cosas que intervienen en el libreto. 3. Herramientas utilizadas por los diferentes participantes o actores. 4. Escenas. 5. Resultados. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 38.
    Inteligencia Artificial. Ejemplo 1.SCRIPT correspondiente a una visita al Restaurante de Auto-Servicio. Requerimiento de Entrada: - Hay un cliente que tiene hambre. - El cliente tiene dinero. Herramientas que intervienen: - carro - mostrador - dinero - palillos - bandeja - sal - bote de basura - cuchillo - alimentos - tenedor - catsup - cuchara - servilletas - mesa Roles o Papeles: - Hay un cliente (C) - Recepcionista (R) Escena 1: Entrada al Restaurante. - El cliente para el carro. - El (C) entra al Restaurante. - El (C) hace fila en el mostrador. - El (C) mira los distintos alimentos en la pared y decide cuales seleccionar. Escena 2: Ordenar. - El cliente lea la orden al (R). - El (R) comienza a poner los alimentos a la bandeja. - El (C) paga la orden. Escena 3: Comer. - El cliente toma servilletas, cuchillo, tenedor, cuchara, sal, palillos y salsa de tomate. - El (C) busca mesa. - El cliente consume los alimentos. Escena 4: Salida. - Recoge la basura de la mesa. - Vacía el contenido de la vasija en el bote de la basura. - Sale del restaurante. - Toma su carro. - Se va. Resultados: - Cliente ya no tiene hambre. - El (C) tiene menos dinero. - El (C) esta satisfecho. - El (C) no esta satisfecho. - El (C) trae dolor de estomago. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 39.
    Inteligencia Artificial. Ejemplo 2.SCRIPT correspondiente a una visita al cine. • PAPELES: cinéfilo, taquillero, portero, acomodador • CONDICIONES DE ENTRADA: cinéfilo desea ver película • PROPIEDADES O HERRAMIENTAS: película, butaca, dinero, entrada • ESCENAS: -Sacar entrada Cinéfilo: Deme butaca” a taquillero Cinéfilo: Dinero a taquillero Taquillero: Entrada a cinéfilo -Entrar en sala Cinéfilo: Entrada a portero Portero: Entrada a cinéfilo Cinéfilo: Cinéfilo a sala -Acomodarse ................... -Ver película .................. -Salir de sala .................. • RESULTADOS: -Cinéfilo ha visto la película -Taquillero tiene más dinero -Cinéfilo tiene menos dinero. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 40.
    Inteligencia Artificial. Lógica proposicional Lalógica proposicional trata con unidades básicas denominadas proposiciones. Una proporción es una expresión que tiene un valor de verdad (falso o verdadero, pero no ambos a la vez). Ejemplo: Mozart fue un compositor. (Verdadero) Todo compositor escribe música. (Verdadero) Un perro es un animal. (Verdadero) Un gato es un perro. (Falso) Estas proposiciones se pueden representar mediante p, q, r, s, ... y se les llama proposiciones simples o atómicas. Las proposiciones simples o atómicas son vinculadas o modificadas por los llamados conectores: ^ : = AND v : = OR ~ ¬ : = NOT => : = Implicación := Doble implicación Y son llamadas proposiciones compuestas o moleculares. Ejemplo: p: Mozart fue un compositor. ~ p : Mozart no fue un compositor. q: Mozart escribió música. p ^ q: Mozart fue un compositor y escribió música. p v q: Mozart fue un compositor o escribió música. p => q: Si Mozart fue un compositor entonces escribió música. p q: Mozart fue un compositor si y solo si escribió música. En el caso de las proposiciones simples asignarles su valor de verdad es obvio, se requiere tener un conocimiento claro de los hechos relacionados a la proposición. En cambio para las proposiciones compuestas se deben seguir ciertas reglas que señalaremos en la tabla siguiente: p q ~p p^q pvq p => q p q V V F V V V V V F F F V F F F V V F F V F F F V F F V V 1 2 3 4 5 6 7 Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 41.
    Inteligencia Artificial. Negación: ~p Toma el valor de verdad opuesto al de la proposición p, o sea, si la proposición p es verdadera la negación ~ p es falsa y viceversa. Como se observa en la columna 3. Conjunción: p ^ q Toma el valor de verdadero solo cuando ambas miembros son verdaderos. En cualquier otro caso es falsa. Como se observa en la columna 4. Disyunción: p v q Toma el valor falso cuando ambos miembros son falsos. En cualquier otro caso es verdadera. Como se observa en la columna 5. Condicional: p => q Si el antecedente es verdadero y el consecuente es falso, la condicional es falsa. En cualquier otro caso es verdadera. Como se observa en la columna 6. Bicondicional: p q Cuando ambos miembros tienen el mismo valor de verdad, la bicondicional es verdadera. En cualquier otro caso es falsa. Como se observa en la columna 7. Las variables, también pueden ser cuantificadas. Los cuantificadores que típicamente se utilizan en lógica de predicados son: • El cuantificador universal; ∀ indica que la fórmula bien formada, dentro de su alcance, es verdadera para todos los valores posibles de la variable que es cuantificada. Por ejemplo: ∀X.... Establece que "para todo X, es verdad que . . . " • El cuantificador existencial;∃ , indica que la fórmula bien formada, dentro de su alcance, es verdadera para algún valor o valores dentro del dominio. Por ejemplo: ∃X.... Establece que "existe un X, tal que . . . " A continuación se dan algunos ejemplos de predicados cuantificados: ∀ X, [niño (X) => le_gusta (X, helados)]. (∀X)(persona(X)) =>mortal(X) ∀ Y, [mamífero (Y) => nace (Y, vivo)]. (∀X)(perro(X)) =>mortal(X) ∃ Z, [cartero(Z) ^ mordió (boby, Z)]. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 42.
    Inteligencia Artificial. Desde elpunto vista de representación, los cuantificadores son difíciles de usar. Por lo que es deseable reemplazarlos con alguna representación equivalente, más fácil de manipular. El caso del cuantificador universal es más simple ya que se asume a todas las variables como universalmente cuantificadas. El cuantificador existencial es más difícil de reemplazar. El cuantificador existencial garantiza la existencia de uno o más valores particulares (instancias) de la variable cuantificada, que hace a la cláusula verdadera. Si se asume que existe una función capaz de determinar los valores de la variable que hace la cláusula verdadera, entonces simplemente se remueve el cuantificador existencial y se reemplaza las variables por la función que retorna dichos valores. Para la resolución de problemas reales, esta función, llamada función de Skolem, debe ser conocida y definida. Forma proposicional o función: p(x) Es aquella expresión que tiene un elemento desconocido, x , que al ser instanciado hace que la expresión se convierta en una proposición. Ejemplo: p (x): x es un mamífero. Si x se instancia con “clavo”, o sea, x = clavo. La forma proposicional se convierte en la proposición: p (clavo): clavo es un mamífero. (Falso) Si x se instancia con “gato”, o sea, x = gato. La forma proposicional se convierte en la proposición: p (gato): gato es un mamífero. (Verdadero) Los valores de x estan presente en un conjunto llamado dominio. Si todos los elementos del dominio hacen verdadera la proposición se utiliza el cuantificador universal “∀”. Si solo algunos elementos del dominio hacen verdadera la proposición se utiliza el cuantificador existencial “∃”. Ejemplo: 1. Sea la forma proposicional “p ( x ): x es una letra ” Dominio: x = { (x, p ( x )) | p ( x ): x es una letra } = { a, b, c, d, e} Instanciando tenemos: x = a, p(a): a es una letra. (Verdadero) x = e, p(e): e es una letra. (Verdadero) Todos los elementos del dominio cumplen la forma proposicional, esto se indica de la manera siguiente: ∀x, p( x ): para todo x, x es una letra. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 43.
    Inteligencia Artificial. 2. Seala forma proposicional “p (x ): x es un número par ” Dominio: x = { (x, p ( x )) | p ( x ): x es un número par } = {1, 2, 5 } Instanciando tenemos: x = 1, p(1): 1 es un número par. (Falso) x = 2, p(2): 2 es un número par. (Verdadero) x = 5, p(5): 5 es un número par. (Falso) Existen algunos elementos del dominio que cumplen la forma proposicional, esto se indica de la manera siguiente: ∃x, p( x ): existe algún x, x es un numero par. Lógica de predicados. La lógica de predicados se refiere o sirve para identificar una relación existente entre elementos llamados argumentos, entre paréntesis o bien identifica a la propiedad o característica de los argumentos en el paréntesis, o bien identifica el nombre de la clase a la que pertenecen los argumentos. Se expresa de la manera siguiente: PREDICADO (ARG1,ARG2,...,ARGN) NOMBRE NOMBRE DEL DEL PREDICADO ARGUMENTO Nota: Los argumentos siempre (usualmente) son SUSTANTIVOS. Ejemplo: 1 El limón y el chile serrano son verdes: Son_verde (limón, chile serrano) 2 La pitaya es roja y la manzana es roja: roja (pitaya, manzana) 3 El limón es verde: Verde (limón) 4 El perro ladra: ladra (perro) 5 Todos los mamíferos son de sangre caliente: ∀x [ mamíferos (x) => sangre _ caliente(x)] 6 Todo satélite terrestre tiene un punto sobre la Tierra: ∀x {satélite_terrestre(x) =>∃y [tiene (x, punto) ^ sobre(y, Tierra)]} La lógica de predicados esta formado por un conjunto de predicados concatenados a través de las operaciones lógicas: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 44.
    Inteligencia Artificial. Operaciones lógicas: ^ : = AND v : = OR ~ ¬ : = NOT => : = Implicación := Doble implicación ∀ : = Para todo ∃ : = Existe Jerarquía de las operaciones lógicas (orden de mayor a menor) 1. Se ejecutan primero las agrupaciones: ( ) 2. ~ : not 3. ^ : and 4. v : OR 5. => : Implicación (Si ... Entonces ... ) 6. := Doble implicación (... si y solo si ...) Sintaxis en la lógica de Predicados. Aquí se maneja la siguiente simbología. - variables x, y, z - funciones f, g, h - constantes a, b, c -Símbolo de predicado P, Q, R, S, T -Símbolos de apuntación "(", ")", "," Aunado a estos símbolos se utilizan los siguientes conceptos. UNIVERSO: El cual identifica a la totalidad de los valores que puede tomar una variable. TERMINO: Una variable es un termino, x, y, z. Así como f(t) donde f es una función y “t” es una secuencia de uno o mas términos. Ejemplo: f(x), h(y), g( x, y, h(x)), f( h(x, y), y(z, f(z) ) FORMULA ATOMATICA: Una formula automática es un predicado p(x), donde P es el nombre del predicado y “x” es un termino. Ejemplo: Es-verde (limón), mamífero (Pedro), mamífero (ballena, delfín, cabra) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 45.
    Inteligencia Artificial. LITERAL: Losliterales son predicados o negaciones de predicados. Ejemplo: mamífero (Pedro) ~ mamífero (vidrio) FORMULAS BIEN FORMADAS (FBF): Una FBF es una secuencias de formulas Atómicas (o predicados) concatenados por medio de operadores lógicos. Ejemplo: P(x) v Q(y) ^ ~R (S) P(x) ^ Q(z) ==> ~R(s) mamífero(perro) => tiene_sangre_caliente(perro) SENTENCE: Las expresiones son FBF donde el alcance de las variables esta perfectamente bien definido mediante cuantificadores o bien UNIVERSALES ó bien EXISTENCIALES. Símbolos: ∀ Para todo(cuantificador Universal) ∃ Existe(Cuantificadores Existencial) ~∃ ≡ ∀ ~∀ ≡ ∃ Ejemplo: Todos los hijos tienen un padre y una Madre ∀x [mamífero(x) => tiene_sangre_caliente(x) ] ∀x [hijo(x) => ∃y ( madre(y)^ padre(z)) ] CLAUSULA: Es una disyunción de literales (una cláusula es una disyunción de predicados y/o predicados negados. Ejemplos. Conjunción: And (^) Disyunción: OR (V) P(x) v Q(y) v~ R(s) R(y) v ~ Q(z) Lógica de predicado de primer orden. La lógica de predicados de primer orden esta formado por un conjunto de predicados concatenados por operadores lógicos. Ejemplo: Hermano (x, y ): x es hermano de y. Hijo (x, y ): x es hijo de y. Lógica de Predicado de Orden Superior: Es cuando una variable y una función toman sus valores de un mismo dominio. Ejemplo: Hermano (x, hijo(a, y)): x es tío de a. [Predicado de Segundo Orden] Colega (b, hermano (x, hijo(a, y))): “b” es colega del tío de “a”. [Tercer Orden] Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 46.
    Inteligencia Artificial. Sistema: Unsistema en la lógica de predicados de primer orden esta formado por un conjunto EXPRESIONES cada uno de los cuales tiene un valor de verdad (verdadero o falso). Operaciones relacionadas con la lógica de predicados. La Asociatividad A v (B V C) = (A v B) v C A ^ (B ^ C) = (A ^ B) ^ C La Distributividad A ^ (B v C) = (A^ B) v (A ^ C) A v (B ^ C) = (A v B ) ^ (A v C) Leyes de Morgan. ~ (A v B) = ~ A ^ ~ B ~ (A ^ B) = ~ A v ~B Conmutativa AvB=BvA A^ B = B ^ A Ley de idempotencia A^A=A AvA=A Ley de la no contradicción ~ (A ^ ~ A) = 1 Ley del tercio excluso A v ~ A) = 1 Ley de la identidad A => A = 1 A A=1 Definición de la equivalencia mediante la conjunción y la implicación: A B = A=> B ^ B => A Av1=1 A^1=A Av0=A A^0=0 A^~A=0 Ley de la eliminación de la doble negación ~ ~ A = A Ejemplos: Convertir las siguientes proposiciones a lógica de predicados (FBF). (Sistema que describe parte del mundo Romano). 1. Marco fue un hombre: hombre (Marco) 2. Marco fue pompeyano: pompeyano (Marco) 3. Todos los pompeyanos fueron Romanos: ∀x [Pompeyanos(x) => Romano(x)] 4. Cesar fue un rey: Rey (Cesar) 5. Todos los Romanos eran leales a Cesar o lo odiaban: ∀x [ Romanos(x) =>leal(x,Cesar) v odiaba(x, Cesar) ] 6. Todos son leales a alguien: ∀x [∃y leal(x, y)]; ∀x[ (∃(alguien), leal (x, alguien)) ] 7. La gente que trata a los reyes son los no leales: ∀x ∀y [gente (x) ^ Rey (y) ^ trata_de_asesinar (x, y) => ~ leal(x, y) ] 8. Marco trata de Asesinar a Cesar: Trata_de_ Asesinar(Marco, Cesar) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 47.
    Inteligencia Artificial. Formas deSkolem 1. Eliminar todas las implicaciones. Ejemplo: A=> B se convierten en ~A v B 2. Correr las negaciones hasta los predicados correspondientes (Distribuir las negaciones entre los predicados) Ejemplo: ~ ( P(x) ^ Q(y) ) eq ~ P(x) v ~Q(y) 3. Distribuir cuantificadores entre los predicados correspondientes. (Corregir cuantificadores o deslizarlos hasta los correspondientes predicados, considerando el mismo orden) Ejemplo: ∀x ∀y P(x) ^ Q(y) es equivalente a ∀x P(x) ^ ∀y Q(y) 4. Eliminar los Cuantificadores Existenciales 4.1 Convirtiéndolos a constantes cuando aparecen sin un cuantificador universal. Ejemplo: ∃x p(x) equivale a p(pato) ∃x Ave(x) equivale a Ave(pato) 4.1 Convirtiéndolos a funciones cuando aparezcan acompañados de un cuantificador universal. Ejemplo: ∀x ∃y P(x, y) equivale a P(x, f(x) ) f:= {(x, y) / y = f(x) } 5. Eliminar todos los Cuantificadores Universales. Ejemplo: ∀x ∀y P(x) ^ Q(y) equivale a P(x) ^ Q(y) 6. Convertir las conjunciones (AND'S) en disyunciones (OR'S).Obteniendo una cláusula por cada elemento de la conjunción. Ejemplo: 1. P(x) ^ Q(y) No concebimos la libertad sin cultura; 1.1 P(x) ni la cultura sin pan; ni el pan sin 1.2 Q(y) trabajo honrado; ni el trabajo honrado 2. P(x) ^ ( Q(y) v R(z) ) sin respeto a la dignidad del hombre; 2.1 P(x) ni el respeto a la dignidad del hombre 2.2 Q(y) v R(z) sin amor a Dios. 3. P(x) ^ ( Q(y) ^ R(z) ) 3.1 P(x) 3.2 Q(y) 3.3 R(z) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 48.
    Inteligencia Artificial. Universidad Nacionalde Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 49.
    Inteligencia Artificial. 2.3. Inferencia Lainferencia en la lógica formal es el proceso de generar nuevas formulas bien formadas (FBF) a partir de FBF existentes, mediante la aplicación de las reglas de inferencias Reglas para la extracción de conocimiento de sistemas en lógica de predicados. 1. Modus Ponens la cual dice que si: A => B es verdadero y A es verdadero => B es verdadero 2. Modus Tolen. La cual dice que si: A => B es verdadero y ~ B es verdadero => ~ A es verdadero. 3. La Regla de Resolución dice que si: a1 v a2 es verdadero y ~ a2 v a3 es verdadero => a1 v a3 es verdadero Nota: A => B es equivalente ~A V B a) Reglas de Producción Un sistema de producción proporciona una estructura que facilita la descripción y la ejecución de un proceso de búsqueda. Un sistema de producción consiste de: • Un conjunto de facilidades para la definición de reglas. • Mecanismos para acceder a una o más bases de conocimientos y datos. • Una estrategia de control que especifica el orden en el que las reglas son procesadas, y la forma de resolver los conflictos que pueden aparecer cuando varias reglas coinciden simultáneamente. • Un mecanismo que se encarga de ir aplicando las reglas. Dentro de esta definición general de sistema de producción, se incluyen: • Lenguajes básicos para sistemas de producción (LISP, CLIPS, PROLOG). También se los conoce como lenguajes de Inteligencia Artificial. • Sistemas híbridos y sistemas vacíos (shells) para producción de sistemas basados en conocimientos (VP-Expert, Expert Teach, Personal Consultant, Intelligence Compiler, EXSYS). • Arquitecturas generales para resolución de problemas (máquinas LISP, máquinas PROLOG). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 50.
    Inteligencia Artificial. Características delos Sistemas de Producción Un sistema de producción, al igual que los problemas, puede ser descrito por un conjunto de características que permiten visualizar la mejor forma en que puede ser implementado. Un sistema de producción se dice que es monotónico si la aplicación de un regla nunca evita que más tarde se pueda aplicar otra regla que también pudo ser aplicada al momento en que la primera fue seleccionada. Un sistema de producción es parcialmente conmutativo si existe un conjunto de reglas que al aplicarse en una secuencia particular transforma un estado A en otro B, y si con la aplicación de cualquier permutación posible de dichas reglas se puede lograr el mismo resultado. Un sistema de producción es conmutativo, si es monotónico y parcialmente conmutativo. SISTEMA DE PRODUCCIÓN MONOTÓNICO NO-MONOTÓNICO PARCIALMENTE CONMUTATIVO Demostración de Teoremas Navegación Robótica PARCIALMENTE NO CONMUTATIVO Síntesis Química Juego de Ajedrez La parte condicional de una regla de producción llamado Lado Izquierdo (LI), consiste en una serie de elementos que describen las condiciones que deben ser verdaderas para que la regla sea aplicable. La parte de la acción de la regla llamada Lado Derecha (LD), describe las acciones que se van a llevar a cabo cuando se dispara la regla (ejecución). Ejemplo: Desarrolle una regla de producción que represente: 1) “Al aplicar el freno el automóvil de Juan se detiene”. (p accionar _ freno (Automóvil de Juan ^ freno aplicado) (modificar ^ movimiento interrumpido)) Esta producción llamada accionar _ freno, indica que si el valor del atributo “freno” para el elemento de memoria automóvil de Juan viene a ser igual al valor aplicado, entonces el valor del atributo”movimiento” debe modificarse al valor de “interrumpido”. Utilizando Reglas Una regla es una representación del tipo If condición 1 : condición n THEN conclusion 1 : conclusión n Ejemplo. If esta lloviendo then saco mi paraguas. If tengo hambre then como alimentos. If tengo examen then debo estudiar OR Sentarme al lado de alguien. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 51.
    Inteligencia Artificial. Regla =Producción Sistemas Basados en Reglas eq Sistemas de Producción. Ejemplo: Sistemas Deductivo basados en Reglas: • Para identificar animales de un zoológico: R1: If x tiene pelo THEN x es mamífero. R2: If x da leche THEN x es mamífero. R3: If x tiene plumas THEN x es ave. R4: If x vuela AND x pone huevos THEN x es ave. R5: If x es mamífero AND x come carne THEN x es carnívoro R6: If x es mamífero AND x tiene dientes agudos AND x tiene garras AND x tiene ojos que miran hacia adelante THEN x es carnívoro. R7: If x es mamífero AND x tiene cascos (pesuñas) THEN x es un ungulado. R8: If x es mamífero AND x mastica (rumia) hierba THEN x es un ungulado AND tiene dedos. • Reglas para identificar animales carnívoros: R9: If x es carnívoro AND x tiene color aleonado AND x tiene manchas obscuras THEN x es chita (cheetan). R10: If x es carnívoro AND x tiene color aleonado AND x tiene rayas negras THEN x es un tigre. • Reglas para identificar ungulados: R11: If x es ungulado AND x tiene patas largas AND x tiene cuello largo AND x tiene color aleonado AND x tiene manchas obscuras THEN x es una jirafa. Ahora supongamos que el encargado del zoológico conoce que: 1. Un animal tiene color aleonado y manchas obscuras. De acuerdo a estos datos las Reglas 9 y 11 son candidatas a dispararse, haciéndole hasta cumplir la totalidad de condiciones. 2. El animal puede amamantar y rumia hierbas, con la cual la Regla 2 se dispara produciéndose ahora que x es un mamífero, lo cual a su vez ocasiona que se dispare la regla 8 produciendo (o conociéndose ahora) que x es un ungulado y tiene dedos. 3. X tiene patas largas y cuello largo. Lo cual hace que se dispare la regla 11, con la cual el sistema de producción concluye que x es una jirafa. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 52.
    Inteligencia Artificial. Problema: Usted estainiciando una noche tranquila cuando un viejo amigo le llama y le dice que viene a cenar. Peor lo cual usted inmediatamente comienza a hacer los preparativos correspondientes y usted posee un Sistema Experto para seleccionar las bebidas. Las Reglas que identifican a su Experto en bebidas son las siguientes: B1: If un vino caro es el indicado AND es Año Nuevo THEN el vino es lo indicado. B2: If un vino caro es el indicado AND el plato principal es Carne Roja(Steak) THEN seleccionar Chateau Earl of Bartoville Red. B3: If un vino barato es el indicado AND plato principal es Pollo AND el invitado no es bien visto THEN seleccione Honest Henry's Apple Wine. B4: If un vino barato es el indicado AND plato principal desconocido THEN seleccionar Toe Lokes Roses. B5: If cerveza es lo indicado AND el plato principal es Mexicano THEN seleccionar xx. B6: If cerveza es lo indicado THEN seleccionar Tecate. B7: If el invitado es escrupuloso con los alimentos THEN seleccionar Glop. B8: If el invitado es escrupuloso AND no se sirven zanahorias THEN seleccionar Jugo de Zanahoria. B9: If vino es lo indicado AND la visita debe ser impresionada THEN un vino caro es lo indicado. B10: If un vino es lo indicado THEN un vino barato es lo indicado. B11: If el invitado es sofisticado THEN vino es lo indicado. B12: If el plato principal es mexicano THEN cerveza es lo indicado. B13: If el invitado es indeseable AND el plato principal es comprado a la Abastecedora el Buen Morir THEN cerveza es lo indicado. B14: If el Plato principal no importa es cualquier cosa THEN seleccione agua. Asumiendo que se dan los siguientes hechos como sabidos: 1. El plato principal es comprado a la Abastecedora el Buen Morir. 2. El plato principal es Mejicano. 3. El invitado es indeseable (no bien visto) 4. Es Año Nuevo. 6. El plato principal es Pollo. Mostrar la secuencia en que las Reglas son usadas y diga cuando son disparadas. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 53.
    Inteligencia Artificial. Respuesta: Con eldato 4 se dispara regla 1. 7. El vino es lo indicado. Con el dato 7 se dispara regla 10. 8. Un vino barato es lo indicado. Con el dato 3,6,8 se dispara regla 3. 9. Seleccionar Honest Henry's Con el dato 2 se dispara regla 12. 10. Cerveza es lo indicado. Con el dato 10, 2 se dispara regla 5. 11. Seleccionar xx Con el dato 10 se dispara regla 6. 12. Seleccionar Tecate Con el dato 1, 3 se dispara regla 13. 13.Cerveza es lo indicado Cláusulas de Horn Las cláusulas de Horn trabaja con el Modus Ponens, tomando como verdadero el consecuente cuando se tiene como verdadero el antecedente. A =>B, Si A es verdadero, entonces B es verdadero. Forma Canónica: La Forma Canónica de Modus Ponens determina que cada oración de la base de conocimientos sea una oración atómica o una implicación con una conjunción de oraciones atómicas en el lado izquierdo y un solo átomo a la derecha. Al tipo de oraciones que cumplen con la forma Canónica del Modus Ponens se les denomina oraciones de Horn; a la base de conocimientos formadas exclusivamente por oraciones de Horn se dice que está en “Forma normal de Horn”. Ejemplo: 1) Proyectil (x) Posee (y, x ) Proyectil (x ) ^ Posee (y, x ) => Vende (z, y, x ) Aplicando Modus Ponens se concluye: Vende (z, y, x) 2) Mamífero (x) Tiene_pelo (x) Es _ cuadrúpedo (x) Tiene _ rayas (x) Tigre (x) Mamífero (x) ^ Tiene_pelo (x) ^ Es _ cuadrúpedo (x) ^ Tiene _ rayas (x) => Tigre (x) Aplicando Modus Ponens se concluye: Tigre (x) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 54.
    Inteligencia Artificial. Ejercicios: Las expresiones¿Cómo llegaste? ¿Qué estudias? ¿Habla usted inglés? No son proposiciones, pues de su significado no se puede decir si es falso o verdadero. Las órdenes que se dan a otra persona tampoco son proposiciones. ¿Cuáles de las expresiones siguientes son proposiciones? De las que no son diga por qué. 1. Todas las naranjas son amarillas 2. Un rectángulo es una figura verde 3. Medellín es la ciudad de la eterna primavera 4. Hay triángulos que son rectángulos 5. Algunas manzanas son rojas 6. El frío es una ciencia 7. La filosofía es cuadrada 8. El universo es suave 9. El sol saldrá mañana 10. El banano es una fruta que ríe 11. Todos los triángulos son isósceles 12. Tómese la medicina 13. ¿Cuáles son proposiciones? 14. El reconocimiento del pasado es separable del reconocimiento del futuro. 15. El reconocimiento del futuro es separable del reconocimiento del pasado 16. El conocimiento del pasado es posible 17. El conocimiento del futuro es posible 18. Nada triunfa como el éxito 19. Nada fracasa al final como el éxito. Escribir en lógica proposicional: • El gato es azul y come queso verde • Permaneceré en casa si llueve • Mañana es Martes o es Miércoles • El ser número par implica ser entero • Si es un número par, entonces también es entero • Es número par sólo si es entero • Es número entero, si es par • Es entero siempre que sea par • El ser número par es condición suficiente para ser entero • Ser número entero es condición necesaria para ser par • Si el cuadrilátero ABCD es un cuadrado entonces sus lados son iguales. • La aceleración de un cuerpo es proporcional al producto de su masa por la fuerza ejercida sobre él. • Juan es alto. • Juan es tío de María. • Todos los majadistanenses son de Majadistán. Rudistein es Majadistanense. En consecuencia, Rudistein es de Majadistan. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 55.
    Inteligencia Artificial. • Los cantantes no duermen. • Comer mucho, engorda • Las montañas cantan bonito • Los mosquitos viven menos de un año • El hombre desciende del elefante. • El coronel no tienen quien le escriba. • La jubilación del Coronel Buendía es insuficiente para su familia. • El tejo es un deporte. • El Sol es una estrella. • El amor es un sentimiento sublime. • La lógica es ciencia o disciplina. • Todo está en movimiento. • Toda x que es estática implica que no está en movimiento. • Todos los deportes son saludables. • Todo trabajo debe ser pagado. • Si las elecciones son limpias entonces no son fraudulentas. • Todos los animales tienen un cerebro. • Si dos terminales están conectadas, entonces tienen la misma señal. o ∀x ∀y CONECTADO(x,y) ⇒ ( SEÑAL(x) = SEÑAL(y) ) • La expresión CONECTADO es conmutativa. o ∀x∀y CONECTADO(x,y) ⇒ CONECTADO(y,x). • Es delincuente aquella persona quien vende armas a naciones enemigas o ∀x∀y∀z PERSONA (x) ∧ARMA(y) ∧ NACION(z) ∧ ENEMIGO(z) ∧ VENDE(X,Y,Z) ⇒ DELINCUENTE(x) • Todas las personas aman a alguien. o ∀x, ∃y AMAR(x, y) • Si algo vale la pena entonces no puede obtenerse fácilmente. ∀x ValerLaPena(x) ⇒ ¬PoderObtenerseFacilmente(x) • Todos los caballos de carreras son de pura raza ∀x CaballoCarreras(x) ⇒ PuraRaza(x) • Para ser admitidos tienen que ser socios. o ∀x Admitido(x) ⇒ Socio(x) • A algunas mujeres no les gusta el fútbol. o ∃x Mujer(x) ∧ ¬Gustar(x, futbol) //futbol es una constante • Todos quieren ver el mundial de fútbol. o ∀x QuererVer(x, MundialFutbol) • Algunos temas musicales están pasados de moda o suenan mal o ∃x TemaMusical(x) ∧ ( PasadosDeModa(x)∨ SuenaMal(x) ) • Cualquier mono es un animal peludo. • Todo elefante que no sea miedoso o es un mono o es un ratón. • Todos los seres vivos son mortales, Todos los humanos son seres vivos; luego Todos los humanos son mortales. • Todas las personas educadas son atentas. Algunos funcionarios no son atentos, luego Algunos funcionarios no son personas educadas. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 56.
    Inteligencia Artificial. • Todos los ácidos son corrosivos. Todos los ácidos tienen hidrógeno; luego Algo que tenga hidrógeno es corrosivo. • Ningún gas tiene volumen constante. Todos los gases son cuerpos; luego Algunos cuerpos no tienen volumen constante. • Todos los atletas cuidan su salud. Nadie que cuida su salud es vicioso; luego Nadie que sea vicioso es atleta. • Algunas plantas tienen flores. • Un hijo de Príamo mató a un hijo de Peleo. • Un aqueo mató a todos los hijos de Príamo • Algunos sobrevivientes de la guerra amaron a Elena • Todos los hijos de Héctor murieron a manos de algún aqueo. • Ningún personaje de la Iliada mató a Eneas. • Elena amó a uno de los hijos de Príamo. • Si alguien vive es por que no lo ha matado algo. • Cualquiera que conoce algo acerca de la lógica le gusta la lógica. • Ningún dragón que vive en un zoológico sería feliz. • Cualquier animal que conoce a gente agradable es feliz. • Las personas que visitan zoológicos son agradables. • Los animales que viven en zoológicos conocen a gente que visita zoológicos. • Colombia pertenece a América. • Bolívar libertó a Colombia. • El agua es un mineral. • La palabra “esdrújula” es esdrújula. • La Tierra es redonda. • Venus es uno de los planetas del sistema solar. • Entrarás sólo si has llegado a tiempo. • A no ser que consigas un aprobado en alguna asignatura, te echarán de la facultad. • Sólo lograrás que lo declaren culpable si aparece un testigo que refrende tu versión de los hechos. • Cuando apruebas todas las asignaturas te dan el título. • Cuando empieza a amanecer el gallo canta. • Juan vendrá única y exclusivamente si María se lo pide. • Vienes o te quedas • Antonio viaja en avión o en carro. • María será doctora en filosofía si y solo si defiende con éxito su tesis doctoral. • Ni contigo ni sin ti tienen mis males remedio • No es cierto que quiera y no pueda Formalice en lógica de predicados y analice si la conclusión corresponde a la hipótesis. • Si tengo tiempo, estudiaré y trabajaré. Tengo tiempo o tengo ánimo para emprender nuevas actividades. No tengo tiempo. Entonces trabajaré. • Si las lluvias aumentan, el caudal de los ríos crece. Si el caudal de los ríos crece, hay que construir represas que controlen el flujo del agua. No es verdad que no se construyan Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 57.
    Inteligencia Artificial. tales represas o que haya escasez de pozos. Por lo tanto, las lluvias aumentan o hay escasez de pozos. • Si me gusta el arte, voy a la exposición de pintura o a ver danza moderna. Si estoy enfermo o no me gusta el arte, entonces me queda en casa. No me quedo en casa. En consecuencia, si no voy a la exposición de pintura, voy a ver danza moderna. • Si Alberto estudia medicina, Fernando le dará ayuda económica. Si la situación económica permanece estable, Alberto estudia medicina y Ricardo estudia computación. Si Fernando da ayuda económica a Alberto, Martha se disgustará con Fernando. Entonces, si Ricardo no estudia computación, Martha se disgustará con Fernando. • Mis amigos son sinceros o algunos disimulan. Pero si son honestos no deben disimular lo que sienten. Así, si mis amigos son sinceros, deben ser honestos. • Si armando tiró un árbol, lo vio la policía. Armando deberá pagar una multa si lo vio la policía. Como él está en la delegación, no deberá pagar una multa. Entonces tiró un árbol y está detenido en la delegación. • Si voy a la fiesta, no termino de estudiar. Si es viernes, no voy al cine. Si es viernes y no termino de estudiar, entonces voy a la fiesta. En consecuencia, voy al cine. • Los fenómenos atmosféricos se originan si los electrones chocan entre sí. Al pasar esto último, las cargas eléctricas se polarizan o se producen grandes tensiones electromagnéticas. Si se producen grandes tensiones electromagnéticas, se producen campos magnéticos que entran en choque. Los campos magnéticos entran en choque y se producen rayos. Por tanto, si los electrones chocan entre sí, entonces se producen rayos. • Isabel opinaba que el Dr. Juárez era demasiado viejo para casarse. Si la conducta de Isabel fuera siempre coherente con sus opiniones y si opinaba que el Dr. Juárez era demasiado viejo para casarse, entonces no se casaría con él. Pero Isabel se casó con el Dr. Juárez. Así, la conducta de Isabel no es siempre coherente con sus opiniones. • Pedro y Jaime son de la misma edad o Pedro es mayor que Jaime. Si Pedro y Jaime son de la misma edad, entonces Elena y Pedro no tienen la misma edad. Si Pedro es mayor que Jaime, entonces Pedro es mayor que Marcela. Así que o Elena y Pedro no son de la misma edad o Pedro es mayor que Marcela. • La inmortalidad existe si y sólo si el espíritu existe. Si lo que vemos es real, la sabiduría no es tan difícil de obtener El espíritu existe o la sabiduría no es tan difícil de obtener. Por tanto, si lo que vemos es real, la inmortalidad existe. Rescriba los siguientes fragmentos de “Cien años de Soledad” del escritor Gabriel García Márquez, como expresiones de lógica de predicados: • “Muchos años después, frente al pelotón de fusilamiento, el Coronel Aureliano Buendía había de recordar aquella tarde remota en que su padre lo llevó a conocer el hielo. ...” . MUCHOSAÑOSDESPUES( FUSILAR(PELOTONFUSILAMIENTO, CAB)∧ RECORDAR(CAB, TARDEREMOTA) ∧ LLEVAR(padre(CAB), CAB, CONOCER(CAB, HIELO)) ) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 58.
    Inteligencia Artificial. • “...Cuando el pelotón lo apuntó, la rabia se había materializado en una sustancia viscosa y amarga que le adormeció la lengua y lo obligó a cerrar los ojos. Entonces desapareció el resplandor de aluminio del amanecer, y volvió a verse a si mismo, muy niño, con pantalones cortos y un lazo en el cuello, y vio a su padre en una tarde espléndida conduciéndolo al interior de la carpa, y vio el hielo. Cuando oyó el grito, creyó que era la orden final al pelotón...”. Apuntar(Pelotón, CAB) ⇒ ( (Materializar(CAB, Rabia, SustanciaViscosaAmarga) ⇒ (Adormecer(CAB, Lengua) ∧ Cerrar(CAB, Ojos) ) ∧ Desaparecer(Resplandor(aluminio), Amanecer) ∧ Ver(CAB, Niño(PantalónCorto, LazoCuello) ∧ Ver (CAB, Padre(CAB) ) ∧ TardeEspléndida ∧ Conducir(Padre(CAB, InteriorCarpa) ∧ Ver(CAB, Hielo) ) ) ∧ Oir(CAB, Grito) ∧ Creer(CAB, OrdenFinal(Pelotón) ) • “...Entonces fue al castaño, pensando en el circo, y mientras orinaba trató de seguir pensando en el circo, pero ya no encontró el recuerdo. Metió la cabeza entre los hombros, como un pollito, y se quedó inmóvil con la frente apoyada en el tronco del castaño. La familia no se enteró hasta el día siguiente, a las once de la mañana, cuando Santa Sofía de la Piedad fue a tirar la basura en el traspatio y le llamó la atención que estuvieran bajando los gallinazos.”. Ir(CAB, Castaño) ∧ Pensar(CAB, Circo) ∧ Orinar(CAB) ∧TratarPensar(CAB, Circo) ∧ Pensar(CAB, Circo) ∧ ¬Encontrar(Recuerdo) ∧ Meter(CAB, Cabeza, hombros) ∧ Parecer(CAB, Pollit o) ∧ Inmovil(CAB) ∧ Apoya(CAB, Frente, Tronco(Castaño) ) ) ∧ Εnterar(Familia, DiazSiguiente, 11AM) ∧ Tirar(SantaSofía, Basura, Traspatio) ∧ LLamarAtenciónl(SantaSofía, Gallinazos) Con las siguientes diez expresiones, del dominio de la obra de “Don Quijote de la Mancha”, en lógica de predicados. Escriba una expresión en Español.: 1. ∃x ∃y (Escudero(x, y) ∧ ¬∃z Amigo(z, x) ) 2. ¬∀x (∃y Escudero(x, y) ⇒ Joven(x) ) 3. ∃x ¬( Caballero(x) ⇒ Joven(x) ) 4. ¬∃x ( Caballero(x) ∧ Joven(x) ) 5. ∃x ¬( Caballero(x) ⇒ ¬Joven(x) ) 6. ∃x ∃y (Escudero(x, y) ∧ ∀z ¬Amigo(z, x) ) 7. ∃x ∃y ¬(Escudero(x, y) ⇒ Joven(x) ) 8. ¬∀x ( Caballero(x) ⇒ Joven(x) ) 9. ∀x ¬( Caballero(x) ∧ Joven(x) ) 10. ¬∀x ( Caballero(x) ⇒ ¬Joven(x) ) Represente en Lógica de Predicado: • La tubería A alimenta el depósito B. Cuando una tubería alimenta un depósito, la derivada del nivel de éste es proporcional al caudal de aquella. Luego, la derivada del nivel de B es proporcional al caudal de A. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 59.
    Inteligencia Artificial. Conteste lapregunta efectuada a. Eduardo pudo haber visto al asesino. b. Antonio fue el primer testigo de la defensa c. Eduardo estaba en clase o Antonio dio testimonio falso. d. ¿Nadie en clase pudo haber visto al asesino? Conteste las dos preguntas efectuadas Todos los que ayudan a Juan viven en casa de Manuel Antonio ayuda a todos los que trabajan con èl Juan trabaja con todos los amigos de carlos Antonio es amigo de Carlos ¿Antonio vive en casa de Manuel ¿Juan trabaja con Antonio? • Si x es la madre de y, y si z es la hermana de x, entonces z es la tía de y. Supongamos ahora que la madre de Braulio es Juana, y que Lola es hermana de Juana. Demostrar que Lola es tía de Braulio. Realizar la comprobación lógica de los siguientes razonamientos. • Si los Piratas son terceros, entonces si los Apaches son segundos los Bravos serán quintos. O los Gigantes no serán primeros o los Piratas serán terceros. En efecto, los apaches serán segundos. Por lo tanto, si los Gigantes son primeros, entonces los Bravos serán quintos. • la Lógica es difícil o no le gusta a muchos estudiantes. Si la matemática es fácil, entonces la lógica no es difícil. Por tanto, si a muchos estudiantes les gusta la lógica, la matemática es fácil. • Si Antonio no es primero, entonces Pedro es primero. Pero Pedro no es primero. O Antonio es primero o pablo es tercero. Si Jaime es segundo, entonces Pablo no es tercero. Por tanto, jaime no es segndo. • Fue X o Y quien cometió el crimen. X estaba fuera del pueblo cuando el crimen fue cometido. Si X estaba fuera del pueblo, no pudo haber estado en la escena del crimen. Si X no estaba en la escena del crimen, no lo pudo haber cometido. Represente en Lógica de Predicado 1 Susie es una compañera de escuela de Calvin y lo considera un niño raro. El la molesta mucho y en invierno le lanza bolas de nieve. A Susie le gusta jugar a las casitas con Calvin, Hobbes y Mr Burn, su coneja de trapo. A Calvin no le gustan las niñas pero juega con Susie, entonces Calvin siente atracción por Susie o la odia. • niña(SUSIE) ∧ compañera(SUSIE, CALVIN) ∧ pensar(SUSIE, CALVIN, raro) • molestar(CALVIN, SUSIE) ∧ lanzar(CALVIN, BN, SUSIE) ∧ NIEVE(BN) ∧ haber(NIEVE, INVIERNO) • Conejo(Mr Burn) ∧ jugar(SUSIE, CASITAS) ∧ jugar(SUSIE, CALVIN) ∧ jugar(SUSIE, HOBBES) ∧ jugar(SUSIE, Mr Burn) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 60.
    Inteligencia Artificial. • ∀x[niñas(x) ∧ ¬gustar(CALVIN,x) ∧ jugar(CALVIN,SUSIE)] ⇒ atraer(SUSIE, CALVIN) • ∀x[niñas(x) ∧ ¬gustar(CALVIN,x) ∧ jugar(CALVIN,SUSIE)] ⇒ odiar(SUSIE, CALVIN) • ¬niñas(A) ∨ gustar(CALVIN,A) ∨ ¬ jugar(CALVIN,SUSIE) ∨ atraer(SUSIE, CALVIN) • ¬niñas(A) ∨ gustar(CALVIN,A) ∨ ¬ jugar(CALVIN,SUSIE) ∨ odiar(SUSIE, CALVIN) • atraer(SUSIE, CALVIN) : ⎯ niñas(A), ¬gustar(CALVIN,A), jugar(CALVIN,SUSIE), atraer(SUSIE, CALVIN) • odiar(SUSIE, CALVIN) : ⎯ niñas(A), ¬gustar(CALVIN,A), jugar(CALVIN,SUSIE), atraer(SUSIE, CALVIN) 1 Cuando los niños causan problemas en la escuela son enviados por su profesora donde el rector • ∀x ∀y niño(x) ∧ profesora(y,x) ∧ causar(x,problemas,escuela) ⇒ enviar(y,x,director) • ¬niño(x) ∨ ¬profesora(y,x) ∨ ¬causar(x,problemas,escuela) ∨ enviar(y,x,director) • [niño(x) ∧ profesora(y,x) ∧ causar(x,problemas,escuela)] ⇒ enviar(y,x,director) • enviar(Y,X,director) : ⎯ niño(X), profesora(Y,X), causar(X,problemas,escuela). 2 Todo niño que tiene un amigo que no está vivo significa que ese amigo es imaginario • ∀x ∀y niño(x) ∧ ¬vivo(y) ∧ amigo(x,y) ⇒ imaginario(y) 3 Calvin es un niño que juega con un tigre llamado Hobbes; para él su tigre es un compañero insustituible; • Niño(CALVIN) ∧ tigre(HOBBES) ∧ pertenecer(HOBBES,CALVIN) ∧ jugar(CALVIN,HOBBES) ∧ compañero(HOBBES,CALVIN) 4 Existen niños que son mas grandes que otros y se aprovechan de los mas pequeños • ∃x ∃y niño(x) ∧ niño(y) ∧ msg(y,x) ⇒ aprovechar(y,x) 5 Todos los niños que creen en monstruos y se los imaginan, les tienen miedo. • ∀x ∀y niño(x) ∧ monstruo(y) ∧ creer(x,y) ∧ imaginar (x,y) ⇒ tenermiedo(x,y) 6 Todo niño que es travieso es castigado por sus padres • ∀x ∀y ∀z niño(x) ∧ travieso(x) ∧ padres(y,x) ⇒ castigar(y,x) 7 Si un niño es travieso y su madre es estricta, lo castiga. • ∀x ∀y niño(x) ∧ travieso(x) ∧ mama(y) ∧ estricto(y) ⇒ castigar(y,x) 8 Los niños que no les gusta la escuela y no hacen las tareas son desaplicados • ∀x niño(x) ∧ ¬hacer(x,tareas) ∧ ¬gustar(x,escuela) ⇒ desaplicado(x) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 61.
    Inteligencia Artificial. Responda lapregunta Anoche, una banda de ladrones robó una joyería y el botín se lo llevaron en un coche. Arresté a tres sospechosos: Makinavaja, Popeye y el Pirata y después del interrogatorio supe que: Nadie aparte de estos tres estuvo involucrado en el robo, Popeye confesó que nunca trabaja sin la ayuda de Maki Y el Pirata me dijo que no sabía conducir. Premisas conocidas: • Nadie aparte de Maki, Popeye y el Pirata estuvo No tengo involucrado en el robo. claro • Popeye nunca trabaja sin la ayuda de Maki. quien es el culpable. • El Pirata no sabe conducir. RESPUESTA = Fue Maki Déjalos correr por que “más vale que se escapen mil ladrones a correr detrás de uno.” Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 62.
    Inteligencia Artificial. TERCERA UNIDAD RESOLUCIONDE PROBLEMAS 3.1 Bases de conocimiento. 3.2 Elementos en la solución de problemas. 3.3 Métodos de búsqueda (Ciegas – Heurística ) INTRODUCCIÓN. Para construir un sistema básico de inteligencia artificial capaz de resolver un problema específico, es necesario realizar las siguientes acciones: • Definir de una forma precisa el problema, incluyendo especificaciones de las condiciones iniciales y de las situaciones finales que pueden considerarse como soluciones aceptables al problema. • Analizar el problema. Puede darse el caso de que unos muy pocos rasgos importantes puedan tener un gran impacto en la identificación de la técnica más apropiada para resolver el problema. • Identificar y representar el conocimiento que es necesario para resolver el problema. • Escoger la mejor técnica y aplicarla para la resolución del problema. Las bases datos (DB: Data Base / Database) son anteriores en el tiempo a las bases de conocimiento. Nacieron en la temprana época de los ordenadores digitales, a mediados de la década de los 50 y fueron una de las principales herramientas que éstos ofrecían. Surgieron como extensiones de programas Fortran que permitían acceso compartido a los datos. A finales de esta década se desarrollaron métodos de acceso soportados por el sistema operativo (acceso directo y secuencial) y maduraron con los sistemas operativos de segunda y tercera generación (principios de los 60). En esta época se desarrollaron las bases de datos estructuradas jerárquicamente y algo después las bases de datos de red. En esta temprana época no había distinción entre bases de datos e IA. A finales de los 60, Ted Codd, investigador de IBM, desarrolló un lenguaje de programación de propósito general que denominó "programación relacional", basado en la teoría de conjuntos y la lógica y que contenía el germen de lo que había de ser el más extendido de los sistemas de bases de datos hasta la fecha, las bases de datos relacionales. El objetivo primero de una base de datos es, como su nombre indica, almacenar grandes cantidades de datos organizados siguiendo un determinado esquema o "modelo de datos" que facilite su almacenamiento, recuperación y modificación. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 63.
    Inteligencia Artificial. Por suparte, las bases de conocimiento (KB: Knowledge Base) pertenecen a una etapa muy posterior. Surgieron a partir de la investigación en Inteligencia Artificial como respuesta a las necesidades que las aplicaciones de esta disciplina planteaban. Más adelante haremos un muestreo de las aportaciones que la IA ha hecho al estudio del lenguaje natural. Las bases de conocimiento son la evolución lógica de los sistemas de bases de datos tradicionales, en un intento de plasmar no ya cantidades ingentes de datos, sino elementos de conocimiento (normalmente en forma de hechos y reglas) así como la manera en que éste ha de ser utilizado. También se les trata de dotar de conocimiento sobre sí mismas, es decir, una KB ha de "saber lo que sabe". Por ejemplo, ante una pregunta del tipo "¿Tienen todos los empleados de Microsoft un CI de más de 100?", una base de datos tras consultar la información relacionada con la altura de los empleados de esta empresa, daría una respuesta afirmativa o negativa, independientemente de que tenga o no la información correspondiente a estos trabajadores; en cambio, una KB respondería "sí", "no" o "no lo sé", en el caso de que le faltase información relativa a la altura sobre alguno de los empleados o de que no tuviese información sobre "todos" los empleados. Ambos sistemas de información cuentan con sus correspondientes gestores para simplificar al administrador las tareas comunes de mantenimiento: el sistema gestor de bases de datos (DBMS: Database Management System) y el sistema gestor de bases de conocimiento (KBMS: Knowledge Base Management System). También encontramos diferencias sustanciales en este aspecto. Básicamente los DBMSs actuales se encuentran perfectamente estandarizados, ofreciendo un número de características y metodologías comunes que posibilitan la comunicación entre diversos tipos y productos comerciales. La comercialización de los KBMSs es prácticamente anecdótica, y por supuesto no existe ningún estándar. La característica común a todos los sistemas basados en el conocimiento hasta hace muy poco tiempo es que han sido sistemas autónomos, es decir, que no permiten la utilización de la información contenida en ellos por parte de aplicaciones externas. Por el contrario, las bases de datos, sí cuentan con los mecanismos de conexión necesarios para poder ofrecer su información a muy distintos tipos de lenguajes de programación. En general, adelantamos que nuestra elección son los sistemas de bases de datos para el almacenamiento de información exclusivamente léxica, porque garantizan a priori la reutilización de la información almacenada. Por ejemplo, si decidimos guardar nuestra información léxica en un sistema de conocimiento, estaremos "atados" a este sistema, y si más adelante observamos que nuestras necesidades van más allá de lo que en principio habíamos previsto, puede darse el caso de que el sistema de KB no sea lo suficientemente potente para dar respuesta a estas necesidades, y puede ocurrir que tengamos que volver a introducir toda la información de nuevo. Por lo general, esta situación es evitable en el entorno de las bases de datos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 64.
    Inteligencia Artificial. 3.1 BASESDE CONOCIMIENTO 1. Concepto Una base de conocimiento (KB: Knowledge Base) es la representación de conocimiento relacionado a un tema especifico, dicho conocimiento se plasma en forma de hechos y reglas. En las bases de conocimiento encontramos: una colección de hechos y reglas mediante los cuales el sistema es capaz de extraer conocimiento que no está almacenado de forma explícita. Por tanto, para la IA, una estructura de datos que no contenga más que "hechos" no es considerada como conocimiento, sino tan sólo como una fuente potencial de información. Un Sistema de Representación de Conocimiento para un universo U consiste en: 1. Una colección E de etiquetas que pueden representar individuos en U; estas etiquetas se dividen en constantes y variables. 2. Una colección F de funciones. 3. Una colección R de relaciones. 4. Un lenguaje L consistente en reglas para combinar las funciones, relaciones y etiquetas en expresiones bien formadas de L. 5. Una semántica S que provee de significado a las etiquetas, funciones y relaciones. Teniendo en cuenta la definición anterior, podemos deducir los problemas más importantes que la representación de conocimiento presenta: • La necesidad de un conocimiento profundo de nuestro propio conocimiento. Es evidente que no poseemos una comprensión lo suficientemente detallada de muchas materias. Entre ellas está la que a nosotros nos concierne, el lenguaje natural. Cuanto más amplio sea nuestro conocimiento de éste, más fácil nos será recrear sus mecanismos artificialmente. En especial deberíamos conocer con exactitud tres puntos cruciales: o ¿Cuáles son los individuos que constituyen el universo? o ¿Que propiedades poseen? o ¿Qué relaciones existen entre ellos? • El desarrollo de una notación precisa. Aun suponiendo que poseamos un conocimiento lo suficientemente detallado de la materia que pretendemos representar, resulta crucial el disponer de una notación lo suficientemente precisa como para poder plasmar ese conocimiento de forma que pueda ser usado de forma inteligente por un cerebro electrónico. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 65.
    Inteligencia Artificial. Podríamos estipularque, en general, el conocimiento identifica información sobre conceptos generales, mientras que los datos conforman información sobre entidades específicas. Así, la aserción "Arturo Rodríguez mide 1,73m" es un dato mientras que "la media de altura de los españoles es 1,70m" es conocimiento. El conocimiento desde el punto de vista de las bases de datos: la posición generalmente compartida por el entorno de las bases de datos es que un elemento de conocimiento tiene que ver con un Universo de Discurso (UoD: Universe of Discourse), que puede ser real, mental, social, o de cualquier otro tipo. Los datos, pues, son considerados como aseveraciones sobre un determinado estado de cosas en un determinado UoD. A estas aseveraciones se las denomina hechos. "Juan ama a María" es un hecho perceptible u observable dentro de un determinado UoD y puede ser representado por una estructura de datos. Para alcanzar el dominio del conocimiento es necesario subir a un nivel de abstracción superior, en el que podemos hablar de las propiedades de los hechos y de las relaciones entre hechos individuales y entre hechos y el UoD, así como de las alteraciones de los hechos y las repercusiones de estas alteraciones sobre el UoD. Por ejemplo, aseveraciones como "todos los hombres casados tienen una esposa y sólo una", o "para cada humano x, y, z, se cumple que, si x es el padre de y, y y es el padre de z, entonces x es el abuelo de z". Este tipo de conocimiento, llamado por algunos investigadores metadatos, pues de hecho son datos que "hablan" sobre datos, no es, típicamente, el dominio de las bases de datos. Esta visión se puede resumir de la siguiente manera: (...) databases represent sets of definite atomic statements (facts) and knowledge bases may, in addition, represent sets of general statements and conditional statements (rules). En las bases de conocimiento: una colección de hechos y reglas mediante los cuales el sistema es capaz de extraer conocimiento que no está almacenado de forma explícita. Por tanto, para la IA, una estructura de datos que no contenga más que "hechos" no es considerada como conocimiento, sino tan sólo como una fuente potencial de información. La IA, por tanto, pone el énfasis en el comportamiento computacional, es decir el uso de los datos por parte de los procedimientos. Podríamos estipular que, en general, el conocimiento identifica información sobre conceptos generales, mientras que los datos conforman información sobre entidades específicas. En este sentido, los datos reflejan el estado de cosas de un determinado UoD en un momento determinado, y por tanto son altamente susceptibles de modificaciones. En cambio, el conocimiento sobre cómo interpretar y usar esos datos no cambiará tan a menudo. Además, aunque el conocimiento sea complejo, su dominio es el de las generalizaciones sobre tipos, y no el de las instancias específicas, que es el dominio de los datos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 66.
    Inteligencia Artificial. Podemos resumirlo expuesto diciendo que una base de conocimiento contendrá conocimiento sobre algo, y será capaz de referir ese conocimiento al mundo real. Este conocimiento es abstracto y generalizador. Los datos son concretos y describen de forma detallada entidades del mundo real. Como es de suponer los sistemas para soportar el almacenamiento de conocimiento necesitan una notación muy avanzada y precisa, pero por lo general no son capaces de hacer frente a cantidades ingentes de información, aspecto en el que las bases de datos sobresalen. Información es lo que se obtiene cuando los datos son analizados, ya sea por un agente humano o por una aplicación externa. Por tanto, de una base de datos se extrae información, mientras que ésta se encuentra explícitamente e implícitamente almacenada en una base de conocimiento. Una interpretación en términos cognitivos de este extremo es que una KB contiene información representada de una forma más parecida a cómo los humanos la almacenamos. El término "conocimiento", hace referencia específica a las reglas en las que la información ha de ser usada, así como a diversos procesos cognitivos en relación con la actualización de la información contenida en un sistema. Si un sistema contiene información representada a modo de generalizaciones sobre datos y es capaz de usar esta información de forma inteligente, actualizarla según necesidades y proveer información acerca de la información que contiene (ser "consciente" de sus limitaciones), entonces es un sistema de conocimiento. Si, por el contrario, un sistema contiene una gran cantidad de datos específicos sobre un determinado universo y provee los mecanismos necesarios para recuperar y modificar esa información, ya sea por un programa o por un usuario humano2, entonces es un sistema de base de datos. El primer paso para desarrollar tanto una base de datos como una base de conocimiento ha de ser la elección de un determinado modelo de datos en el caso del primero o de un esquema de representación en el caso del segundo (Mylopoulos 1986). Esta elección repercutirá directamente en las características y posibilidades del sistema de información. En este apartado nos limitaremos a exponer una taxonomía de esquemas de representación para los sistemas basados en el conocimiento clásicos y otra clasificación tradicional de modelos de datos. A esta actividad, es decir, el estudio de los sistemas desde un punto de vista más o menos abstracto se le denomina modelado conceptual. Por tanto, se entiende por modelado conceptual la descripción de un sistema de información (KBMS, DBMS, aplicaciones construidas con algún lenguaje de programación) en un nivel de abstracción por encima del nivel de arquitectura e implementación. En IA, el problema de diseñar un sistema experto se centra en construir una base de conocimiento que represente el conocimiento de una empresa determinada. También las metodologías de bases de datos han venido ofreciendo desde su etapa de madurez modelos semánticos de datos. Los modelos de datos clásicos ofrecen niveles de abstracción muy bajos, es decir la correspondencia entre el nivel conceptual y el nivel físico suele ser muy directa. Los modelos semánticos de datos intentan escalar en el nivel de abstracción para poder dar cuenta de estados y procesos complejos de una forma relativamente simple. Como veremos, estos modelos están altamente influenciados por los sistemas de KB, que desde el principio fueron dotados de grandes capacidades de abstracción. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 67.
    Inteligencia Artificial. Ejemplo: Serepresenta la base de conocimiento de los lenguajes de programación. Hechos: 1. El lenguaje posee funciones predefinidas. 2. El lenguaje trabaja sobre cualquier plataforma 3. El lenguaje trabaja con programación procedimental. 4. El lenguaje es declarativo. 5. El lenguaje es orientado a objeto. 6. El lenguaje trabaja únicamente sobre ambiente Windows. 7. El lenguaje trabaja sobre ambiente MS-DOS. 8. El lenguaje trabaja orientado a eventos. 9. El lenguaje permite la herencia 10. El lenguaje permite polimorfismo. Reglas: R1: 1 ^ 2 => 6 R2: 9 ^ 10 => 5 R3: - 7 v 5 => 10 R4: 10 ^ 8 => 9 2. Características • Las KB son la evolución lógica de los sistemas de bases de datos tradicionales, en un intento de plasmar no ya cantidades ingentes de datos, sino elementos de conocimiento así como la manera en que éste ha de ser utilizado. También se les trata de dotar de conocimiento sobre sí mismas, es decir, una KB ha de "saber lo que sabe". • El sistema gestor de bases de conocimiento (KBMS: Knowledge Base Management System) posee una comercialización prácticamente anecdótica, y por supuesto no existe ningún estándar. • Una de las principales características de los sistemas basados en el conocimiento es que no permiten la utilización de la información contenida en ellos por parte de aplicaciones externas. • La mayor parte de las aserciones de una KB contienen variables dependientes en el sentido lógico, son de muchos tipos diferentes, y existen muy pocas aserciones de cada tipo (generalmente sólo una). • Una KB es un sistema activo de forma inherente. Las acciones que una KB lleva a cabo van desde la invocación de procedimientos cuando se accede a un determinado slot o casilla (en el caso de un esquema de representación basado en marcos), pasando por procesos deductivos o propagación de restricciones (en el caso de esquemas de redes semánticas genéricas). A esto se le denomina activación de Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 68.
    Inteligencia Artificial. procesos, disparo o triggering. Este mecanismo puede incluso acceder y modificar los hechos y reglas contenidos en su propio repositorio de datos. • La KB contiene conocimiento sobre algo, y será capaz de referir ese conocimiento al mundo real. Este conocimiento es abstracto y generalizador. • Los sistemas para soportar el almacenamiento de conocimiento necesitan una notación muy avanzada y precisa, pero por lo general no son capaces de hacer frente a cantidades ingentes de información. • En una KB se encuentra explícitamente e implícitamente almacenada la información. • Un KBMS debe ofrecer dos posibilidades fundamentales: 1) Mecanismos de razonamiento; y 2) Mecanismos de explicación . • Las KB se han desarrollado en diversos ámbitos con propósitos específicos. • Las KB son utilizadas en las siguientes aplicaciones de IA: Sistemas expertos, sistemas de procesamiento de lenguaje natural y sistemas de visión robótica. En general se supone que un KBMS, a diferencia de un DBMS, debe ofrecer estas dos posibilidades fundamentales (Mylopoulos 1986): • Mecanismos de razonamiento: el KBMS debe ser capaz de extraer conclusiones lógicas a partir de la información y reglas que contiene. • Mecanismos de explicación que permitan al usuario del KBMS averiguar el estado del mecanismo de razonamiento, obtener consejo, y justificación de una determinada conclusión obtenida por el mecanismo de razonamiento A partir de estos requerimientos deberíamos establecer alguna tipología de KBMSs atendiendo no a su arquitectura (no existen arquitecturas genéricas estándar), sino a su funcionalidad. Lo que caracteriza a los sistemas de representación de conocimiento es que se han desarrollado en diversos ámbitos con propósitos específicos. Mientras que un mismo sistema de bases de datos se puede utilizar para múltiple propósitos, los KBMS no son por lo general de propósito general. (Jarke et al. 1989) presentan la siguiente tipología de aplicaciones de IA en las que las bases de conocimiento son utilizadas: • Sistemas expertos • Sistemas de procesamiento de lenguaje natural • Sistemas de visión robótica • Entornos de desarrollo Son los segundos los que nos interesan, aunque en realidad la mayoría de los sistemas de IA toman la forma de sistemas expertos. Las relaciones entre el procesamiento del lenguaje natural y los KBMS han estado siempre motivadas por los intereses de los investigadores en IA, no por los de lingüistas o lexicógrafos. La aplicación de sistemas basados en el conocimiento a la TA es muy novedosa, y, según pensamos, los clásicos sistemas de KBMS no se adaptan a las necesidades de este tipo de aplicaciones, al no conceder la importancia necesaria a la información detallada en general ni a los aspectos procedimentales. El interés de los investigadores de IA por el lenguaje natural está centrado casi exclusivamente en la comunicación hombre-máquina, por tanto su objetivo es la construcción de interfaces en lenguaje natural que faciliten esta interacción. Éstos son los denominados interfaces de lenguaje natural (NLI: Natural Language Interfaces). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 69.
    Inteligencia Artificial. De hecho,el interés por los sistemas de NLP basados en el conocimiento surgió a raíz de la necesidad de construir interfaces en lenguaje natural para sistemas expertos. Estos sistemas son alimentados con toda la información disponible sobre un determinado tema muy específico, por ejemplo diagnósticos médicos, sistemas de ingeniería. Después, mediante un interfaz apropiado que acepta un conjunto de estructuras sintácticas y elementos léxicos específico, son capaces de responder adecuadamente a consultas complejas relacionando la información que poseen. Las tareas para las que estos sistemas se desarrollan son, casi por definición, complejas. Por tanto, un sistema experto es un sistema computacional capaz de representar y razonar sobre un dominio determinado que precisa de gran cantidad de conocimiento, tal como la aeronáutica o la medicina. Se puede distinguir de otros tipos de aplicaciones de IA en que: • Trabaja con temas complejos que normalmente requieren una considerable cantidad de experiencia humana; • Debe ser una herramienta práctica y útil; para ello debe ofrecer un alto rendimiento en cuanto a velocidad de ejecución y fiabilidad; • Debe ser capaz de explicar y justificar sus soluciones y consejos para convencer al usuario de lo correcto de su razonamiento. Los sistemas expertos son el tipo de aplicación de IA que mejores resultados ha conseguido. Estos sistemas son usados hoy en día en un amplio abanico de dominios y han probado ser altamente fiables. Por ello sería deseable la disponibilidad de interfaces en lenguaje natural que facilitasen la comunicación con el sistema por parte de usuarios no expertos en computación (médicos, biólogos, ingenieros). Existen tres modos de ver la relación entre un NLI y el KBMS. La primera es la construcción de un NLI para manejar un KBMS. La segunda construir un KBMS para implementar un NLI. La tercera construir un NLI (soportado por el KBMS) para sistemas basados en el conocimiento. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 70.
    Inteligencia Artificial. Para queun programa pueda ser calificado de NLI debe cumplir las dos condiciones siguientes: 1. Un subconjunto del input o el output del sistema se realiza en lenguaje natural 2. El procesamiento del input (generación del output) se basa en conocimiento de tipo sintáctico, semántico y/o pragmático. Los tres modos anteriormente citados de usar el lenguaje natural en IA reflejan a nuestro parecer tres estadios de investigación, superando una primera fase en que se pretendía un análisis extremadamente simplista del lenguaje. Tras observar la enorme complejidad que éste conlleva, se hizo obvia la necesidad de tratar el lenguaje humano como un objeto de estudio en sí mismo, para poder siquiera pensar en usarlo como medio de interacción hombre-máquina. En esta etapa se empezaron a plantear cuestiones que los lingüistas han estado estudiando desde mucho tiempo atrás. Un KBMS para NLI habrá de integrar los siguientes tipos de conocimiento (Jarke et al. 1989): • Conocimiento lingüístico. • Conocimiento conceptual. • Conocimiento inferencial. • Conocimiento del usuario. La Figura resume las fuentes de conocimiento lingüístico necesario para el desarrollo de NLIs según la IA. Este cuadro revela cómo los investigadores de IA contemplan el estudio del lenguaje natural: Finalmente, en IA se señalan algunas características necesarias en una KB para el procesamiento de lenguaje natural: • Representación de conocimiento: el sistema de representación10 debería ser un esquema híbrido que contuviese subesquemas basados en marcos (frames), hechos de base de datos y reglas de deducción. Las distintas unidades de conocimiento codificadas en uno de estos esquemas tendrán que ser agregadas a los esquemas híbridos de una fuente de conocimiento (lingüístico, conceptual, etc.), que a su vez tendrá que ser agregada a la base de conocimiento global. • Organización del conocimiento: el KBMS deberá organizar al menos dos bases de conocimiento en el caso de un sistema basado en NLI: la KB del lenguaje natural (NL KB) y la KB a la que el NLI proporciona acceso mediante lenguaje natural. A su vez, la NLKB habrá de estar organizada distinguiendo: conocimiento de entorno, conocimiento específico de trabajo y conocimiento específico de diálogo. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 71.
    Inteligencia Artificial. • Entorno de integración: el KBMS deberá proporcionar un entorno que permita la entrada de datos para las distintas KBs. Este aspecto de adquisición de conocimiento se puede realizar mediante el NLI una vez se haya construido parcialmente. Lo ideal para crear la base de conocimiento de lenguaje natural es el trabajo conjunto de expertos en los dos campos: la lingüística y la IA. Como observamos, las diferencias de descripción detallada de bases de datos y bases de conocimiento son abismales. Las bases de datos son sistemas muy bien establecidos en donde todo lo que puede o no puede llevar a cabo el sistema y cómo llevarlo a cabo está perfectamente establecido. El trabajo en bases de conocimiento se encuentra aún en una fase germinal, y por lo general se trata de sistemas específicos para necesidades específicas. La literatura en torno a las bases de conocimiento es aún altamente programática, intentando sentar las bases de lo que se supone que estos sistemas serán capaces de hacer. No es extraño encontrar aserciones contradictorias en distintos autores con distintos fines. Incluso así, en el siguiente apartado intentaremos mostrar cuáles son las definiciones formales y arquitecturas que se han propuesto hasta ahora. Ni que decir tiene que el entorno de bases de datos se encuentra totalmente establecido. ELEMENTOS EN LA SOLUCIÓN DE PROBLEMAS El proceso general en la solución de problemas tiene: 1. Estado del problema: Situación y condición de existencia. 2. Meta: Lograr respuesta final o solución. 3. Operadores: Procedimiento empleado para cambiar los estados y lograr las metas (Algoritmos y subrutinas). Esquema de representación de los elementos en la solución de problemas Representación de los elementos en la solución de problemas Estado Procedimiento Metas Inicial Estrategias de control Para construir un sistema que resuelva un problema específico, es necesario realizar las siguientes acciones: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 72.
    Inteligencia Artificial. Definir elproblema con precisión: La definición debe incluir especificaciones precisas tanto sobre la o las situaciones iniciales como sobre las situaciones finales que se aceptarían como soluciones al problema. Analizar el problema: Algunas características de gran importancia pueden tener un gran efecto sobre la conveniencia o no de utilizar las diversas técnicas que resuelven el problema. Aislar y representar el conocimiento necesario para resolver el problema. Elegir la mejor técnica(s) que resuelve el problema y aplicarla(s) al problema particular. TÉCNICAS DE SOLUCIÓN. Las técnicas de solución de problemas en IA, en general, incorporan un proceso de búsqueda. Todo proceso de búsqueda puede ser visualizado como el recorrido por un árbol en el que cada nodo representa un estado y cada rama representa las relaciones entre los estados cuyos nodos conecta. En general, las reglas contienen en forma implícita el árbol, y se genera en forma explícita sólo aquellas partes que se decide explorar. Las principales diferencias que pueden aparecer en las diferentes técnicas de búsqueda, son: • La dirección en la cual se conduce la búsqueda (hacia adelante o hacia atrás). • La estrategia de control, o forma de seleccionar las reglas que pueden ser aplicables. Los principales requerimientos de una buena estrategia de control son: que cause desplazamiento en el espacio de estado; y, que sea sistemático. • La forma de representar cada nodo del proceso de búsqueda (representación del conocimiento). Muchas veces, tratar el proceso como búsqueda en un grafo en lugar de una búsqueda en un árbol, puede reducir el esfuerzo que se gasta en explorar senderos, esencialmente iguales, varias veces. Sin embargo, los requisitos asociados, son: • Cada vez que se genere un nodo se debe chequear para ver si ha sido generado antes. • Se deben introducir procedimientos especiales para que la búsqueda no quede atrapada en algún lazo. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 73.
    Inteligencia Artificial. Métodos de búsqueda: 1. Búsqueda en profundidad. 2. Búsqueda en amplitud. 3. Búsqueda de coste uniforme. 4. Búsqueda en profundidad limitada. 5. Búsqueda en profundidad iterativa. 6. Búsqueda bidireccional. Problema de los dos recipientes de agua Se tienen dos jarras, una de cuatro litros de capacidad y otra de tres. Ninguna de ellas tiene marcas de medición. Se tiene una bomba que permite llenas las jarras de agua. ¿Cómo se puede lograr tener exactamente dos litros de agua en la jarra de cuatro litros de capacidad? Los operadores que puede utilizar son:: llenar la jarra de 4 litros; llenar la jarra de 3 litros; vaciar un poco la jarra de 4 litros; vaciar un poco la jarra de 3 litros; vaciar la jarra de 4 litros en el suelo; vaciar la jarra de 3 litros en el suelo; verter agua desde la jarra de 3 litros a la jarra de 4 litros hasta que la jarra de 4 litros esté llena; verter agua desde la jarra de 4 litros a la jarra de 3 litros hasta que la jarra de 3 litros esté llena; verter todo el agua de la jarra de 3 litros en la jarra de 4 litros; verter todo el agua de la jarra de 4 litros en la jarra de 3 litros; verter 2 litros de la jarra de 3 litros en la jarra de 4 litros). Implementa el problema realizando búsqueda en anchura y en profundidad Reglas de Producción x = 0,1,2,3,4 y = 0,1,2,3 1. Llenar el recipiente de 4 galones: 2. Llenar el recipiente de 3 galones: SI x < 4 => (4, y) SI y < 3 => (x, 3) 3. Vaciar el recipiente de 4 galones: 4. Vaciar el recipiente de 3 galones: SI x > 0 => (0, y) SI y > 0=> (x, 0) 5. Pasar agua del recipiente de 3 galones al de 4, hasta 6. Pasar agua del recipiente de 4 galones al de 3, hasta que se llene: que se llene: SI (x + y) >= 4 ^ y > 0 => (4, y - (4 - x)) SI (x + y) >= 3 ^ x > 0 => (x - (3 - y), 3) 7. Pasar toda el agua del recipiente de 3 galones al de 8. Pasar toda el agua del recipiente de 4 galones al de 4: 3: SI (x + y) <= 4 ^ y > 0 => (x + y, 0) SI (x + y) <= 3 ^ x > 0 => (0, x + y) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 74.
    Inteligencia Artificial. Búsqueda enespacios de estados. begin estado := est_inic while not estado = est_fin do begin regla := selecc(R, estado) estado := aplicación(regla, estado) end end ------------------------------------------------------------- regla := selecc (R, estado) Control, según sea, la búsqueda será más o menos “inteligente”. Estrategias de control: características fundamentales. • Debe causar que el problema avance. Ejemplo: en el problema de los “cubos de agua” no es válido seleccionar siempre la primera regla aplicable. • Debe ser sistemático. Es decir, siempre debe producir la misma solución ante el mismo problema. Ejemplo: no es válido como estrategia de control elegir una operación al azar. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 75.
    Inteligencia Artificial. MÉTODOS DEBÚSQUEDA (CIEGAS – HEURÍSTICA ) Métodos Ciegos Exploración del árbol de búsqueda sistemáticamente pero sin información Estos métodos se caracterizan por no poseer experiencia, información o conocimiento correspondiente al ambiente en donde se realizará la búsqueda, solo se posee conocimiento de estado inicial y la meta que se pretende alcanzar. Ejemplo: Suponga que desea encontrar una trayectoria de una ciudad “S” (punto inicial)a otra “G”(meta). Para encontrar una trayectoria apropiada necesitará considerar dos costos: el costo de cálculo para encontrar la trayectoria y el costo del viaje cuando se sigue a trayectoria. Árbol de búsqueda: Es un tipo especial de árbol semántica en el que cada nodo representa una trayectoria, las ramas conectan trayectorias a extensiones de trayectorias en un solo paso. El árbol de búsqueda contiene escritores que conectan una trayectoria a una descripción de trayectoria. Además contiene lectores que producen una descripción de una trayectoria. Las trayectorias que no alcanzan la meta se conocen como trayectorias parciales; las trayectorias que alcanzan la meta se llaman trayectorias completas. El nodo raíz es el que no tiene nodo antecesor. Cada hijo representa una trayectoria que es una extensión de un nodo de la trayectoria representada por su padre. Se conoce como profundidad del árbol a la cantidad de nodos existentes desde la raíz hasta la ultima hoja del árbol. La expansión de un nodo es cuando se determina los hijos den este. Se dice que los nodos están abiertos cuando no se expande, en caso contrario se vuelven cerrados. Ejemplo: El árbol de búsqueda formado para el ejemplo anterior es: A B C S G D E F Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 76.
    Inteligencia Artificial. BúsquedaHeurística Para resolver muchos problemas difíciles (explosión combinatoria), es necesario muchas veces llegar a un compromiso de los requerimientos de movilidad y sistematicidad y construir una estructura de control que no necesariamente garantiza el encontrar la mejor respuesta, sino que casi siempre encuentra una buena respuesta. Una técnica heurística mejora la eficiencia del proceso de búsqueda sacrificando, usualmente, exhaustividad. Las consideraciones que sirven de soporte a un proceso de búsqueda heurística, son: • Rara vez se requiere, en realidad, una solución óptima. Una buena aproximación, normalmente, sirve muy bien. • A pesar que una aproximación heurística no puede resultar muy buena en el peor de los casos, raras veces aparecen los peores casos en la práctica. El tratar de comprender por qué un heurístico funciona o por qué no funciona, a menudo conduce a una mejor comprensión del problema. Búsqueda en amplitud Se basa en desarrollar completamente cada nivel del árbol antes de pasar a desarrollar el siguiente. Algoritmo general 1. lista := estado_inicial 2. MIENTRAS (lista ≠ 0) y no solucion 2.1. Eliminar primer elemento de lista y asignarlo a E 2.2. Para cada regla aplicable a E 2.2.1. Aplicar la regla 2.2.2. Si el estado resultante el objetivo, salir devolviéndolo 2.2.3. Si no, añadir el nuevo estado a lista Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 77.
    Inteligencia Artificial. La búsquedaen amplitud se extiende uniformemente en el árbol de búsqueda: La búsqueda en amplitud revisa todas las trayectorias de una longitud dada antes de avanzar a una trayectoria más larga. Primero se expande el nodo raíz, y luego todos los nodos generados por este; luego, sus sucesores, y así sucesivamente. En general, todos los nodos que estan en la profundidad d del árbol de búsqueda se expanden antes de los nodos que estan en la profundidad d + 1. Este método de búsqueda permite encontrar primero la meta más próxima. Para efectuar una búsqueda en amplitud: 1. Forme una cola de un solo elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz. 2. Hasta que la primera trayectoria de la cola concluya en el nodo meta o se vacíe la cola: 2.1.Elimine la primera trayectoria de la cola cree nuevas trayectorias extendiendo el primer paso a todos los vecinos del nodo terminal. 2.2.Rechace las trayectorias nuevas con ciclos. 2.3.Agregue las nuevas trayectorias, si las hay al final de la cola. 3. Si se halla el nodo meta, mencione que hubo éxito, si no, notifique el fracaso. Ejemplo: Para efectuar la búsqueda en amplitud se debe construir el árbol siguiente. S A D B D A E C E E B B F D F B F D E A C G Al considerar el factor de ramificación b (la raíz del árbol de búsqueda genera b nodos en el primer nivel, cada uno de los cuales genera b nodos más, obteniendo b2 nodos en el segundo nivel, y así sucesivamente). Supóngase que la en la solución hay una ruta de Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 78.
    Inteligencia Artificial. longitud d,por lo que la cantidad máxima de nodos expandidos antes de poder encontrar una solución es bd. Al tener un árbol b = 2 como factor de ramificación, y una profundidad de d = 14, se expandirían 214 = 262,144 nodos antes de encontrar una solución, lo que provocaría una explosión combinatoria, causando el incremento considerable de los costos y tiempos empleados en la búsqueda de solución. Búsqueda en profundidad (“depth-first”) Se basa en elegir un camino en el árbol y seguirlo hasta el final. Si no se encuentra la solución se retrocede (“backtraking”) y se prueba por otro camino. Algoritmo general: 1- SI estado_inicial = estado_objetivo ENTONCES salir con éxito 2- MIENTRAS no éxito y no fracaso a- Generar los sucesores del estado inicial. SI no hay más sucesores ENTONCES fracaso b- Llamar al algoritmo para cada uno de los nodos generados como estado inicial c- Si se devuelve éxito, devolver éxito, si no continuar el bucle Ventajas de la búsqueda en profundidad • Requiere mucha menos memoria (sólo hay que guardar el camino actual.) • Puede encontrar una solución sin examinar mucho el árbol, sobre todo si hay varios caminos a la solución. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 79.
    Inteligencia Artificial. Búsqueda decoste uniforme Se basa en desarrollar el nodo con menor coste. Algoritmo general. 1- lista := estado_inicial 2- MIENTRAS (lista ≠ 0) y no solucion a- Eliminar primer elemento de lista y asignarlo a E b- Para cada regla aplicable a E i- Aplicar la regla ii- Si el estado resultante el objetivo, salir devolviéndolo iii- Si no, añadir el nuevo estado a lista Búsqueda en profundidad limitada Búsqueda en profundidad con un límite de profundidad l. Implementación: los nodos a profundidad l no tienen sucesores. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 80.
    Inteligencia Artificial. Búsqueda enprofundidad iterativa Se basa en elegir utilizar búsqueda en profundidad limitada, aumentando l si no se encuentra la solución. Algoritmo Generación y Prueba (GENERATE-AND-TEST) 1. Generar una posible solución. (estado o camino) 2. Comprobar para ver si es una solución, mediante comparación con los elementos del conjunto de objetivos aceptables. 3. Si la solución ha sido encontrada salir, de otra manera, retornar al paso 1. Algoritmo Primero en Profundidad (DEPTH-FIRST) 1. Si el estado inicial es el objetivo, salir y retornar éxito. 2. Sino, haga lo siguiente hasta que se obtenga señal de éxito o fracaso: a. Genere un sucesor E del estado inicial. Si no hay más sucesores, retorne con señal de fracaso. b. Llame recursivamente al algoritmo, esta vez con E como el estado inicial. c. Si la señal es éxito, retorne, de otra manera, continúe en este lazo Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 81.
    Inteligencia Artificial. La búsquedaen profundidad incursiona en el árbol de búsqueda: Siempre se expande una de los nodos que se encuentre en lo más profundo del árbol, solo si la búsqueda conduce a un callejón sin salida (un nodo sin meta que no tiene expansión), se revierte la búsqueda y se expanden los nodos de niveles menos profundos. Para llevar a cabo una búsqueda en profundidad debe: 1. Primero conforme una cola de un elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz; 2. Hasta que la primera trayectoria de la fila termine en el nodo meta o se vacíe la cola, 2.1 Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo el primer paso a todos los vecinos del nodo terminal; 2.2. Rechace todas las trayectorias nuevas con ciclos; 2.3. Agregue las nuevas trayectorias, si las hay, al frente de la cola. 1. Si el nodo meta se alcanza, mencione que hubo éxito; de otro modo, notifique el fracaso. 1. Inicializar todos los nodos al estado de preparado (ESTADO=1) 2. Meter el nodo inicial A en la pila y cambiar su estado a estado de espera (ESTADO=2). 3. Repetir los pasos 4 y 5 hasta que la pila este vacia. 4. Sacar el nodo N en la cima de la pila. Procesar el nodo N y cambiar su estado al de procesado (ESTADO=3). 5. Meter en la pila todos los vecinos de N que estén en estado de preparados (ESTADO=1) y cambiar su estado a estado de espera (ESTADO=2). [ fin de bucle del paso 3 ] 6. Salir. (Algoritmo recursivo) 1- SI estado_inicial = estado_objetivo ENTONCES salir con éxito 2- MIENTRAS no éxito y no fracaso a- Generar los sucesores del estado inicial. SI no hay más sucesores ENTONCES fracaso b- Llamar al algoritmo para cada uno de los nodos generados como estado inicial c- Si se devuelve éxito, devolver éxito, si no continuar el bucle Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 82.
    Inteligencia Artificial. Ejemplo: Parael árbol de búsqueda anterior se tendría: S A B D C E D F G Se decide encontrar la trayectoria a través de la cola: S – A – B – C, pero esta trayectoria no encuentra la meta “G”. Por lo que se decide al nodo antecesor mas cercano que tenga una alternativa sin explorar, que para el árbol en análisis es B, es este caso se sigue: S – A – B – E – D; igual que la cola anterior, no se encuentra la meta “G”. Nuevamente se ubica en el nodo antecesor mas cercano que tiene una alternativa sin explorar, en este caso es E, se encuentra la trayectoria: S – A – B – E – F – G. A través de esta trayectoria se logra encontrar la meta “G”, por lo que se notifica el éxito. Si un árbol de búsqueda tiene un factor de ramificación b y profundidad máxima m, la cantidad de nodos a revisar será “bm”. La desventaja de la búsqueda en profundidad es la posibilidad de que se quede estancada al avanzar por una ruta equivocada. En muchas ocasiones los árboles de búsqueda son muy profundos, o hasta infinitos, por lo que una búsqueda en profundidad no es recomendable en estos casos. Ventajas de la búsqueda en profundidad • Requiere mucha menos memoria (sólo hay que guardar el camino actual.) • Puede encontrar una solución sin examinar mucho el árbol, sobre todo si hay varios caminos a la solución. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 83.
    Inteligencia Artificial. Algoritmo Primeroa lo Ancho (BREATH-FIRST) 1. Crear una variable NODE_LIST y ponerla al estado inicial. 2. Hasta que se encuentre el objetivo o hasta que NODE_LIST esté vacía haga lo siguiente: a. Remover el primer elemento de NODE_LIST, y llamarlo E. Si NODE_LIST estuvo vacía, salir. b. Para cada forma en que cada regla puede ajustarse al estado descrito en E, haga lo siguiente: i. Aplicar la regla para generar un nuevo estado. ii. Si el nuevo estado es un estado objetivo, salir y retornar este estado. iii. Sino, añada el nuevo estado al final de NODE_LIST. Búsqueda en Anchura: A diferencia con la búsqueda en profundidad ahora se visitan todos los vecinos de un vértice antes de pasar al siguiente. Por tanto no hay necesidad de retroceder. Una vez etiquetados todos los vecinos de un vértice X, se continúa con el primer vértice alcanzado después de X en la búsqueda. Esta técnica se utiliza para resolver problemas en los que se pide hallar una solución óptima entre varias. En general la búsqueda en anchura comenzando de un nodo de partida A es la siguiente: Primero examinamos el nodo de partida A. Luego examinamos todos los vecinos de A. Luego examinamos todos los vecinos de los vecinos de A y así sucesivamente. Con el uso de una cola, garantizamos que ningún nodo sea procesado más de una vez y usando un campo ESTADO que nos indica el estado actual de los nodos. Algoritmo para la Búsqueda en Anchura: Este algoritmo realiza la búsqueda en anchura en un grafo G comenzando en un nodo de partida A: 1. Inicializar todos los nodos al estado de preparados (ESTADO=1). 2. Poner el nodo de partida A en la COLA y cambiar su estado a espera (ESTADO=2). 3. Repetir pasos 4 y 5 hasta que COLA esté vacía. 4. Quitar el nodo del principio de la cola, N. Procesar N y cambiar su estado a procesado (ESTADO=3). 5. Añadir a COLA todos los vecinos de N que estén en estado de preparados (ESTADO=1) y cambiar su estado al de espera (ESTADO=2). [ fin del bucle del paso 3 ] 6. Salir. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 84.
    Inteligencia Artificial. Búsqueda Bidireccionalo Atrás y Adelante: Es una búsqueda simultanea que avanza a partir del estado inicial o nodo raíz y que retrocede a partir de la meta, deteniéndose cuando ambas búsquedas se encuentran en un punto intermedio. Si el factor de ramificación es b y la profundidad es d, entonces la solución estará a 2bd/2 pasos. Esta búsqueda es útil cuando el factor de ramificación es b en ambas direcciones. La búsqueda no determinista se mueve al azar en el árbol de búsqueda: Cuando se hace una búsqueda no determinista se expande un nodo abierto que se escoge al azar. De este modo se evita la posibilidad de atascarse revisando un número excesivo de ramas o niveles. Para efectuar una búsqueda no determinista: 1. Forme una cola de un elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz. 2. Hasta que la primera trayectoria de la cola concluya en el nodo meta o se vacíe la cola: a. Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo el primer paso a todos los vecinos del nodo terminal. b. Rechace las trayectorias nuevas con ciclos. c. Agregue las nuevas trayectorias al azar en la cola. 3. Si se halla el nodo meta, mencione que hubo éxito, si no, notifique el fracaso. Métodos de búsqueda Heurística Información sobre el problema (información del dominio) que permite reducir la búsqueda. Todos los algoritmos de fuerza bruta son poco eficientes debido a que son búsquedas a ciegas, es decir, no usan conocimiento sobre el dominio para guiarse en busca del siguiente nodo mejor situado. La búsqueda heurística se basa en que la mayor parte de los "espacios problemas" proporcionan información adicional con un pequeño coste computacional. Esta información adicional nos ayuda a elegir los nodos que estén más cerca de la meta. Esta información se llama Heurística. Cuando se posee experiencia, información o algún conocimiento del medio en el cual se realizará la búsqueda se dice que esta es una búsqueda heurística. Se llama Función de Evaluación a una función f que relaciona cada nodo con un número real y que sirve para estimar el costo relativo de continuar la búsqueda desde ese nodo. Por lo general, f(N) se considera que es la distancia estimada que queda entre N y el Nodo Meta. Otras veces se dice que f(N) es la longitud estimada desde el Nodo Raíz hasta el Nodo Meta, pasando por el nodo N, etc... Esta función de evaluación se utilizará para decidir el orden en que se explorarán los nodos durante la búsqueda. Hay varios algoritmos de búsqueda que usan una de estas funciones de evaluación heurística. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 85.
    Inteligencia Artificial. Entre ellosestán: Mejor primero (Primero el mejor.) Se basa en utilizar una función de evaluación para cada nodo (estimación de la idoneidad de expandir ese nodo). Se aplica: Al expandir siempre el nodo no expandido más idóneo. Mecanismos: • Búsqueda de Greedy. • Búsqueda A*. A*. Se basa en evitar expandir caminos que ya acumulan un coste elevado (tener en cuenta lo que ha costado llegar al nodo actual. Su función de evaluación: f(n) = g(n) + h(n), (se denomina potencia heurística): g(n): coste para llegar al nodo n. h(n): coste estimado para llegar a un nodo solución, desde el nodo n. f(n): coste total estimado del camino para llegar al objetivo a través del nodo n. Escalar colinas. Primero el mejor. Búsqueda primero el mejor: Se asemeja al ascenso de colina, diferenciándose en que el ascenso de colina exige un movimiento más desde el nodo abierto de más reciente creación cuando el movimiento hacia delante se ve impedido. En la búsqueda primero el mejor, el movimiento adicional se realiza a partir del mejor nodo abierto que se tiene hasta ese punto, sin importar donde esté ese nodo en el árbol parcialmente desarrollado. Este algoritmo, combina las ventajas de los algoritmos primero en profundidad y primero en amplitud. Sigue un sendero a la vez, pero puede cambiarse a otro sendero que parece más prometedor que el que está siguiendo. En este sentido, puede considerarse que es un algoritmo que realiza su proceso de búsqueda en todos sus ramales por que representan una alternativa de solución. Para su operación, el algoritmo necesita dos listas de nodos y una función heurística que estime los méritos de cada nodo que se genere: 1. ABIERTOS - Es una variable que contiene los nodos que han sido generados. La función heurística ha sido aplicada a ellos, pero todavía no han sido examinados, es decir no se han generado sus sucesores. ABIERTOS puede considerarse como una COLA DE PRIORIDADES en la que los elementos con mayor prioridad son los que tienen los valores más prometedores, dados por la función heurística. 2. CERRADOS - Es una variable que contiene los nodos que han sido examinados. Es necesario tener esta información, para que la búsqueda sea en un grafo y no en un árbol. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 86.
    Inteligencia Artificial. 3. FUNCIÓNHEURÍSTICA - Permite que el algoritmo busque primero por senderos que son o parecen más prometedores. Para muchas aplicaciones, es conveniente definir esta función f', como la suma de dos, que se las llamará g y h'. La función g es una medida del costo de llegar desde el nodo inicial al nodo actual. La función h' es una estimación del costo adicional para llegar desde el nodo actual al estado objetivo. Aquí es donde se explota el conocimiento que se dispone sobre el dominio del problema. Es decir, la función combinada f' representa una estimación del costo de llegar desde el estado inicial hasta el estado objetivo, siguiendo el sendero que ha generado el nodo actual. Si el nodo actual ha generado más de un sendero, el algoritmo deberá dejar registrado sólo el mejor. El algoritmo, en la forma que fue formulado, se aplica a grafos. Puede ser simplificado para aplicarse a árboles, si no se preocupa de comprobar si un nuevo nodo esta en ABIERTOS o en CERRADOS. Esto aceleraría la generación de nodos y la búsqueda, para casos en que es poco probable que se repitan nodos. Usualmente, el costo de ir de un nodo a su sucesor, g, se fija en una constante igual 1, cuando se desea encontrar un sendero a la solución, que involucre el menor número de pasos. Si por el contrario nos interesa encontrar el camino menos costoso y algunos operadores cuestan más que otros, se asume un valor de g, que refleje esos costos. Un valor de g igual a cero significaría que simplemente nos interesa llegar a alguna solución, de cualquier manera. Si h' es un estimador perfecto de h, hará que A* converja inmediatamente al objetivo, sin búsqueda. Mientras mejor sea h', más cerca se estará de alcanzar esta aproximación directa. Si h' vale cero, la búsqueda será controlada por g. Si el valor de g es también cero, hará que la búsqueda sea aleatoria. Si el valor de g es siempre 1, hará que la búsqueda sea primero en anchura. Para los casos en que h' no sea perfecto ni cero, y nunca llega a sobrestimar el valor de h, el algoritmo A* está garantizado que encontrará un sendero óptimo a un objetivo, en caso de que exista solución. Cuando un algoritmo garantiza el encontrar una solución óptima, si esta existe, se dice que es admisible. En la búsqueda "el mejor primero" el movimiento hacia adelante se hace desde el nodo mejor situado con respecto a la meta, sin tener en cuenta su situación en el árbol. Los caminos que se encuentren utilizando este método de búsqueda serán más cortos que los que se encuentren buscando con otros métodos, ya que con esta estrategia se parte del nodo mejor situado. Igual que con el método de escalar colinas este método requiere clasificar los nodos de acuerdo con su situación. En este caso, sin embargo, se clasifica toda la estructura de datos. Por lo tanto, en cada paso del proceso de búsqueda se selecciona el nodo más prometedor de todos los que se han generado hasta el momento. Esto se consigue aplicando una función heurística apropiada a cada nodo generado expandiendo, a continuación, aquel que ha dado el mejor resultado al evaluar dicha función heurística. Si uno de los sucesores (hijo) del nodo expandido es la meta, la búsqueda termina. En caso contrario, estos sucesores se suman al conjunto de nodos generados hasta el momento y se repite el proceso de selección del nodo más prometedor. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 87.
    Inteligencia Artificial. El algoritmoque se presenta a continuación realiza la búsqueda a través de un grafo dirigido en el cual cada nodo representa un punto, o estado, en el espacio del problema. Cada nodo es, entonces, una estructura que contiene, además de una descripción del estado del problema que representa, una indicación de lo prometedor que es respecto a los demás nodos, un enlace-padre que apunta al mejor nodo de los nodos-padre que cuelga, y por último, una lista de sus nodos sucesores (aquellos que se generan a partir de él). El enlace- padre permite recobrar el camino hasta la meta una vez se ha llegado a ella. La lista de sucesores permite, cuando se encuentra un camino mejor hasta un nodo ya generado, propagar esta mejora hacia sus sucesores. Para implementar este procedimiento se necesitan dos listas de nodos OPEN: Contiene los nodos que se han generado y a los cuales se ha aplicado la función heurística pero todavía no han sido examinados (no se han generado sus sucesores). OPEN es, en realidad, una cola de prioridad en la que los elementos con mayor prioridad son aquellos con valor más prometedor para la función heurística. CLOSED: Contiene los nodos que ya han sido examinados. Es necesario mantener estos nodos en memoria ya que cuando se genera un nuevo nodo hay que comprobar su ya ha sido generado antes. DESCRIPCION GENERAL DEL ALGORITMO "EL MEJOR PRIMERO" Se comienza insertando el nodo S (nodo de comienzo) en la lista OPEN. A continuación se van procesando sucesivamente los nodos en OPEN: se comprueba si son nodos meta, y en caso de que no lo sean, se meten en la lista CLOSED, se introducen sus sucesores en OPEN y se actualiza la función heurística f(N) para cada nodo N procesado. Los nodos en OPEN son tratados según un orden que da la mayor prioridad al nodo con menor f(N). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 88.
    Inteligencia Artificial. ALGORITMO 1. Insertar el nodo de comienzo S en OPEN, evaluar f(S) y asociar este valor con S. Poner el enlace-padre a NULL. 2. Si OPEN está vacío, devolver FALLO y parar. 3. Elegir un nodo N de OPEN tal que f(N) < f(M) para cada M en OPEN, tal que N es un nodo meta algún nodo meta tiene ese valor mínimo para f. 4. Poner N en CLOSED y quitar N de 0PEN. 5. Si N es un nodo meta devolver el camino desde S hasta N. Este camino se obtiene recorriendo f hacia atrás los enlaces-padre desde N hasta S. Luego parar. 6. Para cada sucesor J de N que no está aún en OPEN o en CLOSED: a.- Evaluar f(J) y asociarlo con J. b.- Poner J en OPEN. c.- Poner el enlace-padre de- J apuntando hacia N. 7.- Para cada sucesor J que ya está en OPEN, reevaluar f(J) y comparar este valor con el anterior. Si el nuevo valor es menor, asociarlo con J y volver a colocar J en OPEN. 8.- Ir al paso 2 La eficiencia de este método de búsqueda depende de la función heurística f que se utilice. EJEMPLO: Resolver utilizando el método de mejor-primero: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 89.
    Inteligencia Artificial. SOLUCION 1. OPEN A f(A) =8 P(A) = Null Luego al final de esta primera etapa tenemos: OPEN = A CLOSE = NULL 2.- A ≠ Meta y además es el único nodo en OPEN, luego CLOSE A Generamos los sucesores de A B, F, H ∉ OPEN v CLOSED f(B) = 6, P(B) = A f(F) = √37, P(F) = A f(H) =√37, P(H) = A quedando entonces: OPEN = B, F, H CLOSED = A 3. f(B) < f(F). por lo tanto metemos B en CLOSED CLOSED B generamos los sucesores de B C ∉ OPEN v CLOSED OPEN C f(C) = 4, P(C) = B quedando entonces: OPEN = F, H, C CLOSED = A, B 4.-f(C) < f (F). por lo tanto metemos C en CLOSED CLOSED C generamos los sucesores de C D ∉ OPEN v CLOSED f(D) = 2, P (D) = C quedando entonces: OPEN = F, H, D CLOSED = A, B, C 5.- f(D) < f(F). por lo tanto metemos D en CLOSED CLOSED D generamos los sucesores de D E, G ∉ OPEN v CLOSED f(E) = 0, P(E) = D f(G) = 6, P(G) = D Quedamos entonces: OPEN = F, H, E, G CLOSE = A, B, C, D 6. E es la meta, luego devolverá el camino desde el origen hasta la meta. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 90.
    Inteligencia Artificial. METODO DEBUSQUEDA A* Este método de búsqueda examina los nodos en un orden que da la mayor prioridad a los nodos que parecen pertenecer al camino más corto desde el nodo inicial hasta la meta. Es por tanto, similar al método "El Mejor Primero" pero siendo la diferencia fundamental la función heurística f, ya que ésta no es, simplemente, la estimación de la distancia que queda desde el nodo, en cuestión, hasta la meta, sino que se suma un factor g, que representa el coste del mejor camino encontrado hasta el momento, desde el nodo inicial hasta el nodo actual. Así, la función heurística f utilizada en la búsqueda A* queda de la siguiente forma: f =g+h donde las funciones g y h reflejan respectivamente: g = el coste del mejor camino desde el nodo inicial hasta el actual. h =estimación del coste involucrado en llegar desde el nodo actual a la meta. En esta función h es donde se explota, realmente, el conocimiento que se tiene sobre el dominio del problema. La función combinada f, para un nodo N, representa, por tanto, una estimación del coste involucrado en llegar desde el nodo inicial hasta un nodo meta a través del camino que genera el presente nodo N. Si más de un camino generan el nodo N, el algoritmo A* registra el mejor. Asumiendo que la estimación dada por h nunca excede la distancia real entre el nodo actual y la meta, el método A* siempre encuentra el camino más corto entre el nodo inicial y la meta. Esto se conoce como la admisibilidad del método A*. Para implementar este método, cada nodo contendrá la misma información que para el método "El Mejor Primero" y se utilizaran las mismas listas OPEN y CLOSED. ALGORITMO DE BÚSQUEDA A* 1.-Meter en OPEN el nodo inicial. Inicializar el valor g de este nodo a 0, el valor h a lo que corresponda, y el valor f a (0 + h). Inicializar CLOSED con la lista vacía. 2.-Hasta que se encuentre un nodo meta, repetir el siguiente procedimiento: Si no hay ningún nodo en OPEN, devolver fallo. En caso contrario coger el nodo de OPEN que tenga el menor valor para f. Llamar a este nodo MEJOR-NODO. Eliminarlo de OPEN. Ponerlo en CLOSED. Ver si MEJOR-NODO es un nodo meta. Si lo es devolver la solución (bien MEJOR-NODO o el camino creado entre el estado inicial y MEJOR-NODO, según lo que se quiera). En caso Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 91.
    Inteligencia Artificial. contrario, generar los sucesores de MEJOR-NODO. Para cada SUCESOR hacer lo siguiente: a. Poner el enlace-padre de SUCESOR apuntando a MEJOR-NODO. b. Evaluar g(SUCESOR)=g(MEJOR-NODO) + coste de ir desde MEJOR- NODO a SUCESOR. c. Ver si SUCESOR está ya en OPEN (es decir, ya ha sido generado pero no procesado): i.- Si SUCESOR está ya en OPEN: llamar VIEJO a ese nodo. Hay que decidir si el enlace-padre de VIEJO debe cambiarse para apuntar a MEJOR-NODO. Este debe ser el caso cuando el camino que acabamos de encontrar hasta SUCESOR es más "barato" que el camino ya existente hasta VIEJO (SUCESOR y VIEJO son el mismo nodo en el grafo). Para ello se comparan los valores g de SUCESOR y VIEJO. Si VIEJO es más barato (o igual), no hacer nada. Si, por el contrario, SUCESOR es más barato, cambiar el enlace-padre de VIEJO para apuntar a MEJOR-NODO, registrar el nuevo camino más barato en g(viejo) y actualizar f(VIEJO). Añadir VIEJO a la lista de sucesores de MEJOR-NODO. ii.- Si SUCESOR no está ya en OPEN, ver si está en CLOSED. Si es así, llamar VIEJO a este nodo. Ver cual de los dos caminos, el nuevo o el viejo, es más barato (como en el paso anterior), y ajustar el enlace-padre, y los valores de g y f para VIEJO, según se indica en el apartado c.i.. Si se ha encontrado un camino mejor a VIEJO, esta mejora se debe propagar a los sucesores de VIEJO. Para conseguir esto, hay que tener en cuenta que VIEJO contiene la lista de sus sucesores. A su vez, cada uno de ellos tiene, respectivamente, la lista de sus sucesores, y así sucesivamente, hasta que cada rama termina con un nodo que, o bien está en OPEN, o no tiene sucesores. Por tanto, para propagar el nuevo coste hacia abajo, hay que hacer una búsqueda en profundidad del subarbol que comienza en VIEJO; cambiando el valor g de cada nodo (y luego el de f), y terminando cada rama cuando se llega, bien a un nodo sin sucesores o a un nodo que ya tenía un camino equivalente o mejor (esto garantiza que el algoritmo termina aún cuando se encuentren bucles en el h grafo). Para comprobar esta última condición, ay que recordar c que el enlace-padre de ada nodo apunta hacia el mejor padre de generados hasta el momento. Añadir VIEJO a la lista de sucesores de MEJOR-MODO. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 92.
    Inteligencia Artificial. d.- Si SUCESOR no está ya en OPEN o en CLOSED: Poner SUCESOR EN OPEN y sumarlo a la lista de sucesores de MEJOR- NODO. Evaluar: f(SUCESOR) =g(SUCESOR) + h(SUCESOR). EJEMPLO. ¿Es posible aplicar el método de búsqueda A* en este "mapa de carreteras"? Si tenemos la función f(N) = g(N) + h(N) donde: g(N) = menor distancia real desde el inició hasta N. h(N) = menor distancia estimada desde N hasta la meta. Mediante las coordenadas X, Y de cada nodo se puede calcular la distancia entre cada par de nodos, luego sí podemos hallar la g(N). Igualmente podemos estimar la "distancia en línea recta" desde N hasta la meta, por lo tanto, también se puede hallar h(N). Por consiguiente, podemos aplicar el método de A*. 1.- Hay un único nodo de OPEN, el origen A. OPEN A P(A) = NULL g(A) = 0 h(A) = √173 f(A) = √173 quedando al final de esta primera etapa: OPEN = A CLOSED =NIL 2.- A ≠ Meta y además es el único nodo en OPEN luego, CLOSED A Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 93.
    Inteligencia Artificial. Generamos lossucesores de A B, C ∉ OPEN v CLOSED P(B) = A P(C) = A g(B) = g(A) + dist (A - B) g(C) = g(A) + dist (A - C) = 0+√10 =√10 = 0+√20 h(B) = √109 h(C) = √81 f(B) = √10 + √109 = 13.6 f (C) = √20 + √81 = 13.47 OPEN B OPEN C quedando al final-de esta etapa: OPEN B, C CLOSED A 3.- f(C) < f(B) luego metemos C a CLOSED CLOSED C Generamos los sucesores de C, que en este caso es únicamente D D ∉ OPEN v CLOSED P(D) = C g(D) = g(C) + dist(C - D) = √20+√8=7.3 h(D)= √53 f(D)=7.3+√53=14.58 OPEN D Quedando al final de esta etapa: OPEN B, D CLOSED A, C 4.- f(B) < f(D) CLOSED B Generamos los sucesores de B que en este caso serían D y C el sucesor D Є OPEN el sucesor C Є CLOSED P'(D) = B P'(C) = B g'(D) = g(B) + dist (13 - D) g'(C) = g(B) + dist (B - C) =√10 +√10 = 6.32 =√10+√10 = 6.32 ' g'(D) = 6.32 < g (D) = 7. 3 g’ (C) > g(C) Luego hay que modificar luego no cambia nada P(D) = B P(C) = A g(D) = 6.32 g(C) = 4.47 Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 94.
    Inteligencia Artificial. f (D) = g'(D) + h (D) f(C) = 13.47 = 6.32 + √53 = 13.6 Quedando al final de esta etapa: OPEN D CLOSED A, B 5.- Solo hay un nodo en OPEN, luego no hay que compararlo CLOSED D Generamos los sucesores de D, y en este caso son E y F E ∉ OPEN v CLOSED F ∉ OPEN v CLOSED P(E) = D P(F) = D g(E) = g(D) + dist (D - E) g(F) = g(D) + dist (D - F) = 6.32 + √37 = 12.4 =6.32 + √8=9.15 h(E) = √10 h(F) = √25 = 5 f(E) =12.4 + √10 = 15.56 f(F) = 9.15+5 OPEN E OPEN F Quedando al final de esta etapa: OPEN E, F CLOSED A, B, D 6.- f(F) < f(E), por lo tanto, metemos F en CLOSED CLOSED F Generamos los sucesores de F, siendo en este caso solo G G ∉ OPEN v CLOSED P(G) = F g(G) = g(F) + dist (F - G) = 9.15 + 5 = 14.15 h(G) = 0 f(G)=14.15+0=14.15 OPEN G Quedando al final de esta etapa: OPEN E, G CLOSED A, B, D, F 7.- f(G) < f(E) y además G es la meta luego metemos G a CLOSED CLOSED G Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 95.
    Inteligencia Artificial. Quedando alfinal de esta etapa: OPEN E CLOSED A, B, D, F, G Para, por fin, obtener el camino solución: G P(G) = F P(F) = D P(D) = B P(B) = A Ascenso de Colina Búsqueda mediante el ascenso de colina: Se procede como en el caso de la búsqueda en profundidad, excepto que se ordenan las selecciones de acuerdo con alguna medición heurística de la distancia que queda por recorrer a la meta. Cuanto mejor sea la medición heurística, mejor será el ascenso de colina con relación a la búsqueda en profundidad normal. El método de escalar colinas es el más simple de los métodos heurísticos. El nombre viene de la analogía existente entre el espacio del problema y un plano bidimensional donde la función heurística define la elevación de cada punto y la meta es alcanzar el punto más alto del terreno. Escalar colinas funciona efectuando movimientos en la dirección que tenga la subida más pronunciada localmente. Lo único que se memoriza es el estado en curso y el que originalmente era el nodo raíz. En cada ciclo se expande el nodo en curso y se aplica la función heurística a cada uno de sus sucesores y el que tenga el mejor valor se convierte en el nuevo estado en curso. Es semejante a la búsqueda en profundidad, excepto que el método de escalar colinas ordena los posibles estados a elegir en cada paso de la búsqueda de acuerdo con alguna medida 1 función heurística de la distancia que queda desde cada uno de ellos hasta la meta. Cuanto mejor sea la medida heurística mejores resultados dará el método de escalar colinas con respecto al de profundidad. Para llevar a cabo una búsqueda en ascenso de colina debe: 1. Forme una cola de un elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz; 2. Hasta que la primera trayectoria de la cola termine en el nodo meta o se vacíe la cola, 2.1 Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo el primer paso a todos los vecinos del nodo terminal; 2.2. Rechace todas las trayectorias nuevas con ciclos; Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 96.
    Inteligencia Artificial. 2.3. Ordena las trayectoria nuevas, si las hay, según las distancias estimadas entre sus nodos terminales y la meta. 2.3. Agregue las nuevas trayectorias, si las hay, al frente de la fila. 3. Si el nodo meta se alcanza, mencione que hubo éxito; de otro modo, notifique el fracaso. Siempre que se enfrente a un problema de búsqueda note que: un mayor conocimiento suele reducir el tiempo de búsqueda. Ejemplo: En la siguiente figura se muestran las distancias existentes desde cada ciudad a la meta. 10.4 B C A 6.7 4.0 11.0 S G D 8.9 6.9 3.0 E F Si desea alcanzar la meta, en general resulta mejor estar en la ciudad que se encuentre mas cerca, aunque no necesariamente; la ciudad C se encuentra más cerca que las demás , con excepción de la ciudad F, pero la ciudad C no es un lugar muy adecuado para estar. La meta encontrada empleando la búsqueda de ascenso de colina es: S – D – E – F - G. S 10.4 8.9 A D 10.4 6.9 A E 3.0 6.7 B F G Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 97.
    Inteligencia Artificial. ORDENAR UNAPILA DE BLOQUES. OPERADORES PARA LOS BLOQUES: 1. Libre(x) → Sobre(x, Mesa) 2. Libre(x) Y Libre(y) → Sobre(x, y) FUNCIÓN HEURÍSTICA: Local: Añadir un punto por cada bloque sobre el lugar correcto. Restar un punto por cada bloque sobre el lugar incorrecto. Global: Para cada bloque que esté sobre la estructura de apoyo correcta (es decir, la estructura que tiene debajo es exactamente la que tiene que ser), añadir un punto por cada bloque en la pila. Para cada bloque que está sobre una estructura incorrecta, restar un punto por cada bloque en la pila. BÚSQUEDA EN HAZ: La búsqueda en haz es parecida a la búsqueda en amplitud en cuanto a que avanza nivel por nivel. Sin embargo, se diferencia de esta, la búsqueda en haz se mueve hacia abajo solo a través de los mejores nodos de cada nivel; los otros nodos se ignoran. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 98.
    Inteligencia Artificial. CUARTA UNIDAD: PROLOG(PROGRAMACIÓN LÓGICA) 4.1. Introducción 4.2. Hechos 4.3. Variables 4.4. Reglas 4.5. El ámbito de las variables 4.6. Operadores 4.7. La resolución de objetivos 4.8. El mecanismo de control de PROLOG 4.9. Entrada / Salida 4.10. Historia y desarrollo de Prolog 4.11. Tipos de datos en Prolog 4.12. Estructura de un programa PROLOG 4.13. Funciones y Pasos de Parámetros. 4.14. Estructuras de Datos en Prolog Introducción. La Quinta Generación prevé máquinas diseñadas para el tratamiento lógico, de capacidades análogas a las capacidades de anteriores generaciones de ordenadores para tratar operaciones aritméticas. Se trata de ordenadores que tienen el PROLOG como lenguaje nativo (lenguaje máquina), con capacidad para procesar millones de inferencias lógicas por segundo (LIPS.) La programación lógica es un paradigma de los lenguajes de programación en el cual los programas se consideran como una serie de aserciones lógicas. De esta forma, el conocimiento se representa mediante reglas, tratándose de sistemas declarativos. Una representación declarativa es aquélla en la que el conocimiento está especificado, pero no viene dada la manera en que dicho conocimiento debe ser usado. El más popular de los sistemas de programación lógica es el PROLOG. Prolog es un lenguaje de programación hecho para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Más exactamente, el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones. Un conjunto de reglas que describa estas propiedades y estas relaciones es un programa Prolog. Prolog es un lenguaje de programación que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos. Un programa escrito en PROLOG puro, es un conjunto de claúsulas de Horn. Sin embargo, PROLOG, como lenguaje de programación moderno, incorpora más cosas, como instrucciones de Entrada/Salida, etc. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 99.
    Inteligencia Artificial. Una claúsulade Horn puede ser ó bien una conjunción de hechos positivos ó una implicación con un único consecuente (un único termino a la derecha). La negación no tiene representación en PROLOG, y se asocia con la falta de una afirmación (negación por fallo), según el modelo de suposición de un mundo cerrado (CWA); solo es cierto lo que aparece en la base de conocimiento ó bien se deriva de esta. HISTORIA Y DESARROLLO DE PROLOG. Una de las preocupaciones más tempranas de la computación de los años cincuenta fue la posibilidad de hacer programas que llevaran a cabo demostraciones automáticas de teoremas. Así empezaron los primeros trabajos de inteligencia artificial que más de veinte años después dieron lugar al primer lenguaje de programación que contempla, como parte del intérprete, los mecanismos de inferencia necesarios para la demostración automática. Este primer lenguaje está basado en el formalismo matemático de la Lógica de Primer Orden y ha dado inicio a un nuevo y activo campo de investigación entre las matemáticas y la computación que se ha denominado la Programación Lógica. Estos mecanismos de prueba fueron trabajados con mucho entusiasmo durante una época, pero, por su ineficiencia, fueron relegados hasta el nacimiento de PROLOG, ocurrido en 1970 en la Universidad de Marsella, Francia, en el seno de un grupo de investigación en el campo de la Inteligencia Artificial. La Programación Lógica tiene sus orígenes más cercanos en los trabajos de prueba automática de teoremas de los años sesenta. J. A. Robinson propone en 1965 una regla de inferencia a la que llama resolución, mediante la cual la demostración de un teorema puede ser llevada a cabo de manera automática. La resolución es una regla que se aplica sobre cierto tipo de fórmulas del Cálculo de Predicados de Primer Orden, llamadas cláusulas y la demostración de teoremas bajo esta regla de inferencia se lleva a cabo por reducción al absurdo. Actualmente, la programación lógica ha despertado un creciente interés que va mucho más allá del campo de la Inteligencia Artificial ( IA ) y sus aplicaciones. Los japoneses, con su proyecto de máquinas de la quinta generación, dieron un gran impulso a este paradigma de programación. Sin embargo, antes que ellos existían ya en Estados Unidos y en Europa grupos de investigación en este campo, en países como Inglaterra, Holanda, Suecia y, desde luego, Francia. A principios de los años ochentas los japoneses comienzan a invertir recursos en un proyecto que denominan la Quinta Generación, para lucrar con la buena fama de los 4GL. Con este ambicioso proyecto Japón busca obtener el liderazgo en computación, usando como base la Programación Lógica y la Inteligencia Artificial. La programación lógica tiene sus raíces en el cálculo de predicados, que es una teoría matemática que permite, entre otras cosas, lograr que un computador pueda realizar inferencias, capacidad que es requisito para que un computador sea una "máquina inteligente". La realización del paradigma de la programación lógica es el lenguaje Prolog. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 100.
    Inteligencia Artificial. El Prologestuvo un tiempo diseñado para ejecutarse en minicomputadoras o estaciones de trabajo, actualmente hay versiones en Prolog que pueden instalarse en computadores personales como IBM- PC y PC-Compatibles. PROgramación LOGica Las diferencias sintácticas entre las representaciones lógicas y las representaciones PROLOG son las siguientes: • En PROLOG todas las variables están implícitamente cuantificadas universalmente. • En PROLOG existe un símbolo explicito para la conjunción "y" (","), pero no existe uno para la disyunción "o", que se expresa como una lista de sentencias alternativas. • En PROLOG, las implicaciones p --> q se escriben alrevés q :- p, ya que el interprete siempre trabaja hacia atrás sobre un objetivo, como se vera más adelante. Elementos fundamentales del lenguaje PROLOG. HECHOS VARIABLES REGLAS OPERADORES ESTRUCTURA DE UN PROGRAMA PROLOG Un programa Prolog está formado por una secuencia de enunciados: hechos, reglas y comentarios. Una relación puede estar especificada por hechos, simplemente estableciendo objetos que satisfacen la relación o por reglas establecidas acerca de la relación. Cada regla está formada por un primer miembro (o la cabeza de la regla), un segundo miembro (o cola de la regla) ligados por " :- " y termina con el carácter " . ". %código del programa %%Hechos ** mujer(maria). hombre(pedro). hombre(manuel). hombre(arturo). %%Relaciones ** padre(pedro,manuel). padre(pedro,arturo). padre(pedro,maria). %%Reglas ** nino(X,Y):- padre(Y,X) hijo(X,Y):-nino(X,Y),hombre(X). hija(X,Y):-nino(X,Y),mujer(X). hermano_o_hermana(X,Y):-padre(Z,X),padre(Z,Y). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 101.
    Inteligencia Artificial. hermano(X,Y):-hermano_o_hermana(X,Y),hombre(X). hermana(X,Y):-hermano_o_hermana(X,Y),mujer(X). Hechos. Expresan relaciones entre objetos. Supongamos que queremos expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relación llamada "tiene". La forma de representarlo en PROLOG es: tiene(coche,ruedas). • Los nombres de objetos y relaciones deben comenzar con una letra minúscula. • Primero se escribe la relación, y luego los objetos separados por comas y encerrados entre paréntesis. • Al final de un hecho debe ir un punto ("."). El orden de los objetos dentro de la relación es arbitrario, pero debemos ser coherentes a lo largo de la base de hechos. Ejemplo: Suponga que queremos escribir la información genealógica de un grupo de personas. Para esto podemos utilizar los predicados madre y padre del siguiente modo: padre(juan, amanda). madre(ximena, amanda). madre(laura, juan). padre(andres, juan). padre(patricio, bonifacio). padre(juan, patricio). padre(juan, ana). madre(ximena, ana). El prompt | ?— indica que el intérprete está listo para escuchar los requerimientos del usuario. A partir de esto uno puede hacer consultas: | ?- madre(ximena,ana). yes | ?- padre(juan, ana). yes | ?- padre(juan, ximena). no Nótese que PROLOG responde yes, sólo cuando el hecho asociado aparece en la base de datos que tiene almacenada, o cuando se deriva de la información almacenada. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 102.
    Inteligencia Artificial. Una preguntamás interesante involucra el uso de variables. Por ejemplo, si queremos saber si existe alguien que sea el padre de Juan, podemos preguntar: | ?- padre(X,juan). X = andres ?; no | ?- Al decir padre (X , juan) estamos preguntándole a PROLOG si existe alguna interpretación para la variable X que haga que padre (X, juan) sea verdadera. PROLOG responde que X = andres es un valor que haria que la consulta sea verdadera. Mediante el signo ?. PROLOG pregunta si se desea buscar otra solución para el mismo problema. Al decir “;” se le indica a PROLOG que efectivamente uno quiere buscar otra solución. Al no haber otra solución. PROLOG responde no. Otro ejemplo puede ser: | ?- madre(X,Y). X = ximena, Y=amanda?; X = laura, Y = juan ?; X = ximena, Y = ana ? no | ?- En este último ejemplo. PROLOG busca todos los pares (X, Y) tales que madre (X, Y) es verdadero. También es posible realizar preguntas más complejas. Por ejemplo, supongamos que queremos saber ¿quién es el abuelo paterno de ana?: | ?- padre(X,ana), padre(Y,X). X = Juan, Y = andres ?; No | ?- En este ejemplo, la consulta padre (X,ana), padre(Y,X). se procesa en orden. Primero se resuelve la subconsulta padre (X, ana) y los valores resultantes de X se usan para responder la segunda subconsulta. La “;” se interpreta como conjunción. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 103.
    Inteligencia Artificial. TIPOS DEDATOS EN PROLOG Symbol: Hay dos tipos de símbolos. Un grupo de caracteres consecutivos (letras, números y signos de subrayado) que comienzan con un carácter en minúscula. Ejemplo: alto, alto_edificio, el_alto_ edificio_en_la_ciudad Un grupo de caracteres consecutivos(letras y números) que comienzan y terminan con dobles comillas("). Este tipo es útil cuando se quiere comenzar el símbolo con un carácter en mayúscula o si se quieres agregar espacios entre los caracteres del símbolo. Ejemplo: "alto","alto edificio" String: Cualquier grupo de caracteres consecutivos (letras y números) que comience y termine con dobles comillas("). Es igual a símbolo pero Prolog los trata de forma distinta. Ejemplo: "alto","alto edificio" Integer: Cualquier número comprendido entre (-32.768 y 32.768). El límite esta determinado porque los enteros se almacenan como valores de 16 bits, este límite puede variar según la versión de Prolog. Ejemplo: 4,-300,3004 Real: Cualquier numero real en el rango +/- 1E-307 a +/-1E+308. El formato incluye estas opciones: signo, numero, punto decimal, fracción, E(exponente), signo para el exponente, exponente. Ejemplo: 3,3.1415 Char: Cualquier carácter de la lista ASCII estándar, posicionado entre dos comillas sencillas(‘). Ejemplos: ‘t’,‘X’,‘f’ Variables. Representan objetos que el mismo PROLOG determina. Una variable puede estar instanciada ó no instanciada. Esta instanciada cuando existe un objeto determinado representado por la variable. De este modo, cuando preguntamos "¿Un coche tiene X?", PROLOG busca en los hechos cosas que tiene un coche y respondería: X = ruedas. Instanciando la variable X con el objeto ruedas. • Los nombres de variables comienzan siempre por una letra mayúscula. Un caso particular es la variable anónima, representada por el carácter subrayado ("_"). Es una especie de comodín que utilizaremos en aquellos lugares que debería aparecer una Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 104.
    Inteligencia Artificial. variable, perono nos interesa darle un nombre concreto ya que no vamos a utilizarla posteriormente. En Prolog una variables se indica iniciando con mayúsculas (X, Y, Persona, ...). Las variables representan cualquier objeto y se usan dentro de los predicados (NO como nombres de predicados). Por ejemplo, si a Juan le pertenece “algo”: pertenece(juan,X). Reglas. Las reglas se utilizan en PROLOG para significar que un hecho depende de uno ó mas hechos. Son la representación de las implicaciones lógicas del tipo p ---> q (p implica q). • Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-". • La cabeza está formada por un único hecho. • El cuerpo puede ser uno ó mas hechos (conjunción de hechos), separados por una coma (","), que actúa como el "y" lógico. • Las reglas finalizan con un punto ("."). La cabeza en una regla PROLOG corresponde al consecuente de una implicación lógica, y el cuerpo al antecedente. Este hecho puede conducir a errores de representación. Supongamos el siguiente razonamiento lógico: tiempo(lluvioso) ----> suelo(mojado) suelo(mojado) Que el suelo está mojado, es una condición suficiente de que el tiempo sea lluvioso, pero no necesaria. Por lo tanto, a partir de ese hecho, no podemos deducir mediante la implicación, que está‚ lloviendo (pueden haber regado las calles). La representación correcta en PROLOG, sería: suelo(mojado) :- tiempo(lluvioso). suelo(mojado). Adviértase que la regla está "al revés". Esto es así por el mecanismo de deducción hacia atrás que emplea PROLOG. Si cometiéramos el error de representarla como: tiempo(lluvioso) :- suelo(mojado). suelo(mojado). PROLOG, partiendo del hecho de que el suelo está mojado, deduciría incorrectamente que el tiempo es lluvioso. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 105.
    Inteligencia Artificial. Para generalizaruna relación entre objetos mediante una regla, utilizaremos variables. Por ejemplo: Representación lógica Representación PROLOG es_un_coche(X) ----> tiene(X,ruedas) tiene(X,ruedas) :- es_un_coche(X). Con esta regla generalizamos el hecho de que cualquier objeto que sea un coche, tendrá ruedas. Al igual que antes, el hecho de que un objeto tenga ruedas, no es una condición suficiente de que sea un coche. Por lo tanto la representación inversa sería incorrecta. Ejemplo Al programa que teníamos anteriormente, podemos agregarle las siguientes reglas: abuelo(X,Y):- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(XZ), padre(Z,Y). Con estas reglas podernos consultar quién es abuelo de quién: | ?- abuelo(X,Y). X = andres, Y=ainanda ?; X = andres, Y = patricio ? ; X = andres, Y = ana ?; X = juan, Y = bonifacio ?; no | ?- Las reglas para abuelo se pueden escribir como la regla: abuelo(X,Y):— padre(X,Z), (madre(Z,Y);padre(Z,Y)). En esta notación el símbolo “;” se utiliza corno disyunción. La regla anterior es equivalente a las dos reglas originales. El uso de “;” debe restringirse intentando mantener la claridad de las reglas que se escriban. No es recomendable utilizar “;” cuando el resultado sea difícil de leer. Como ejercicio, defina la relación herm (X , Y) entre dos individuos. Esta relación será verdadera cuando los dos sujetos tengan al padre o a la madre en común. Suponga que se desea definir la relación antecesor (X , Y). En primer término, definiremos: antecesorDirecto(X,Y) :— (padre(X,Y) ;madre(X,Y)). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 106.
    Inteligencia Artificial. Con elsignificado obvio Así, podremos escribir que: antecesor(X,Y) antecesorDirecto(X,Y). antecesor(X,Y) antecesorDirecto(X,Z), antecesor(Z,Y). De modo que obtenemos: | ?— entecesor(X,Y). X = juan, Y = amanda ? ; X = andres, Y = juan ? ; X = patricio, Y = bonifacio ?; X = juan, Y = patricio ?; % y así sucesivamente El ámbito de las variables. Cuando en una regla aparece una variable, el ámbito de esa variable es únicamente esa regla. Supongamos las siguientes reglas: (1) hermana_de(X,Y) :- hembra(X), padres(X,M,P), padres(Y,M,P). (2) puede_robar(X,P) :- ladron(X), le_gusta_a(X,P), valioso(P). Aunque en ambas aparece la variable X (y la variable P), no tiene nada que ver la X de la regla (1) con la de la regla (2), y por lo tanto, la instanciación de la X en (1) no implica la instanciacion en (2). Sin embargo todas las X de una misma regla sí que se instanciarán con el mismo valor. Operadores. Son predicados predefinidos en PROLOG para las operaciones X = Y igual matemáticas básicas. Su sintaxis depende de la posición que X = Y distinto ocupen, pudiendo ser infijos ó prefijos. Por ejemplo el operador suma ("+"), podemos encontrarlo en forma prefija '+(2,5)' ó X < Y menor bien infija, '2 + 5'. También disponemos de predicados de X > Y mayor igualdad y desigualdad. X =< Y menor ó igual Al igual que en otros lenguajes de programación es necesario X >= Y mayor ó igual tener en cuenta la precedencia y la asociatividad de los Verdadero si X e X=:=Y operadores antes de trabajar con ellos. Y son iguales Verdadero si X e En cuanto a precedencia, es la típica. Por ejemplo, 3+2*6 se X== Y son diferentes evalúa como 3+(2*6). En lo referente a la asociatividad, Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 107.
    Inteligencia Artificial. PROLOG esasociativo por la izquierda. Así, 8/4/4 se interpreta como (8/4)/4. De igual forma, 5+8/2/2 significa 5+((8/2)/2). Aritmética: comparaciones: =, $<$, $>$, $=<$, $>=$, $/=$ (resultado binario) operaciones: +, -, *, / (división float), // (división integer), mod (números enteros) X is A $<$op$>$ B (“X” debe ser una variable no instanciada) El operador 'is'. Es un operador infijo, que en su parte derecha lleva un término que se interpreta como una expresión aritmética, contrastándose con el término de su izquierda. Por ejemplo, la expresión '6 is 4+3.' es falsa. Por otra parte, si la expresión es 'X is 4+3.', el resultado será la instanciación de X: X=7 Una regla PROLOG puede ser esta: densidad(X,Y) :- poblacion(X,P), area(X,A), Y is P/A. Algunos comandos básicos • consult: El predicado consult esta pensado para leer y compilar un programa PROLOG o bien para las situaciones en las que se precise añadir las cláusulas existentes en un determinado fichero a las que ya están almacenadas y compiladas en la base de datos. Su sintaxis puede ser una de las siguientes: consult ( fichero ). consult( 'fichero.ext' ). consult( 'c:iaprologfichero' ). • recon: El predicado recon es muy parecido a consult, con la salvedad de que las cláusulas existentes en el fichero consultado, reemplazan a las existentes en la base de hechos. Puede ser útil para sustituir una única cláusula sin consultar todas las demás, situando esa cláusula en un fichero. Su sintaxis es la misma que la de consult. • forget: Tiene como fin eliminar de la base de datos actual aquellos hechos consultados de un fichero determinado. Su sintaxis es: forget( fichero ). • exitsys: Este predicado nos devuelve al sistema operativo. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 108.
    Inteligencia Artificial. Programación básicaen PROLOG. Con los datos que conocemos, ya podemos construir un programa en PROLOG. Necesitaremos un editor de textos para escribir los hechos y reglas que lo componen. Un ejemplo sencillo de programa PROLOG es el siguiente: quiere_a(maria,enrique). quiere_a(juan,jorge). quiere_a(maria,susana). quiere_a(maria,ana). quiere_a(susana,pablo). quiere_a(ana,jorge). varon(juan). varon(pablo). varon(jorge). varon(enrique). hembra(maria). hembra(susana). hembra(ana). teme_a(susana,pablo). teme_a(jorge,enrique). teme_a(maria,pablo). /* Esta linea es un comentario */ quiere_pero_teme_a(X,Y) :- quiere_a(X,Y), teme_a(X,Y). querido_por(X,Y) :- quiere_a(Y,X). puede_casarse_con(X,Y) :- quiere_a(X,Y), varon(X), hembra(Y). puede_casarse_con(X,Y) :- quiere_a(X,Y), hembra(X), varon(Y). Una vez creado, lo salvaremos para su posterior consulta desde el interprete PROLOG. Un programa PROLOG tiene como extensión por defecto '.PRO'. Le daremos el nombre 'relacion.pro'. Un programa de “relaciones familiares” definiendo la relación “abuelo”. Sería: % familia: % hechos: m(luis). m(rico). m(fuhed). m(edgar). f(aida). f(bety). f(shafy). papa(fuhed,luis). mama(aida,luis). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 109.
    Inteligencia Artificial. papa(fuhed,rico). papa(luis,edgar). papa(fuhed,bety). papa(fuhed,shafy). papa(jesus,fuhed). % reglas: abuelo(X, Z) :- papa(X,Y), papa(Y, Z). abuelo(X,Z) :- papa(X, Y), mama(Y, Z). Otro ejemplo. A modo de ilustración considere el siguiente programa: grande (oso). grande(elefante). pequeno (gato). cafe(oso). negro (gato). gris(elefante). oscuro(Z) :- negro(Z). oscuro(Z) :— cafe(Z). Junto con la consulta: ? - oscuro(X), grande(X). La ejecución del programa PROLOG es equivalente a realizar una búsqueda en profundidad en un espacio definido por el programa y por el objetivo inicial. La resolución de objetivos. Hemos creado un programa PROLOG [relacion.pro]. A partir de este momento podemos interrogar la base de hechos, mediante consultas. Una consulta tiene la misma forma que un hecho. Consideremos la pregunta: ?-quiere_a(susana,pablo). PROLOG buscar por toda la base de conocimiento hechos que coincidan con el anterior. Dos hechos coinciden si sus predicados son iguales, y cada uno de sus correspondientes argumentos lo son entre sí. Si PROLOG encuentra un hecho que coincida con la pregunta, responderá yes. En caso contrario responderá no. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 110.
    Inteligencia Artificial. Además, unapregunta puede contener variables. En este caso PROLOG buscara por toda la base de hechos aquellos objetos que pueden ser representado por la variable. Por ejemplo: ?-quiere_a(maria, Alguien). [NOTA: Alguien es un nombre perfectamente válido de variable, puesto que empieza por una letra mayuscula.] El resultado de la consulta es: Alguien = enrique El hecho 'quiere_a(maria,enrique).' coincide con la pregunta al instanciar la variable Alguien con el objeto 'enrique'. Por lo tanto es una respuesta valida, pero no la única. Por eso se nos pregunta si queremos obtener más respuestas. En caso afirmativo, obtendríamos: Alguien = susana Alguien = ana La “,” (coma) representa una conjunción (Y). Es decir que hay que probar ambas submetas para probar la meta representada por la regla. Negación - en Prolog se implementa por lo que se conoce como negación por fallo, es decir que si algo no se puede probar se considera falso. La disjunción (O) se puede implementar mediante dos reglas con la misma meta. También se pueden tener reglas recursivas, en las que una submeta es la misma meta (debe haber una condición de terminación). Esto se ilustra en el resto del ejemplo de la familia: hermano(X, Z) :- papa(Y,X), papa(Y, Z), not(X=Z). tio(X, Z) :- m(X), papa(Y, Z), hermano(X,Y). tia(X,Z):-f(X),papa(Y,Z),hermano(X,Y). proj(X, Y) :- papa(X, Y). proj(X, Y) :- mama(X, Y). ancestro(X, Z) :- proj(X, Z). ancestro(X, Z) :- proj(X, Y), ancestro(Y, Z). El operador "not". Se define de tal forma que el objetivo not(X) se satisface solo si fracasa la evaluación de X. En muchos casos, puede sustituir al operador corte, facilitando la lectura de los programas. Por ejemplo: a :- b, c. a :- not(b), d. Equivale a: a :- b, !, c. a :- d. Sin embargo, en términos de coste, el operador corte es más eficiente, ya que en el primer caso PROLOG intentará satisfacer b dos veces, y en el segundo, solo una. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 111.
    Inteligencia Artificial. Estructuras dedatos: Las Listas Lista Cabeza Cola Una lista es una arreglo ordenado se elementos cuya [a,b,c,d] a [b,c,d] longitud (numero de elementos) es variable. La lista es una estructura de datos muy común en la programación no [a] a [] (lista vacía) numérica. Es una secuencia ordenada de elementos que [] no tiene no tiene puede tener cualquier longitud. Ordenada significa que el orden de cada elemento es significativo. Un elemento [[a,b],c] [a,b] [c] puede ser cualquier término e incluso otra lista. Se [a,[b,c]] a [[b,c]] representa como una serie de elementos separados por [a,b,[c,d]] a [b,[c,d]] comas y encerrados entre corchetes. Por ejemplo: [Dom, Lun, Mar, Mier, Jue, Vier, Sab] En Prolog se representa con una serie de elementos separados por “,” entre paréntesis cuadrados. Ejemplos: [a,b,c] [ ] - lista vacía [a,[b,c],d] - un elemento puede ser a su vez una lista Para procesar una lista, la dividimos en dos partes: la cabeza y la cola. Por ejemplo: Para dividir una lista, utilizamos el símbolo "|". Una expresión con la forma [X | Y] instanciar X a la cabeza de una lista e Y a la cola. Es decir, las listas se manipulan especificando su “cabeza” (Head - primer elemento), y “cola” (Tail - lista del resto de los elementos.) Por ejemplo: p([1,2,3]). p([el,gato,estaba,[en,la,alfombra]]). ?-p([X|Y]). X = 1, Y = [2,3] More (Y/N):y X = el, Y = [gato,estaba,[en,la,alfombra]] ------------------------------------------ [a,b,c] - H = a, T = [b,c] [a] - H = a, T = [ ] [[b,c],d] - H = [b,c], T = [d] [ ] - H = fail, T = [ ] El valor de las listas en un programa Prolog disminuye si no es posible identificar los elementos individuales que habrán de integrarlas. Debido a ello, es necesario tener en cuenta el concepto de su Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 112.
    Inteligencia Artificial. división endos partes: cabeza y cola. La cabeza de la lista es el primer elemento de la misma. La cola es el resto de la lista, sin importar lo que pueda contener. Para hacer uso practico de la capacidad de dividir listas en cabeza y cola, Prolog proporciona una notación especial con la que se definen las listas en los programas. Existen dos símbolos especiales que se utilizan: El corchete abierto /cerrado. Se usa para denotar el inicio y el final de una lista. El separador, su símbolo es | y se usa para permitir que una lista se represente como una cabeza y una cola. Para procesar una lista, la dividimos en dos partes: la cabeza y la cola. Ejemplo: Lista Cabeza Cola ----- ------ ---- [a, b, c, d] a [b, c, d] [a] a [ ] (lista vacía) [ ] no tiene no tiene elementos [[a, b],c] [a, b] [c] [a,[b, c]] a [[b, c]] [a, b,[c, d]] a [b,[c, d]] Para dividir una lista, utilizamos el símbolo "|". Una expresión con la forma [ X | Y ] instanciar “X” a la cabeza de una lista e “Y” a la cola. Ejemplo: p([1,2,3]). ?-p([X | Y]). X = 1, Y = [2,3] p([el, gato, estaba,[ en, la, alfombra ]]). ?-p([X | Y]). X = el, Y = [gato, estaba, [en, la, alfombra]] Se pueden hacer estructuras tan complejas como se quiera en Prolog. Se pueden poner listas dentro de listas. Ejemplo: animales([[mono, búfalo, rata], [serpiente, iguana, cocodrilo], [paloma, pingüino]]) A continuación veremos algunas operaciones importantes con listas. % inserta un elemento al inicio de una lista: inserta(E,Li,Lf):-Lf=[E$|$Li]. % inserta mejorado: inserta2(E,Li,[E$|$Li]). % match. match([],[]). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 113.
    Inteligencia Artificial. match([H1$|$T1],[H2$|$T2]):-H1=H2, match(T1,T2). % concatena 2 listas (para búsqueda): agrega([ ],L,L). agrega([H$|$L1],L2,[H$|$L3]):- agrega(L1,L2,L3). Operador corte Utilizando el operador de corte, observaremos el siguiente comportamiento: | ?— rnernber(X,[a,b)), !. X = a ?; no | ?- Cuando se encuentra con el objetivo !, PROLOG se compromete con todas las unificaciones que se han realizado antes del ! y desde el momento que se introduce el ! a la lista de objetivos pendientes. Como estilo de programación se recomienda escribir programas sin corte La recursividad. La recursividad es un mecanismo que da bastante potencia a cualquier lenguaje de programación. Veamos un ejemplo de programación recursiva que nos permitirá determinar si un átomo es miembro de una lista dada: (1) miembro(X,[X|_]). (2) miembro(X,[_|Y]) :- miembro(X,Y). La regla (1) es el caso base de la recursión. Se evaluará como cierta siempre que coincida la variable X con la cabeza de la lista que se pasa como argumento. En la regla (2) está la definición recursiva. X es miembro de una lista si lo es de la cola de esa lista (la cabeza se comprueba en la regla (1)). La regla (1) es una simplificación de la regla: miembro(X,[Y|_]) :- X = Y. La traza para el caso de 'miembro(b,[a,b,c]).' es la siguiente: (1) miembro(b,[a,b,c]) :- b = a. ---> no. (2) miembro(b,[a,b,c]) :- miembro(b,[b,c]). (1) miembro(b,[b,c]) :- b = b. ---> yes. Si necesitamos conocer la longitud de una lista, emplearemos una función recursiva como la siguiente: longitud([],0). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 114.
    Inteligencia Artificial. longitud([_|Y],L1) :- longitud(Y,L2), L1 is L2 + 1. Otro ejemplo muy típico de función recursiva es el del factorial de un número: factorial(0,1) :- !. factorial(X,Y) :- X1 is X-1, factorial(X1,Y1), Y is X*Y1. ENTRADA / SALIDA PROLOG, al igual que la mayoría de lenguajes de programación modernos incorpora predicados predefinidos para la entrada y salida de datos. Estos son tratados como reglas que siempre se satisfacen. • write: Su sintaxis es: write('Hola mundo'). Las comillas simples encierran constantes, mientras que todo lo que se encuentra entre comillas dobles es tratado como una lista. También podemos mostrar el valor de una variable, siempre que este instanciada: write(X). • nl: El predicado nl fuerza un retorno de carro en la salida. Ejemplo: • write('línea 1'), nl, write('línea 2'). tiene como resultado: línea 1 línea 2 • read: Lee un valor del teclado. La lectura del comando read no finaliza hasta que se introduce un punto ".". Su sintaxis es: read(X). Instancia la variable X con el valor leído del teclado. read(ejemplo). Se evalúa como cierta siempre que lo tecleado coincida con la constante entre paréntesis (en este caso 'ejemplo'). Por ejemplo con, write(X), si “X” esta instanciada se despliega su valor, si no se despliega un identificador. Por ejemplo con, read(X), si “X” no esta instanciada se instancia al valor leído, si no se compara el valor que tiene con el leído y falla si son diferentes. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 115.
    Inteligencia Artificial. EL MECANISMODE CONTROL DE PROLOG El mecanismo empleado por PROLOG para satisfacer las cuestiones que se le plantean, es el de razonamiento hacia atrás (backward) complementado con la búsqueda en profundidad (depth first) y la vuelta atrás o reevaluación (backtracking). Razonamiento hacia atrás: Partiendo de un objetivo a probar, busca las aserciones que pueden probar el objetivo. Si en un punto caben varios caminos, se recorren en el orden que aparecen en el programa, esto es, de arriba a abajo y de izquierda a derecha. Reevaluación: Si en un momento dado una variable se instancia con determinado valor con el fin de alcanzar una solución, y se llega a un camino no satisfactorio, el mecanismo de control retrocede al punto en el cual se instanció la variable, la desinstancia y si es posible, busca otra instanciación que supondrá un nuevo camino de búsqueda. Ejemplo: Se puede ilustrar esta estrategia sobre el ejemplo anterior. Supongamos la pregunta: ?-puede_casarse_con(maria, X). PROLOG recorre la base de datos en busca de un hecho que coincida con la cuestión planteada. Lo que halla es la regla: puede_casarse_con(X, Y) :- quiere_a(X, Y), varon(X), hembra(Y). Produciéndose una coincidencia con la cabeza de la misma, y una instanciación de la variable “X” de la regla con el objeto 'maria'. Tendremos por lo tanto: (1) puede_casarse_con(maria,Y) :- quiere_a(maria,Y), varon(maria), hembra(Y). A continuación, se busca una instanciación de la variable “Y” que haga cierta la regla, es decir, que verifique los hechos del cuerpo de la misma. La nueva meta será : (2) quiere_a(maria, Y). De nuevo PROLOG recorre la base de datos. En este caso encuentra un hecho que coincide con el objetivo: quiere_a(maria, enrique). instanciando la variable “Y” con el objeto 'enrique'. Siguiendo el orden dado por la regla (1), quedan por probar dos hechos una vez instanciada la variable “Y”: varon(maria), hembra(enrique). Se recorre de nuevo la base de datos, no hallando en este caso ninguna coincidencia con el hecho “varón(maria)”. Por lo tanto, PROLOG recurre a la vuelta atrás, desistanciando valor de la variable “Y”, y retrocediendo con el fin de encontrar una nueva instanciación de la misma que verifique el hecho (2). Un nuevo recorrido de la base de hechos da como resultado la coincidencia con: quiere_a(maria, susana). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 116.
    Inteligencia Artificial. Se repiteel proceso anterior. La variable Y se instancia con el objeto 'susana' y se intentan probar los hechos restantes: varón(maria), hembra(susana). De nuevo se produce un fallo que provoca la desinstanciación de la variable “Y”, así como una vuelta atrás en busca de nuevos hechos que coincidan con (2). Una nueva reevaluación da como resultado la instanciación de “Y” con el objeto 'ana' (la ultima posible), y un nuevo fallo en el hecho “varón(maria).” Una vez comprobadas sin éxito todas las posibles instanciaciones del hecho (2), PROLOG da por imposible la regla (1), se produce de nuevo la vuelta atrás y una nueva búsqueda en la base de datos que tiene como resultado la coincidencia con la regla: (3) puede_casarse_con(maria,Y) :- quiere_a(maria,Y), hembra(maria), varon(Y). Se repite todo el proceso anterior, buscando nuevas instanciaciones de la variable “Y” que verifiquen el cuerpo de la regla. La primera coincidencia corresponde al hecho: quiere_a(maria,enrique). que provoca la instanciación de la variable “Y” con el objeto 'enrique'. PROLOG tratar de probar ahora el resto del cuerpo de la regla con las instanciaciones actuales: hembra(maria), varon(enrique). Un recorrido de la base de datos, da un resultado positivo en ambos hechos, quedando probado en su totalidad el cuerpo de la regla (3) y por lo tanto su cabeza, que no es mas que una de las soluciones al objetivo inicial. X = enrique PROLOG utiliza un mecanismo de búsqueda independiente de la base de datos. Aunque pueda parecer algo ilógico, es una buena estrategia puesto que garantiza el proceso de todas las posibilidades. Es útil para el programador conocer dicho mecanismo a la hora de depurar y optimizar los programas. Control Prolog realiza, en forma general, una búsqueda por profundidad con retroceso (“backtracking”). Al intentar probar una meta (regla), busca primero probar la primera condición, después la segunda, etc. Si alguna es falsa, entonces falla dicha regla, e intenta la siguiente regla (si existe) para la misma meta. Hay ciertas formas de alterar la estrategia básica de búsqueda: CUT (!) - evita el ``backtracking'' Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 117.
    Inteligencia Artificial. Ejemplos: X:- a,b,c,!,d,e. Predicados mutuamente exclusivos - escalón: esc(X,-1):- X $<$ 0, !. esc(X, 0):- X $=$ 0, !. esc(X, 1):- X $>$ 0, !. FAIL - siempre es falso (TRUE - siempre es verdadero) Ejemplos: impuesto(Persona, X) :- desempleado(Persona), !, fail. impuesto(Persona, X) :- ... Excepciones: diferente(X,X):-!,fail. diferente(X,Y). NOT - verdadero si no se puede probar la meta. Predicado predefinido que se podría definir como: not(P):-P,!,fail. not(P) Ordenamiento de Listas Una solución es insertar el elemento en el lugar que le corresponde: sort([H|T],LO) :- insertao(H,[F|T],[F|R]) :- sort(T,TO), H > F, insertao(H,TO,LO). insertao(H,T,R). sort([],[]). insertao(H,[F|R],[H,F|R]) :- insertao(H,[],[H]). H =< F. Método Quicksort (Ej. Dividir en menores y mayores a un cierto elemento, ordenarlos y juntarlos todos.) qsort([H|T],LO) :- El > H, divide(H,T,Men,May), divide(El,T,Men,May). qsort(Men,MenO), divide(El,[H|T],Men,[H|May]) :- qsort(May,MayO), El < H, agrega(MenO,[H|MayO],LO). divide(El,T,Men,May). qsort([],[]). divide(_,[],[],[]). divide(El,[H|T],[H|Men],May) :- Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 118.
    Inteligencia Artificial. Manipulación dela Base de Conocimientos Un programa en Prolog se puede ver como una ``base de datos'', de forma que 'esta puede ser modificada dinámicamente -- agregando y borrando cláusulas. Para ello existen varios predicados predefinidos: assert: agregar una cláusula a la base de datos asserta: agregar una cláusula al inicio de la base de datos assertz: agregar una cláusula al final la base de datos retract: borra una cláusula de la base de datos Ejemplos: assert(padre(juan,rita)). retract(padre(juan,rita)). Estas facilidades son muy poderosas y útiles en algunas aplicaciones, pero hay que usarlas con cuidado ya que en realidad se esta modificando el programa resultando en que en diferentes momentos puede dar diferentes resultados. Sistemas Expertos en Prolog Es casi inmediato el implementar un sistema de reglas de producción en Prolog, ya que sus cláusulas se pueden ver como reglas y su interprete como una maquina de inferencias la cual realiza encadenamiento hacia atrás y búsqueda en profundidad. Un sistema experto para créditos bancarios podría codificarse como el siguiente programa en Prolog: prest(X,C):- solv(X,C),hist(X,C),ref(X,C). hist(X,C):- tarjeta(X,T1),tarjeta(X,T2). hist(X,C):- prestamo(X,casa). hist(X,C):- prestamo(X,carro). solv(X,C):- ing(X,I), P is C / 10, T is 3 * P, I > T. ref(X,C):- refer(X,Y), refer(X,Z), refer(X,W), not(Y=Z), not(Z=W). % Un caso: prestamo(juan,carro). ing(juan,100). refer(juan,pedro). refer(juan,maria). refer(juan,sol). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 119.
    Inteligencia Artificial. FUNCIONES YPASOS DE PARÁMETROS. La recursividad es un mecanismo que da bastante potencia a cualquier lenguaje de programación. Ejemplo: La siguiente programación recursiva nos permitirá determinar si un tomo es miembro de una lista dada: (1) miembro(X,[X|_]). (2) miembro(X,[_|Y]) :- miembro(X,Y). La regla (1) es el caso base de la recursión. Se evalúa como cierta siempre que coincida la variable “X” con la cabeza de la lista que se pasa como argumento. En la regla (2) es la definición recursiva. “X” es miembro de una lista si lo es de la cola de esa lista (la cabeza se comprueba en la regla (1)). La regla (1) es una simplificación de la regla: miembro(X,[Y|_]) :- X = Y. La traza para el caso de 'miembro(b,[a,b,c]).' es la siguiente: (1) miembro(b,[a,b,c]) :- b = a. no. (2) miembro(b,[a,b,c]) :- miembro(b,[b,c]). (1) miembro(b,[b,c]) :- b = b. yes. Si necesitamos conocer la longitud de una lista, emplearemos una función recursiva como la siguiente: longitud([ ],0). longitud([_|Y],L1) :- longitud(Y,L2), L1 is L2 + 1. Otro ejemplo muy típico de función recursiva es el del factorial de un número: factorial(0,1) :- !. factorial(X, Y) :- X1 is X-1, factorial(X1,Y1), Y is X * Y1. La definición de una función esta en los hechos que adoptemos para inferir sobre la base de conocimiento de Prolog, el paso de parámetros debe definirse en las reglas a través de los predicados que los invoquen, ya sea por el mismo o por otro predicado. Para que los predicados definidos como función, no retornen un valor errado, el tipo de dato de la variable del predicado llamador debe ser igual al del predicado llamado. Esto es debido a que los predicados aritméticos propios de Prolog no identifican entre un número real o entero. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 120.
    Inteligencia Artificial. QUINTA UNIDAD: SISTEMASEXPERTOS 5.1 Sistemas expertos. a) Problemas solubles con sistemas expertos. b) Estructuras y cualidades de un sistema experto. c) Herramientas para la construcción de un sistema experto. d) Manejo de incertidumbre y probabilidad. 5.2. Algunos Shell de sistemas expertos. INTRODUCCIÓN. Ingeniería de conocimiento La inteligencia artificial es la base de la ingeniería del conocimiento. Esta Inteligencia Artificial (IA) se puede ver como ciencia o como ingeniería Como ciencia: Por que trata de entender la naturaleza de la inteligencia Como ingeniería procura elaborar software capaz de actuar como humano elaborar artefactos que presenten una conducta inteligente Objetivos de la IA La inteligencia es una noción transparente aun más cuando se trata de simular en una máquina. La IA ha emprendido la tarea de proporcionar una base teórica al concepto de la Inteligencia. Utiliza la computadora como un laboratorio donde desarrollar nuevas formas de pensar acerca del pensar. La IA se ha visto considerablemente enriquecida al intentar de describir los rasgos análogos a la IA LA IA COMO INGENIERIA Tiene como meta construir sistemas reales que funcionan Se percibe como un intento de crear una nueva tecnología informática Se ocupa de los conceptos, la teoría y las prácticas de cómo construir máquinas inteligentes, es decir, máquinas que resuelvan problemas. El ejemplo más paradigmático de máquinas inteligentes por el éxito que están alcanzado comercialmente sean los sistemas basados en conocimientos (SSBBCC) y los sistemas expertos en concreto (SSEE) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 121.
    Inteligencia Artificial. A laactividad de construir estos sistemas se le denomina: Ingeniería del Conocimiento (INCO) La INCO busca el adquirir, conceptuar, formalizar y usar grandes cantidades de conocimientos de la mas alta calidad INTELIGENCIA Sus programas exhiben ARTIFICIAL comportamientos inteligentes por SISTEMAS BASADOS EN CONOCIMIENTOS Hacen explícitos los conocimientos de un dominio y SISTEMAS Aplican los conocimientos EXPERTOS expertos a problemas difíciles del Arquitectura típica de un sistema experto Motor de Inferencias. Interfaz Usuario Base de Conocimientos Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 122.
    Inteligencia Artificial. E S MEMORIA A LARGO PLAZO R T E Í MEMORIA DE S M SENSORES MEMORIA TRABAJO MEMORIA MÚSCULOS U P L U O E S PROCESADOR T COGNITIVO A SUSBSISTEMA SUSBSISTEMA PRECEPTIVO MOTOR SUSBSISTEMA COGNITIVO Sistema humano de procesamiento de la información Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 123.
    Inteligencia Artificial. SOLUCIÓN INFORMÁTICADE UN PROBLEMA PROBLEMA DEFINIRLO EN TERMINOS DE ESTADO Y OPERADORES (ALT) GENERAR Y ANALIZAR SOLUCION ESPACIO DE BUSQUEDA ALGORITMICA TRADICIONAL IDENTIFICAR CONOCIMIENTO PROGRAMACION APLICABLE A REDUCIR CONVENCIONAL ESPACIO BUSQUEDA DESARROLLAR MARCO CONCEPTUAL EN TERMINOS DE REPRESENTACION E INFERENCIA INSTRUMENTAR SISTEMA ADECUADO . PROBAR Y ACTUALIZAR SISTEMA BASADO EN EL CONOCIMIENTO Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 124.
    Inteligencia Artificial. Psicologia Nuevos conceptos en Cognitiva análisis de trabajos y diseño organizaciones Sistemas de Instrumentos Lógica computacion Formal VISION inteligentes simbolica COMPUTACIONAL Sistemas de Lenguajes de pequeña procesamiento de escala listas ROBOTICA Workstations INTELIGENCIA inteligentes ARTIFICIAL APLICADA LENGUAJE NATURAL Sistemas restringidos Entornos de grandes programacion SISTEMAS incremental EXPERTOS Computación Sistemas de tutoría interactiva inteligentes Desarrollo de la microelectrínica Herramientas Desarrollo de construccion SE computadores Sistemas hibridos grandes Computacion de la Sistemas hibridos V-generacion muy grandes Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 125.
    Inteligencia Artificial. 5.1 SISTEMASEXPERTOS. Los mecanismos de explicación, la parte más fascinante de los sistemas expertos, permiten a los sistemas explicar o justificar sus conclusiones, y también posibilitan a los programadores verificar el funcionamiento de los propios sistemas. Desde que naciera la Inteligencia Artificial como tal ciencia, a principios de los 60, hasta la actualidad, se han venido realizando numerosos trabajos, especialmente en los Estados Unidos, para el desarrollo de los diversos campos que componen la Inteligencia Artificial. De todos esos campos, quizá el que puede tener mayor número de aplicaciones prácticas sea el de los Sistemas Expertos, siendo dichas aplicaciones de utilidad en temas tan variados que pueden ir desde la medicina hasta la enseñanza pasando por el CAD. Un sistema experto es una aplicación informática que simula el comportamiento de un experto humano en el sentido de que es capaz de decidir cuestiones complejas, si bien en un campo restringido. Siendo la principal característica del experto humano el conocimiento o habilidades profundas en ese campo concreto, por consiguiente, un sistema experto debe ser capaz de representar ese conocimiento profundo con el objetivo de utilizarlo para resolver problemas, justificar su comportamiento e incorporar nuevos conocimientos. Se podría incluir también el hecho de poder comunicarse en lenguaje natural con las personas, si bien esta capacidad no es tan determinante como las anteriores de lo que se puede definir como Sistema Experto. a) Problemas solubles con sistemas expertos. Las tareas para las que estos sistemas se desarrollan son, casi por definición, complejas. Por tanto, un sistema experto es un sistema computacional capaz de representar y razonar sobre un dominio determinado que precisa de gran cantidad de conocimiento, tal como la aeronáutica o la medicina. Se puede distinguir de otros tipos de aplicaciones de IA en que: trabaja con temas complejos que normalmente requieren una considerable cantidad de experiencia humana; debe ser una herramienta práctica y útil; para ello debe ofrecer un alto rendimiento en cuanto a Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 126.
    Inteligencia Artificial. velocidad deejecución y fiabilidad; debe ser capaz de explicar y justificar sus soluciones y consejos para convencer al usuario de lo correcto de su razonamiento. Los sistemas expertos son el tipo de aplicación de IA que mejores resultados ha conseguido. Estos sistemas son usados hoy en día en un amplio abanico de dominios y han probado ser altamente fiables. Por ello sería deseable la disponibilidad de interfaces en lenguaje natural que facilitasen la comunicación con el sistema por parte de usuarios no expertos en computación (médicos, biólogos, ingenieros). b) Estructuras y cualidades de un sistema experto. Un diagrama general de bloques de un Sistema Experto se representa en la figura siguiente: Usuario Interfase del usuario Máquina de inferencia 1. Reglas de inferencias 2. Estrategias de control Base de conocimiento Base de datos 1. Reglas (Memoria de trabajo) 2. Marcos Estado del sistema 3. Redes semánticas Estados iniciales etc. Estado actual Factores Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 127.
    Inteligencia Artificial. La basedel conocimiento representa el universo donde esta el sistema, es decir la información que rodea al problema. A través del motor de inferencia sabemos como el experto decide cual regla aplicar a cuales datos, como resolver conflictos entre reglas y entre datos; y como va ha inferir los nuevos hechos o nuevos datos; y para eso debemos saber como piensa el experto y debemos saber como utiliza la base del conocimiento (base de reglas y la base de datos.) La interfaz del usuario debe servir para ingresar los datos, las reglas, cambiarlas, cambiar el motor de inferencia; debe tener capacidad de circulación y capacidad de operación cuando se usa en el sistema experto. El Shell es un módulo formado por el motor de inferencia y la interface del usuario y son los generadores del sistema experto. De acuerdo a todos los estudios (desde 1987) usar un Shell es una manera racional para desarrollar un sistema experto. La base de datos y las reglas deben cumplir ciertos formalismos para que el Shell lo entienda. Los resultados de utilizar sistemas expertos hasta el momento son apenas aceptables. en algunos casos buenos o bastante buenos y en algunos casos realmente malos. Estos errores son debidos a que no se sabe elegir el Shell del sistema experto. No es lo mismo usar un Shell que desarrolla una persona para un problema de Agricultura que usar el mismo programa para resolver problemas de producción o de verificación de producción por poner un ejemplo. La razón es que el dominio de la aplicación es diferente por lo tanto el sistema no va ha funcionar. Muchas empresas nos dicen el origen del Shell. Algunos son muy atractivos pero cuando se les hace una prueba de escritorio funcionan mal. Por lo tanto un Ingeniero o futuro Ingeniero debe desarrollar métodos para evaluar estos Shell. Motor de Inferencia Es la forma como el experto soluciona un problema haciendo funcionar las reglas, encadenando las reglas para llegar a la solución. Antes se tiene que definir estas reglas. El ciclo de Cálculo: El motor sigue un orden. Selecciona cual es la regla que debe aplicar primero basado en hechos, cuál es la hipótesis y cuáles son las metas; luego se aplican y se definen nuevas reglas con nuevos datos o se demuestra que la elección es valida. Función del Motor de Inferencia ♦ Determinar cuales son las acciones que deben de realizarse ♦ Determinar el orden de las acciones ♦ Determinar como se realizan las acciones entre las distintas partes del sistema experto, como se comunican con la base de conocimiento, la interface del usuario, etc. ♦ Como y cuando se procesan las reglas Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 128.
    Inteligencia Artificial. ♦ Establecer los criterios de control de dialogo con la persona ♦ Establecer los criterios para resolver problemas; siempre existen criterios que utilizan mecanismos diferentes. La Interfaz del Usuario Debe permitir correr el programa y tener todas las facilidades para consultar, preguntar porqué el programa eligió esa regla y obtuvo ese hecho o dato, porqué se usó ese algoritmo diferente. La interfaz del usuario debe permitir desarrollo, es decir debe poder editarse reglas, crear nuevas reglas, crear bases de datos, agregar datos, etc. Tiene que haber una comunicación en forma amistosa y suave hacia el usuario, y mostrar todo el proceso que se esta desarrollando, ya que a nosotros nos interesa saber lo que esta sucediendo y porque se esta aplicando este teorema, esta regla, etc. La mayoría de estos Shell tienen esta facilidad. Un usuario paso a paso aprende a pensar como el experto, esto es algo nuevo pues el programa experto nos permite no solamente resolver un problema con éxito, sino que también prepararnos. Función de la Interfaz del Usuario ♦ Permite un aprendizaje rápido. ♦ Filtra los datos para eliminar errores. ♦ Presenta los resultados en forma clara y precisa. ♦ Permite dar explicaciones (hacer preguntas.) Estrategias para Aplicar Control Experto Una manera es meterse y buscar llegar hasta la respuesta final por una sola rama, llamada búsqueda en profundidad. Otra manera es desarrollar todo lo que esta a lo ancho del problema hasta llegar a la solución. Otras maneras pueden ser: ♦ Elegir la regla que más influye en la hipótesis. ♦ Elegir la regla donde la recopilación de hechos sea menos costosa. ♦ Elegir la regla cuyos hechos determinen menos riesgos. ♦ Elegir la regla que reduzca el espacio de búsqueda. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 129.
    Inteligencia Artificial. Diagrama generalde bloques de un Sistema Experto Los componentes claves son la base de conocimiento, el sistema de inferencias, la base de datos y el interfase con el usuario. El corazón de los Sistemas Expertos es la base de conocimientos, que tiene diferentes formas de representarse, como Reglas de producción, cálculo de predicado, Marcos, Listas, Redes semánticas, Libretos, etc. La base de datos es llamada algunas veces base de datos global porque contiene un amplio rango de información acerca del estado actual del problema que está siendo resuelto. En la practica, la base de datos es realmente una porción de memoria de trabajo donde el estado actual del proceso del problema que se está resolviendo se guarda. La máquina de inferencia es el software que implementa una búsqueda y opera los modelos encontrados. Siendo su función principal probar la hipótesis o desaprobarla. La interfase con el usuario hace fácil el manejo del Sistema experto, ocultando todas las complejidades de sus procesos. Un Sistema de Representación de Conocimiento para un universo U consiste en: a) Una colección E de etiquetas que pueden representar individuos en U; estas etiquetas se dividen en constantes y variables. b) Una colección F de funciones. c) Una colección R de relaciones. d) Un lenguaje L consistente en reglas para combinar las funciones, relaciones y etiquetas en expresiones bien formadas de L. e) Una semántica S que provee de significado a las etiquetas, funciones y relaciones. Aún suponiendo que poseamos un conocimiento lo suficientemente detallado de la materia que pretendemos representar, resulta crucial el disponer de una notación lo suficientemente precisa como para poder plasmar ese conocimiento de forma que pueda ser usado de forma inteligente por un cerebro electrónico. A esta notación se le da el nombre de esquema de representación. En IA, el problema de diseñar un sistema experto se centra en construir una base de conocimiento que represente el conocimiento de una empresa determinada. Según la clase de problemas hacia los que estén orientados, podemos clasificar los Sistemas Expertos en diversos tipos entre los que cabe destacar diagnosis, pronóstico, planificación, reparación e instrucción; vamos a ver algunas de las aplicaciones existentes (o en periodo de desarrollo) para cada uno de los campos citados. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 130.
    Inteligencia Artificial. Los sistemasde diagnosis siguen un proceso de búsqueda de las razones del funcionamiento incorrecto de un sistema a partir de la información disponible. Aquí se podrían tener en cuenta tanto aplicaciones de diagnóstico médico como de averías. En lo referente al diagnóstico médico, existe una serie de aplicaciones extensa en número (FLUIDEX, EACH, TROPICAID, SPHINX,...), pero quizá la más conocida, a la vez que la más antigua, podría ser MYCIN. MYCIN es el primer Sistema Experto que llegó a funcionar con la misma calidad que un experto humano, dando a su vez explicaciones a los usuarios sobre su razonamiento. Antes del desarrollo de MYCIN (mediados de los 70), se criticaba a la Inteligencia Artificial por resolver únicamente problemas "de juguete", sin embargo, el éxito de MYCIN demostró que la tecnología de los Sistemas Expertos estaba suficientemente madura como para salir de los laboratorios y entrar en el mundo comercial. MYCIN es, en definitiva, un sistema de diagnóstico y prescripción en medicina, altamente especializado, diseñado para ayudar a los médicos a tratar con infecciones de meningitis (infección que produce inflamación de las membranas que envuelven al cerebro y la médula espinal) y bacteriemia (infección que implica la presencia de bacterias en la sangre). Dichas infecciones pueden ser fatales y a menudo aparecen durante la hospitalización. El problema se complica por la necesidad de actuar con rapidez. Existen además en este campo Sistemas Expertos como TROPICAID, que permiten obtener información adicional sobre los medicamentos más usados. TROPICAID selecciona un conjunto de posibles diagnósticos a partir del análisis del cuadro médico, y propone un tratamiento óptimo para el caso concreto. Por otra parte, el campo de la diagnosis abarca otras aplicaciones además de las médicas (si bien pueden ser estas últimas las más conocidas). En este caso se trata de fallos, averías o anomalías que se producen generalmente en una máquina. Dentro de este apartado existen también numerosas aplicaciones, pudiendo encontrar incluso empresas en la propia CAPV que han desarrollado trabajos dentro del campo de la diagnosis de equipos industriales complejos. Tal es el caso de ADICORP (con su sistema TESP para la diagnosis de robots Puma) que trabaja además en proyectos de Visión Artificial. Los sistemas de pronóstico deducen consecuencias posibles a partir de una situación. Su objetivo es determinar el curso del futuro en función de información sobre pasado y presente. Esto abarca diversos problemas, tales como predicciones meteorológicas, predicciones demográficas, o incluso previsiones de la evolución bursátil entre otros. Quizá la aplicación más conocida sea PROSPECTOR, esto es un sistema para la evaluación de emplazamientos geológicos (con el que se encontró un yacimiento de mineral importante). Existen también sistemas de planificación, pudiéndose encontrar aplicaciones en este área, que establecen una secuencia de acciones a realizar encaminadas a la consecución de una serie de objetivos. Hay una tendencia creciente a desarrollarlos y utilizarlos, sin embargo, los programas son caros y tienen que ser analizados con cuidado para determinar su contribución potencial al resultado final. Una de tales aplicaciones es el Palladian Operations Advisor (de Palladian Software, Inc., Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 131.
    Inteligencia Artificial. en EstadosUnidos), diseñado específicamente para la dirección de la producción. Las entradas a este programa comprenden las designaciones de procesos y máquinas de fabricación de una planta, las especificaciones de productos y el flujo de producción, a partir de lo cual puede representar gráficamente la planta industrial y el flujo de cada tipo de productos. Con estas representaciones pueden organizarse y reorganizarse las operaciones de fabricación. El programa ayuda a la planificación y programación, asesorando en lo que se refiere a los programas que reducen el trabajo no deseable en niveles de proceso, ajustan el volumen de producción a la demanda de clientes y evalúan los cambios en las operaciones desde los puntos de vista económicos y de producción. Puede crear una influencia recíproca con los planificadores y directores de planta a medida que las condiciones cambian a diario o a cada hora, como consecuencia de averías mecánicas, modificaciones en los pedidos de los clientes o crisis en el exterior. El Palladian Operations Advisor puede analizar el estado de la combinación de productos para mantener la mayor eficacia y rentabilidad posible de las operaciones. Como caso concreto dentro de la CAPV, la empresa DATALDE ha desarrollado un Sistema Experto para la planificación de la producción. Dicho trabajo se centra en un taller de propósitos generales de unas características determinadas, consistiendo la planificación en ordenar en el tiempo las cargas originadas por los diferentes pedidos, de forma que se asuman los objetivos de cumplimiento de plazos, distribución eficaz del trabajo y gestión de colas y prioridades. Por su parte, la empresa ROBOTIKER ha desarrollado un sistema de planificación y control de producción integral, dentro del que se identifican algunas tareas susceptibles de resolución mediante sistemas inteligentes (es un sistema basado en MRP-II). El diseño es también un tema de planificación. En este caso, a partir de una serie de requerimientos y restricciones, se obtiene el objeto que las satisface. En este campo, LABEIN (Laboratorio de Ensayos e Investigaciones Industriales, Centro de Investigación tutelado por el Gobierno Vasco), desarrolló un sistema inteligente para el diseño de motores eléctricos mediante la aplicación de las tecnologías clásicas de Sistemas Expertos a los sistemas de CAD / CAE de diseño y análisis. El problema que motivó este proyecto era que ciertos motores, de entre los eléctricos, son de uso frecuente en la industria exigiendo a la vez un diseño a medida de cada caso, por ello se creyó conveniente desarrollar una herramienta que asesorase o, incluso, dirigiera al operador. Otro tipo de Sistemas Expertos son los orientados a la reparación, sin embargo, no se puede decir que sea un tipo realmente nuevo, ya que este enfoque abarca diagnosis y planificación. Dentro de este grupo se incluyen sistemas como DELTA, que ayuda a los mecánicos en el diagnóstico y reparación de locomotoras diesel-eléctricas. DELTA no solo da consejos expertos, sino que también presenta informaciones por medio de un reproductor de vídeo. De hecho se podría encasillar a DELTA más en el área de la instrucción que en reparación, dado que además proporciona ayudas al trabajo que permiten al estudiante determinar si existe o no un determinado problema, proporcionando también formación específica sobre el modo de realizar ciertas reparaciones. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 132.
    Inteligencia Artificial. Un sistemade instrucción (Sistema Experto para formación) realiza un seguimiento del proceso de aprendizaje de un estudiante. El sistema detecta errores de los estudiantes e identifica el remedio adecuado, es decir, desarrolla un plan de enseñanza para facilitar el proceso de aprendizaje y la corrección de errores. Además de DELTA, existen numerosos sistemas de este tipo; STEAMER, por ejemplo, se creó para enseñar a los oficiales de la armada los problemas de funcionamiento de una planta de propulsión a vapor, como las que impulsan a ciertos barcos. Este era el problema de formación más importante que existía, dada la complejidad de los sistemas. El objetivo es dar al estudiante una concepción global de lo que pasa en la planta en cualquier momento, con la ventaja de que además el modelo de presentación es gráfico (utilizando Interlisp). Con un objetivo similar al de STEAMER, Construcciones Aeronáuticas S. A. (CASA) desarrolló el Proyecto Eolo CN-235. En este caso, el problema está en el hecho de que pilotar un avión que cuesta cientos de millones de pesetas es un asunto muy serio a la vez que peligroso, lo que exige mucho tiempo de entrenamiento, tanto para pilotos como mecánicos, suponiendo para las compañías aéreas un gran problema, dado el elevado coste de los cursos y la escasez de instructores. El proyecto surgió de la voluntad de Construcciones Aeronáuticas S. A. de ofrecer un curso específico para pilotos y técnicos de mantenimiento, a todos los compradores del avión CN- 235. Eolo CN-235 es un sistema de enseñanza interactivo que integra gráficos, texto y vídeo. Otro sistema de este tipo, aunque en este caso orientado a medicina, es GUIDON, pensado para que lo utilicen las Facultades de Medicina para formar a los médicos en la realización de consultas. GUIDON viene a ser una reorganización de MYCIN con intenciones educativas, por esto, tiene la ventaja adicional de disponer de toda la base de conocimientos de MYCIN además de la experiencia acumulada, por consiguiente, puede recuperar como ejemplo cualquier caso que MYCIN haya tratado. Además de las áreas de aplicación ya citadas, existen otras como las relativas a los sistemas de interpretación, que realizan tareas de inferencia a partir de una serie de datos observables (Ej. análisis de imágenes, o bien interpretación de señal). Diferencias entre programas convencionales, inteligencia artificial y Sistemas expertos Convencionales o algorítmicos: Deterministas sin redundancia (si están incorrectamente diseñados puede introducirse un dato mas de una vez), suelen reflejar condiciones necesarias y suficientes para obtener los resultados (con mayor o menor eficiencia) mecanismo simple y camino computacional simple para producir la salida en función de la entrada. Los humanos tienen colecciones de técnicas para un problema y, si se olvida una, se puede encontrar soluciones de otra manera. Distinción entre código (receta para manipular estructuras, algoritmos y datos (las propias estructuras) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 133.
    Inteligencia Artificial. Según Wiston: Programa = Algoritmo + Estructura de datos. Carecen de "autosabiduría", solo las técnicas que encierran y no pueden razonar o explicar sus propios mecanismos Los programas complejos son opacos y difíciles de modificar. Los algoritmos incluyen detalles de representación del conocimiento (incipientes) Inútiles para codificar la experiencia o para comunicarla. Así seria difícil aprender a jugar al ajedrez examinando un programa convencional que supiera jugar. Inteligencia Artificial Representación e inferencia simbólica Búsqueda heurística Campo base de la epistemología pragmática Sistemas Expertos. (basados en el conocimiento), además de la I.A. incluyen Ejecutan tareas difíciles con la competencia de un experto humano Énfasis en las estrategias de solución de problemas de dominios concretos más que en métodos generales. Autoconocimiento para razonar acerca de sus propios procesos de inferencia y dan justificación de las conclusiones obtenidas. Dan una enorme importancia al conocimiento poseído, con relación al formalismo o esquema de inferencia utilizados. Feignbaum: la potencia del S.E. deriva de su base de conocimiento De ahí que aparezca con entidad propia la base de conocimiento, separada de sus mecanismos de control. Programa = Estructura de datos + Base de conocimiento lógico + Control En tres niveles: hechos, conocimientos, decisiones. Emplean conjuntamente de manera coordinada muchas técnicas de IA. Resuelven problemas de: - interpretación - predicción - diagnóstico - depuración - diseño - planificación - vigilancia - reparación - instrucción - control - asesoramiento - evaluación de situaciones - toma de decisiones - evaluación de sucesos Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 134.
    Inteligencia Artificial. Metodología paraconstruir un sistema experto: ♦ Identificación del Problema. ♦ Conceptualización del Problema . ♦ Formalizarlo a través de una lógica o algún lenguaje formal ♦ Implementación eligiendo un Shell ♦ Pruebas Identificación del Problema ♦ El Experto e Ingeniero identifican el área del problema y definen alcances. ♦ Determinación de recursos necesarios, tiempo y facilidades computacionales. ♦ Decisión sobre metas y objetivos de la construcción del sistema experto. Conceptualización del Problema ♦ El Ingeniero y Experto explican conceptos claves relaciones y características del flujo de Información, necesarias para describir la solución del problema. ♦ Especificaciones de sub-tareas, estrategias y necesidades relacionadas con la actividad de resolver el problema. Formalización ♦ Graficar los conceptos claves y relaciones en una representación formal sugerida por un lenguaje o una herramienta. ♦ Selección del lenguaje o Shell. ♦ Representación de conceptos y relaciones dentro de la estructura del lenguaje. Implementación ♦ El ingeniero organiza la base del conocimiento en una base de datos. ♦ Se elige la base de datos. ♦ Se define un conjunto de reglas y estructuras de control del programa. ♦ Se realiza el programa. Pruebas ♦ Evaluación del rendimiento del programa. ♦ Revisión y ajuste a nivel de excelencia. ♦ El experto realiza una evaluación. incluso se diseñan problemas en el que el experto lo resuelve y el programa lo resuelve aparte. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 135.
    Inteligencia Artificial. Control Experto ♦ Es la combinación de técnicas de Control de Procesos Industriales, del Conocimiento Heurístico y de Sistemas Expertos. ♦ El objetivo es controlar un proceso. Se busca Conocer: El proceso y estructuras de control, por pruebas en distintos puntos de operación. La información relevante para un sistema de control. Para esto debemos saber como representar y usar el conocimiento; y además la existencia de ciertas condiciones para ciertos procesos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 136.
    Inteligencia Artificial. TOMA DEDECISIONES La potencia de un Sistema Experto se basa más en una gran cantidad de conocimientos que en un formalismo deductivo muy eficaz. La idea que se persigue cuando se construye un Sistema Experto es la de automatizar la labor del experto, partiendo en ocasiones de información insuficiente o incompleta. En las empresas, la Inteligencia Artificial, que se encontraba confinada en la "sala de ordenadores", se va abriendo paso hacia la junta directiva. La razón de esto es simple: a medida que el mundo empresarial se complica y se llega a la competencia internacional, el conocimiento se convierte en el factor profesional más importante para un ejecutivo. A la persona que esté planeando la estrategia a seguir por su empresa o que tome decisiones en producción, marketing, distribución o asignación de recursos, los Sistemas Expertos le pueden demostrar que se pueden tomar decisiones con más conocimiento, llevando a un aumento de ganancias así como a la obtención de beneficios importantes para la empresa, como el aumento de su capacidad. En las empresas, los Sistemas Expertos empiezan a tener cada vez mayor auge, hasta el punto de ir suponiendo un punto de referencia importante en la toma de decisiones para la junta directiva. En realidad, incluso se podría decir que el límite de las aplicaciones objeto de los Sistemas Expertos está en la imaginación humana, siendo siempre de utilidad allí donde se necesite un experto. La medida de la efectividad de las operaciones de planificación y control de una organización y su sensibilidad a los cambios, son elementos importantes en la buena dirección de la producción. Los planes y las decisiones en la producción se desarrollan y llevan a cabo en un mundo de representaciones simbólicas de hechos y conjeturas, muchas de las cuales no están informatizadas y representan la experiencia y el conocimiento de expertos. En cada estadio de los procesos de planificación, decisión y control para las operaciones de producción, sea ésta automatizada o no, las personas expertas son las que asesoran, localizan los fallos y dirigen. Ellas son las que ayudan Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 137.
    Inteligencia Artificial. a interpretarla multitud de datos procedentes de los departamentos de diseño, de la planta de producción y de los representantes de los clientes, observan modelos procesables en dichos datos, prueban mentalmente, y con ordenadores, posibles líneas de acción, recomiendan las medidas que la gerencia debe tomar y ayudan luego a poner en marcha sistemas pensados para conseguir planificaciones mejores, operaciones más fluidas y una competencia más efectiva. Los Sistemas Expertos ofrecen procedimientos informatizados para perfeccionar la toma de decisiones de la gerencia por medio de la combinación del conocimiento que poseen los expertos acerca del tipo de acciones que tiene que efectuar y la forma y el tiempo en que debe llevarlas a cabo con la permanencia, lógica, memoria y velocidad de cálculo del ordenador. En tanto que muchos sistemas expertos se ocupan del razonamiento técnico más que del gerencial, la gerencia puede obtener ordenadores de mucha potencia, con grandes memorias, rápidos y programados para tratar problemas clave de forma efectiva en un área empresarial determinada. El éxito del directivo experto en la aplicación de sistemas como en las plantas de fabricación, grandes o pequeñas, se mide por resultados tales como rendimientos mayores en la calidad de los productos, entregas a los clientes dentro de plazo, reducción de los retrasos en planta, reducción de costes procedentes de errores, mejor utilización de los materiales, mejor utilización del personal y mejora en las compras y reducción en los costes de material. Como cualquier otra forma de software tradicional, los sistemas Expertos ofrecen algunas ventajas: a) Permitir que los no expertos trabajen como expertos. b) Mejorar la productividad aumentando los trabajos realizados con mayor eficiencia. c) Ahorrar tiempo al alcanzar objetivos específicos. d) Simplificando algunas operaciones. e) Automatizar procesos repetitivos, tediosos y llenos de complejidad. f) Permiten que nuevos tipos de problemas sean resueltos haciendo a las computadoras más útiles. g) Capturan y guardan valiosos conocimientos evitando perdidas debidas a retiros o muertes de expertos. h) Hacen que el conocimiento esté disponible a una mayor audiencia, incrementando la habilidad de resolver problemas a un número mayor de personas. Entre las desventajas tenemos: a) Desarrollar un sistema experto es más difícil que la creación de un software convencional. Los buenos expertos son difíciles de encontrar y la extracción del conocimiento es un trabajo tedioso y tardado. b) Los sistemas expertos son caros. Cuesta mucho su desarrollo, prueba y la entrega a los usuarios finales. c) El tamaño de la memoria y la rapidez de una computadora personal limitan su utilidad. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 138.
    Inteligencia Artificial. d) Los Sistemas Expertos no son totalmente confiables. Debido a esto se recomienda que sus resultados deben ser ponderados, probados y escrutinizados. El ser humano debe realizar la decisión final. Algunas de estas desventajas gradualmente desaparecerán o disminuirán con las apariciones mejoradas de la tecnología en hardware y software. c) Herramientas para la construcción de un sistema experto Una de las principales razones para el rápido crecimiento de desarrollo de sistemas expertos, es el soporte de un conjunto de herramientas poderosas. Entre las herramientas para sistemas expertos tenemos: En un inicio los sistemas expertos se creaban como un conjunto de representaciones declarativa (reglas en su mayor parte) combinadas con un interprete para esas declaraciones, fue posible separar el interprete y el conocimiento específico del dominio, y así se pudo crear un sistema capaz de construir nuevos sistemas expertos con la añadidura de nuevos conocimientos correspondientes al dominio del nuevo problema. A los intérpretes resultantes se les llamó Armazones (Shell). El valor de un Shell para SE está directamente relacionado con el grado en que las características del dominio se parecen con las características esperadas por el modelo interno del Shell. En este momento existen comercialmente varios armazones que sirven de base para muchos de los sistemas expertos que actualmente se construyen. Los últimos armazones presentan mucha mayor flexibilidad en la presentación del conocimiento, del razonamiento y de las explicaciones que los primeros. Con el tiempo la experiencia ganada indica que para facilitar las cosas los sistemas expertos se deben integrar con otros tipos de programas. Los sistemas expertos no pueden actuar aislados, necesitan acceder a bases de datos colectivas, y por tanto ser controlados igual que otros sistemas. A menudo son incrustados en otros programas de aplicación más grandes que usan técnicas de programación convencionales. La herramienta más elemental para el desarrollo de sistemas expertos es un lenguaje de propósito general. Lisp ha sido y continua siendo el lenguaje más ampliamente empleado para el desarrollo de sistemas expertos, el lenguaje de programación Prolog, aunque su empleo como un lenguaje para el desarrollo de sistemas expertos ha sido un poco menos que el de Lisp. Generalmente las herramientas más poderosas para SE son las grandes herramientas híbridas que combinan ambientes de desarrollo sofisticado con representaciones múltiples de conocimiento y paradigmas múltiples de inferencia. Esta integración, de varias facilidades básicas es muy útil porque posibilita que cualquier herramienta dada sea empleada con muchos diferentes problemas, o problemas que involucren varias clases diferentes de representaciones del conocimiento y de paradigmas de inferencia. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 139.
    Inteligencia Artificial. En resumen,indicamos que una de las características más importantes que debe tener una armazón es una interfaz fácil de emplear entre un sistema experto escrito con la armazón y un gran entorno de programación, que probablemente será más convencional. Desarrollo de los Sistemas Expertos Para desarrollar el software primero conocemos el equipo de gente necesario, después los métodos que utiliza ese equipo de gente y por último como prueban y construyen prototipos de software para terminar en el sistema final. 1. Equipo de desarrollo 2. Métodos auxiliares en el desarrollo 3. Construcción de prototipos El Equipo de desarrollo Las personas que componen un grupo o un equipo, como en todos los ámbitos deben cumplir unas características y cada uno de ellos dentro del equipo desarrolla un papel distinto. A continuación cada componente del equipo dentro del desarrollo y la función de cada uno: 1. El experto La función del experto es poner sus conocimientos especializados a disposición del Sistema Experto. 2. El ingeniero del conocimiento El ingeniero plantea las preguntas al experto, estructura sus conocimientos y los implementa en la base de conocimientos. 3. El usuario aporta sus deseos y sus ideas, determinando especialmente el escenario en el que debe aplicarse el Sistema Experto. ESQUEMA DE REPRESENTACIÓN EN EL QUE FIGURA EL EQUIPO DE DESARROLLO. En el desarrollo del Sistema Experto, el ingeniero del conocimiento y el experto trabajan muy unidos. El primer paso consiste en elaborar los problemas que deben ser resueltos por el sistema. Precisamente en la primera fase de un proyecto es de vital importancia determinar correctamente el ámbito estrechamente delimitado de trabajo. Aquí se incluye ya el usuario posterior, o un Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 140.
    Inteligencia Artificial. representante delgrupo de usuarios. Para la aceptación, y en consecuencia para el éxito, es de vital y suma importancia tener en cuenta los deseos y las ideas del usuario. Una vez delimitado el dominio, se amplía el sistema con los conocimientos del experto. El experto debe comprobar constantemente si su conocimiento ha sido transmitido de la forma más conveniente. El ingeniero del conocimiento es responsable de una implementación correcta, pero no de la exactitud del conocimiento. La responsabilidad de esta exactitud recae en el experto. De ser posible, el experto deberá tener comprensión para los problemas que depara el procesamiento de datos. Ello facilitará mucho el trabajo. Además, no debe ignorarse nunca al usuario durante el desarrollo, para que al final se disponga de un sistema que le sea de máxima utilidad. La estricta separación entre usuario, experto e ingeniero del conocimiento no deberá estar siempre presente. Pueden surgir situaciones en las que el experto puede ser también el usuario. Este es el caso, cuando exista un tema muy complejo cuyas relaciones e interacciones deben ser determinadas una y otra vez con un gran consumo de tiempo. De esta forma el experto puede ahorrarse trabajos repetitivos. La separación entre experto e ingeniero del conocimiento permanece, por regla general inalterada. Métodos auxiliares en el desarrollo La eficiencia en la creación de Sistemas Expertos puede aumentarse en gran medida con la aplicación de Shells. Un Shell (de forma resumida) es un Sistema Experto que contiene una base de conocimientos vacía. Existen el mecanismo de inferencia, el componente explicativo y a veces también la interface de usuario. Ya el mecanismo de inferencia depende del problema o grupos de problemas. No existe ningún Shell para todas las aplicaciones, sino que hay que buscar un Shell para cada aplicación. También es posible que haya que desarrollar adicionalmente partes del mecanismo de inferencia. Según el tamaño de esta parte tendrá que pensar si la aplicación de un Shell determinado sigue siendo apropiada. Si el ingeniero del conocimiento conoce bien este Shell, es decir si, por ejemplo, conoce exactamente cómo son procesadas las reglas, entonces sólo tendrá que concentrarse en la creación de la base de conocimientos. A menudo, el Shell contiene Frames. Estos son marcos previamente preparados, en los que, por ejemplo, sólo se introduce el nombre del objeto, sus cualidades y los correspondientes valores. Las relaciones entre los objetos se indican mediante señalización de los dos objetos y del tipo de relación que exista entre ellos. El trabajo de implementación debe reducirse al máximo. Los Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 141.
    Inteligencia Artificial. Frames soncomponentes explicativos y/o el mecanismo de inferencia que están dimensionados de forma distinta en los diferentes Shells. Construcción de prototipos En el desarrollo de Sistemas Expertos se nos plantean riesgos como: ♦ Falta de implementaciones similares que puedan servir de orientación al encargado del desarrollo en la casi totalidad de los casos. ♦ Requisitos necesarios están esbozados con muy poca precisión. El diseño y la especificación requieren una temprana determinación de la interfaz del software y de la funcionalidad de los componentes. En el desarrollo de Sistemas Expertos deben alterarse a menudo durante y también después de su implementación, ya que los requisitos se han ido configurando y han obtenido mayor precisión, o porque se ha descubierto que deben iniciarse otras vías de solución. Durante el desarrollo, resulta más apropiado empezar con implementaciones tipo test para encontrar el camino hacia una solución definitiva y para hacerlas coincidir con las necesidades del usuario. Un método efectivo es la implementación de un prototipo de Sistema Experto que permita llevar a cabo las funciones más importantes de éste, aunque con un esfuerzo de desarrollo considerablemente inferior al de una implementación convencional. Este proceder se define bajo el nombre de "Rapid Prototyping". Las máquinas de Inteligencia Artificial especialmente desarrolladas, los lenguajes de programación de Inteligencia Artificial y en determinados casos los Shells, ofrecen una considerable ayuda para el "Rapid Prototyping". Para Sistemas Expertos, el "Rapid Prototyping es el procedimiento más adecuado, pues posibilita una rápida reacción a los deseos en constante cambio tanto por parte de los expertos como parte del usuario. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 142.
    Inteligencia Artificial. Aplicación de sistemas basados en el conocimiento Ejemplo: Cajero Automático - Problema Determinista. Un usuario (por ejemplo, un cliente) desea sacar dinero de su cuenta corriente mediante un cajero automático (CA). En cuanto el usuario introduce la tarjeta en el CA, la máquina la lee y la verifica. Si la tarjeta no es verificada con éxito (por ejemplo, porque no es legible), el CA devuelve la tarjeta al usuario con el mensaje de error correspondiente. En otro caso, el CA pide al usuario su número de identificación personal (NIP). Si el número fuese incorrecto, se dan tres oportunidades de corregirlo. Si el NIP es correcto, el CA pregunta al usuario cuánto dinero desea sacar. Para que el pago se autorice, la cantidad solicitada no debe exceder de una cierta cantidad limite diaria, además de haber suficiente dinero en su cuenta. En este caso se tienen siete objetos, y cada objeto puede tomar uno y solo un valor de entre sus posibles valores. La tabla muestra estos objetos y sus posibles valores. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 143.
    Inteligencia Artificial. En laRegla 1, por ejemplo, la premisa consiste en seis afirmaciones objeto-valor conectadas mediante el operador lógico y, lo que indica que la premisa objeto Pago (en la conclusión) con los demás objetos. Según la Regla 1, la acción que debe iniciar el CA es dar el dinero al usuario si la tarjeta se ha verificado correctamente, la fecha no ha expirado, el NIP es correcto, el número de intentos para dar el NIP correcto no se ha excedido y la cantidad solicitada no excede ni la cantidad disponible ni el límite máximo diario. Las expresiones lógicas en cada una de las restantes reglas de la figura constan de una sola afirmación. Nótese que la Regla 1 indica cuándo debe permitirse el pago, y las restantes cuándo debe rechazarse. El motor de inferencia aplica Modus Ponen y Modus Tollen. Aplicando dichas reglas: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 144.
    Inteligencia Artificial. d) Manejode incertidumbre y probabilidad. Los sistemas basados en reglas descritos en este capítulo pueden aplicarse sólo a situaciones deterministas. En algunas resoluciones de problemas puede resultar adecuado describir las creencias sobre las que no se tiene certeza, pero en las que existen algunas evidencias que las apoyan. Por ejemplo, las relaciones entre las enfermedades y los síntomas no son deterministas, puesto que un mismo conjunto de síntomas puede estar asociado a diferentes enfermedades. De hecho, no es extraño encontrar dos pacientes con los mismos síntomas pero diferentes enfermedades. En muchos sistemas de resolución de problemas un objetivo importante consiste en reunir evidencias sobre la resolución del sistema y modificar su comportamiento sobre la base de las mismas. Para modelar este comportamiento se necesita una teoría estadística de la evidencia. Las estadísticas bayesianas constituyen esta teoría. El concepto fundamental de las estadísticas bayesianas es el de la probabilidad condicionada. El teorema de Bayes se enuncia así: P(Hi | E ) = P(E | Hi ) * P(Hi ) ∑ P(E | Hn ) * P(Hn ) K n =1 donde: • P(Hi | E): La probabilidad de que la hipótesis Hi sea verdad dada la evidencia E. • P(E | Hi): La probabilidad de que se observe la evidencia E dada la hipótesis i como verdadera. • P(Hi): La probabilidad a priori de que la hipótesis i sea cierta, independientemente de cualquier evidencia especifica. Estas probabilidades se denominan probabilidades previas o a priori. • k: El número total de hipótesis posibles. En algunas ocasiones se tendrá un cuerpo de evidencia previo y alguna nueva observación E, por lo que será necesario hacer el siguiente calculo: P(H | E, e) = P(H | E) * P(e | E, H) / P (e | E) El tamaño del conjunto de probabilidad combinadas que se necesitan para calcular esta función, n crece con una función de la forma 2 , donde n es el número de proposiciones diferentes que es necesario considerar, lo que hace inaplicable al teorema de Bayes. A pesar de esto las estadísticas bayesianas proporcionan una base atractiva para los sistemas que razonan bajo incertidumbre, por lo que se han desarrollado varios mecanismos que hacen uso de su potencialidad, como son: • Incorporación de los factores de certeza. • Redes bayesianas. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 145.
    Inteligencia Artificial. Factores decerteza Un factor de certeza se define en términos de dos componentes: • Manager of believe: MB [h, e]. Una medida entre cero y uno de la creencia de que la hipótesis h proporciona la evidencia e. MB da una medida sobre hasta que punto la evidencia soporta la hipótesis. Es cero si la evidencia no soporta la hipótesis. • Manager of disapoint: MD [h, e]. Una medida entre cero y uno sobre la incredulidad de que la hipótesis h proporciona la evidencia e. MD da una medida de hasta que punto la evidencia soporta la negación de la hipótesis. Es cero si la evidencia soporta la hipótesis. A partir de estas dos medidas se puede definir el factor de certeza, CF [h, e], como sigue: CF [h, e]= MB [h, e] - MD [h, e] Los factores de certeza los proporcionan los expertos, y estos reflejan las valoraciones del experto sobre la fortaleza con que la evidencia soporta la hipótesis. Sin embargo en el proceso de razonamiento los factores de certeza tienen que combinarse para reflejar el uso de las múltiples partes de la evidencia y las múltiples reglas que se aplican para resolver el problema. • Se obtiene el factor de certeza de una hipótesis dada una combinación de evidencias. s1 h s2 Las medidas sobre la creencia o no creencia de una hipótesis dadas las observaciones s1 y s2 se calculan de la siguiente forma: 0 sí MD[h, s1 ^ s2]= 1 MB [h, s1 ^ s2] = MB [h, s1] + MB [h, s2 ]*(1 - MB [h, s1]) en caso contrario 0 sí MD[h, s1 ^ s2]= 1 MD [h, s1 ^ s2]= MD [h, s1] + MD [h, s2 ]*(1 - MD [h, s1]) en caso contrario Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 146.
    Inteligencia Artificial. Ejemplo: Suponga que se tiene una observación inicial que confirma nuestra creencia en h con MB = 0.3. Entonces: MD [h, s1]= 0 CF[h, s1]= 0.3 – 0 = 0.3 A continuación se hace una segunda observación, que confirma h con un valor de MB[h,s2]=0.2. Entonces: MB [h, s1 ^ s2] = 0.3 + (0.2 )* (1 - 0.3) MB [h, s1 ^ s2] = 0.3 + 0.14 MB [h, s1 ^ s2] = 0.44 MD [h, s1 ^ s2] = 0 CF [h, s1 ^ s2] = 0.44 – 0 CF [h, s1 ^ s2] = 0.44 • Se obtiene el factor de certeza dada una combinación de hipótesis. h1 e h2 Se utiliza cuando se necesita conocer el factor de certeza de un antecedente de una regla que contiene varias cláusulas. MB [h1 ^ h2 , e ]= mín (MB [h1, e], MB [h2, e]) MB [h1 v h2 , e ]= máx (MB [h1, e], MB [h2, e]) • Encadenamiento de reglas: El resultado de la incertidumbre de una regla es la entrada de otra. e s h Sea MB’s [h, s]la medida de la creencia sobre h estando completamente segura la validez de s y sea e la evidencia que nos lleva a creer en s, se tiene: MB [h, s]= MB’[h, s] * máx (0, CF [s, e]) Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 147.
    Inteligencia Artificial. Ejemplo Considérense lassiguientes características (variables y sus posibles valores) de las personas de una población dada: • Sexo = {hombre, mujer} • Fumador = {sí (f), no ( ¯ f)} • Estado Civil = {casado (c), no casado (¯c)} • Embarazo = {sí (e), no (¯e)} La función de probabilidad conjunta de estas cuatro variables se da en la tabla. Por ello, por ejemplo, el 50% de las personas de una población son mujeres, y el 0.01 + 0.04 + 0.01 + 0.10 = (0.01 + 0.04 + 0.01 + 0.10) + (0.00 + 0.02 + 0.00 + 0.07) 64% de los fumadores son mujeres. Sea A una persona elegida al azar de la población. Sin conocer si la persona es fumadora, la probabilidad de que se trate de una mujer es p(A = mujer) = 0.50. Pero si se sabe que la persona es fumadora, esta probabilidad cambia de 0.50 a p(A = mujer|A = f) = 0.64. Por tanto, se tiene p(A = mujer|A = f) ≠ p(A = mujer); por lo que las variables Sexo y Fumador son dependientes. Ejemplo Considérese la función de probabilidad conjunta de las tres variables binarias X, Y y Z dadas en la tabla Entonces se tiene: • Las funciones de probabilidad marginal de X, Y y Z se muestran en la tabla. Por ejemplo, la función de probabilidad marginal de X se calcula mediante Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 148.
    Inteligencia Artificial. ♦ Por ejemplo, las funciones de probabilidad conjunta de las parejas X e Y son: ♦ Por ejemplo, la probabilidad condicional de X dada Y es ♦ Funciones de Probabilidad Marginal ♦ Funciones de Probabilidad Conjuntas por Pares. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 149.
    Inteligencia Artificial. ♦ Función de Probabilidad Condicional de una Variable dado Otra. Redes Bayesianas En las redes bayesianas el formalismo se preserva y se confía en la modularidad del mundo que se intenta modelar. La idea principal consiste en que para describir el mundo real no es necesario utilizar una tabla de probabilidades enorme en la que se listen las probabilidades de todas las combinaciones concebibles de sucesos. La mayoría de los sucesos son condicionalmente independientes de la mayoría de los demás por lo que no deben considerarse sus interacciones. En lugar de esto, se puede usar una representación mas local en donde se describan grupos de sucesos que interactúen. Existen dos diferentes formas en que las proposiciones pueden influenciar las probabilidades de las demás, la primera de ellas consiste en que influya en las probabilidades de sus indicios; la segunda en que la observación de un indicio afecte a la probabilidad de todas las posibles causas. La idea que hay detrás de la estructura de red bayesiana es la distinción clara entre estos dos tipos de influencia. Se construye un grafo acíclico dirigido (GAD) que representa las relaciones de causalidad entre las variables. Las variables del grafo pueden ser proposicionales (pueden tomar los valores verdadero o falso) o pueden ser variables que tomen valores de algún tipo (una temperatura corporal o una lectura tomada de algún dispositivo de diagnóstico). Ejemplo: Observe el grafo formado por la siguiente situación: En una determinada mañana la hierba se encuentra húmeda, pero no se tiene certeza de que la causa sea que hubo riego en la noche anterior o por la lluvia. Estación lluviosa Riego Lluvia Húmedo Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 150.
    Inteligencia Artificial. Un GADilustra las relaciones de causalidad que pueden surgir entre los nodos que contiene. Sin embargo, para poder usarlo como base de un razonamiento probabilístico, es necesario conocer para cada valor de un nodo padre, que evidencia proporciona sobre los valores que pueden tomar los nodos hijos. Estos datos se pueden encontrar en una tabla que contenga las probabilidades condicionadas. Ejemplo: Se muestra a continuación la tabla de probabilidades condicionadas para el grafo del ejemplo anterior: Atributo Probabilidad P (Húmedo | Riego, Lluvia) 0.95 P (Húmedo | Riego, ¬ Lluvia) 0.9 P (Húmedo | ¬ Riego, Lluvia) 0.8 P (Húmedo | ¬ Riego, ¬ Lluvia) 0.1 P (Riego | Estación lluviosa) 0.0 P (Riego | ¬ Estación lluviosa) 1.0 P (Lluvia | Estación lluviosa) 0.9 P (Lluvia | ¬ Estación lluviosa) 0.1 P (Estación lluviosa) 0.5 A partir de la tabla se observa que la probabilidad a priori de una época de lluvias es de 50 %, entonces, si se esta en una época de lluvias, la probabilidad de que llueva durante una noche dada es de 90 %, si no es así, la probabilidad de que llueva es sólo de 10 %. Ejercicio. Calcule CF, MB y MD de h1 dada tres observaciones, donde: CF(h1,o1) = 0.5 CF(h1,o2) = 0.3 CF(h1,o3) = -0.2 Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 151.
    Inteligencia Artificial. Ejemplo. Para ilustrarel uso del teorema de Bayes, supóngase que un paciente puede estar sano (no tiene enfermedad alguna) o tiene una de m−1 enfermedades posibles {E1, . . . , Em−1}. Por simplicidad de notación, sea E una variable aleatoria que puede tomar uno de m posibles valores, {e1, . . . , em}, donde E = ei significa que el paciente tiene la enfermedad Ei, y E = em significa que el paciente no tiene ninguna enfermedad. Supóngase también que se tienen n síntomas {S1, . . . , Sn}. Ahora, dado que el paciente tiene un conjunto de síntomas {s1, . . . , sk}, se desea calcular la probabilidad de que el paciente tenga la enfermedad Ei, es decir, E = ei. Entonces, aplicando el teorema de Bayes, se obtiene Conviene hacer los siguientes comentarios sobre la fórmula: ♦ La probabilidad p(ei) se llama probabilidad marginal, prior, “a priori” o inicial de la enfermedad E = ei puesto que puede ser obtenida antes de conocer los síntomas. ♦ La probabilidad p(ei|s1, . . . , sk) es la probabilidad posterior, “a posteriori” o condicional de la enfermedad E = ei, puesto que se calcula después de conocer los síntomas S1 = s1, . . . , Sk = sk. ♦ La probabilidad p(s1, . . . , sk|ei) se conoce por el nombre de verosimilitud de que un paciente con la enfermedad E = ei tenga los síntomas S1 = s1, . . . , Sk = sk. Ejemplo 3.4 Adenocarcinoma gástrico. Un centro medico tiene una base de datos consistente en las historias clínicas de N = 1, 000 pacientes. Estas historias clínicas se resumen gráficamente en la figura. Hay 700 pacientes (la región sombreada) que tienen la enfermedad adenocarcinoma gástrico (G), y 300 que no la tienen (se considera estar sano como otro valor posible de la enfermedad). Tres síntomas, dolor (D), pérdida de peso (P) y vómitos (V), se considera que están ligados a esta enfermedad. Por tanto, cuando un paciente nuevo llega al centro médico, hay una probabilidad 700/1,000 = 70% de que el paciente tenga adenocarcinoma gástrico. Esta es la probabilidad inicial, o “a priori”, puesto que se calcula con la información inicial, es decir, antes de conocer información alguna sobre el paciente. Por simplicidad de notación, se utiliza g para indicar que la enfermedad está presente y ¯g para indicar que la enfermedad está ausente. Notaciones similares se utilizan para los síntomas. Por tanto, pueden hacerse las afirmaciones siguientes: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 152.
    Inteligencia Artificial. • probabilidad“a priori”: 440 de 1,000 pacientes vomitan. Por ello, p(v) = card(v)/N = 440/1,000 = 0.44, donde card(v) denota el número de pacientes de la base de datos que vomitan. Esto significa que el 44% de los pacientes vomitan. • Verosimilitud: El 50% de los pacientes que tienen la enfermedad vomitan, puesto que p(v|g) = card(v, g)/card(g) = 350/700 = 0.5, mientras que sólo 30% de los pacientes que no tienen la enfermedad vomitan, puesto que p(v|¯g) = card(v, ¯g)/card(¯g) = 9 0/300 = 0.3. • Verosimilitud: El 45% de los pacientes que tienen la enfermedad vomitan y pierden peso, p(v, p|g) = card(v, p, g)/card(g) = 315/700 = 0.45, mientras que s´olo el 12% de los que no tienen la enfermedad vomitan y pierden peso, p(v, p|¯g) = card(v, p, ¯g)/card(¯g) = 35/300 ≈ 0.12. Puesto que la probabilidad inicial de que el paciente tenga adenocarcinoma gástrico, p(g) = 0.7, no es suficientemente alta para hacer un diagnóstico (nótese que tomar una decisión ahora implica una probabilidad 0.3 de equivocarse), el doctor decide examinar al paciente para obtener más información. Supóngase que los resultados del examen muestran que el paciente tiene los síntomas vómitos (V = v) y pérdida de peso (P = p). Ahora, dada la evidencia (el paciente tiene esos síntomas), ¿cual es la probabilidad de que el paciente tenga la enfermedad? Esta probabilidad “a posteriori” puede ser obtenida de la probabilidad “a priori” y de las verosimilitudes, aplicando el teorema de Bayes en dos etapas, como sigue: • Tras observar que V = v la probabilidad “a posteriori” es •Tras observar que V = v y P = p la probabilidad “a posteriori” es Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 153.
    Inteligencia Artificial. SEXTA UNIDAD: REDESNEURONALES 6.1. Concepto de red neuronal artificial 6.2. Redes neuronales y computadoras digitales 6.3. Redes neuronales e IA 6.4. Redes neuronales y mecanismos de aprendizaje (supervisado – no supervisado) 6.5. Redes neuronales y lógica borrosa ANTECEDENTES DE LAS NEURONAS Durante el periodo de 1967 a 1982, la búsqueda de la neurocomputación se lleva acabo fuera de Estados Unidos (la búsqueda en Japón, Europa, y la Unión Soviética). Sin embargo, una gran empresa investiga una cadena neuronal dentro de un proceso del principio adaptativo de procesos de imágenes, reconocimiento de patrones y modelos biológicos. Los primeros años de 1980, muchas investigaciones de la neurocomputacion empezaron a ser audaces propuestas para explorar el desarrollo de neurocomputadoras y aplicaciones de redes neuronales. En el primer lanzamiento de Defense Advanced Rechears Projects Agency (DARPA), donde Ira Skurnick (un programa maestro para la oficina de defensa) rechazo a seguir el concepto convencional e insistió a que escucharan sus argumentos a cerca de sus investigaciones sobre la neurocomputacion. Audazmente diversifica lo tradicional; Skurnick empezó sus investigaciones en 1983. Dando el estatus DARPA'S, como uno de los árbitros mundiales de la moda tecnología.Pocos meses después el programa maestro de otras organizaciones se consolidaron dando con esto un gran salto. Skurnic estuvo en el lugar adecuado en el momento adecuado para hacer una llave de decisión que ayudara al lanzamiento del renacimiento de la neurocomputación. Algunas otras fuerzas en los años de 1983 a 1986 fue Jonh Hopfiel, un físico famoso con reputación mundial quien comenzó una interesante investigación en redes neuronales en pocos anos. Hopfiel escribió dos grandes volúmenes de redes neuronales en 1982 y 1984, que fueron leídas por mucha gente alrededor del mundo persuadiendo a muchos físicos y matemáticos de todo el mundo a unirse a la nueva investigación de redes neuronales. En realidad alrededor de 1986, aproximadamente una tercera parte de toda esta gente se había vuelto seguidor de Hopfiel. El trabajo de hopfiel ha sido descrito y su principal contribución a esta ciencia es que la a revitalizado. En algunos círculos de investigadores se ha desarrollado una confusión en torno a que Hopfiel invento la neurocomputacion o es el que ha hecho los adelantos Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 154.
    Inteligencia Artificial. más significativos.Esta creencia ha generado gran inconformidad por parte de muchos pioneros especialmente por aquellos que han estado trabajando muchos años en la oscuridad. Para 1986, con la publicación del libro "PDP" (que significa procesamiento paralelo distribuido, volúmenes l y ll), editado por David Rumelhart el camino fue abierto. En 1987, se realizo la primera conferencia abierta sobre redes neuronales del I.E.E.E. (1700 participantes) fue hecha en San Diego (anteriormente ha habido conferencias solo que son extremadamente limitadas por el numero de participantes), y la Sociedad Internacional de Redes neuronales fue formada en 1988 es seguida por la computación neuronal en 1989 y el I.E.E.E. Transacción sobre Redes Neuronales en 1990. Y seguidas por muchas otras. A principios de 1987, muchas universidades anunciaron la formación de institutos de investigación y programas de educación acerca de la neurocomputacion. Alrededor de la neurocomputacion se hace una interesante historia pero el camino aun se esta desarrollando. Como dijo Winston Churchill estamos al final del principio. 6.1. CONCEPTO DE RED NEURONAL ARTIFICIAL Las Redes Neuronales Artificiales (ANNs de Artificial Neural Networks1) fueron originalmente una simulación abstracta de los sistemas nerviosos biológicos, formados por un conjunto de unidades llamadas "neuronas" o "nodos" conectadas unas con otras. Estas conexiones tienen una gran semejanza con las dendrítas y los axones en los sistemas nerviosos biológicos. La teoría y modelado de redes neuronales artificiales está inspirada en la estructura y funcionamiento de los sistemas nerviosos, donde la neurona es el elemento fundamental. Existen neuronas de diferentes formas, tamaños y longitudes, estos atributos son importantes para determinar la función y utilidad de la neurona. Redes neuronales Redes neuronales biológicas artificiales Neuronas Unidades de proceso Conexiones sinápticas Conexiones ponderadas Efectividad de la sinapsis Peso de las conexiones Efecto excitatorio o inhibitorio Signo del peso de una conexión Estimulación total Entrada total ponderada Activación (tasa de disparo) Función de activación (salida) Comparación entre RN biológicas y artificiales. Una neurona es una célula viva, que consta de un cuerpo celular más o menos esférico, de 5 a 10 micras de diámetro, del que sale una rama principal llamada axón, y varias ramas más cortas llamadas dendritas. A su vez, el axón puede producir ramas en torno a su punto de arranque, y con frecuencia se ramifica extensamente cerca de su extremo. 1 Véase: http://www.gc.ssr.upm.es/inves/neural/ann2/abrtions.htm Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 155.
    Inteligencia Artificial. Las dendritasy el cuerpo celular reciben señales de entrada; el cuerpo celular las combina e integra y emite unas señales de salida. El axón transporta esas señales a los terminales axónicos, que se encargan de distribuir información a un nuevo conjunto de neuronas. Una neurona recibe información de miles de otras neuronas, y a su vez, envía información a miles de neuronas más. Se calcula que en el cerebro existen 1015 conexiones. Estas señales que reciben y emiten las neuronas son de dos tipos distintos de naturaleza: eléctrica y química. La señal generada por la neurona y transportada a lo largo del axón es un impulso eléctrico, mientras la señal que se transmite entre los terminales axónicos de una neurona y las dendritas de la neurona siguiente es de origen químico; concretamente se realiza mediante moléculas de sustancias transmisoras (neurotransmisores) que fluyen a través de unos contactos especiales, llamados sinapsis, que tiene la función de receptor y estan localizados entre los terminales axónicos y las dendritas de la neurona siguiente. Existen numerosas formas de definir lo que son las redes neuronales artificiales, desde las definiciones cortas y genéricas hasta las que intentan explicar más detalladamente lo que significa red neuronal o computación neuronal, veamos algunas de estas: Computación neuronal es una nueva forma de computación, inspirada en modelos biológicos. Una red neuronal artificial es un sistema de computación hecho por un gran número de elementos simples, elementos de procesos muy interconectados, los cuales procesan información por medio de su estado dinámico como respuestas a entradas externas. Redes neuronales artificiales son redes interconectadas masivamente en paralelo de elementos simples (usualmente adaptativos ) y con organización jerárquica, las cuales intentan interactuar con los objetos del mundo real del mismo modo que lo hace el sistema nervioso biológico. En las redes neuronales biológicas, las células neuronales (neuronas) corresponden a los elementos de procesos anteriores. Las interconexiones se realizan por medio de las ramas de salida (axones) que producen un número variable de conexiones (sinapsis) con otras neuronas. Las redes neuronales son sistemas de simples elementos de proceso muy interconectados. El Primer modelo de red neuronal fue propuesto en 1943 por McCulloch y Pitts en términos de un modelo computacional de "actividad nerviosa". El modelo de McCulloch-Pitts es un modelo binario, y cada neurona tiene un escalón o umbral prefijado. Este primer modelo sirvió de ejemplo para los modelos posteriores de Jhon Von Neumann, Marvin Minsky, Frank Rosenblatt, y muchos otros. Una primera clasificación de los modelos de ANNs podría ser, atendiendo a su similitud con la realidad biológica: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 156.
    Inteligencia Artificial. Los modelos de tipo biológico. Este comprende las redes que tratan de simular los sistemas neuronales biológicos así como las funciones auditivas o algunas funciones básicas de la visión. El modelo dirigido a aplicación. Estos modelos no tienen porque guardar similitud con los sistemas biológicos. Sus arquitecturas están fuertemente ligadas a las necesidades de las aplicaciones para las que son diseñados. El objetivo principal de de las redes neuronales de tipo biológico es desarrollar un elemento sintético para verificar las hipótesis que conciernen a los sistemas biológicos. Las neuronas y las conexiones entre ellas (sinápsis) constituyen la clave para el procesado de la información. Observe la figura: Hay tres partes en una neurona: El cuerpo de la neurona, Ramas de extensión llamadas dendrítas para recibir las entradas, y Un axón que lleva la salida de la neurona a las desdirías de otras neuronas. La forma que dos neuronas interactuan no está totalmente conocida, dependiendo además de cada neurona. En general, una neurona envía su salida a otras por su axón. El axón lleva la información por medio de diferencias de potencial, u ondas de corriente, que depende del potencial de la neurona. Este proceso es a menudo modelado como una regla de propagación representada por la función de red u(.). Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 157.
    Inteligencia Artificial. La neuronarecoge las señales por su sinápsis sumando todas las influencias excitadoras e inhibidoras. Si las influencias excitadoras positivas dominan, entonces la neurona da una señal positiva y manda este mensaje a otras neuronas por sus sinápsis de salida. En este sentido la neurona puede ser modelada como una simple función escalón f(.). Como se muestra en la siguiente figura, la neurona se activa si la fuerza combinada de la señal de entrada es superior a un cierto nivel, en el caso general el valor de activación de la neurona viene dado por una función de activación f(.) Es generalmente admitido que las sinápsis pueden ser modificadas por la experiencia, es decir, por aprendizaje. Para su análisis, es conveniente considerar una sola neurona con sus sinápsis. Esta unidad es llamada perceptron, y constituye la base de las redes de neuronas. Las ANNs dirigidas a aplicación están en general poco ligadas a las redes neuronales biológicas. Ya que el conocimiento que se posee sobre el sistema nervioso en general no es completo, se han de definir otras funcionalidades y estructuras de conexión distintas a las vistas desde la perspectiva biológica. Las características principales de este tipo de ANNs son los siguientes: 1. Auto Organización y Adaptatividad: utilizan algoritmos de aprendizaje adaptativo y auto organización, por lo que ofrecen posibilidades de procesado robusto y adaptativo. 2. Procesado No Lineal: aumenta la capacidad de la red de aproximar, clasificar y su inmunidad frente al ruido. 3. Procesado paralelo: normalmente se usa un gran número de células de procesado por el alto nivel de interconectividad. Estas características juegan un importante papel en las ANNs aplicadas al procesado de señal e imagen. Una red para una determinada aplicación presenta una arquitectura muy concreta, que comprende elementos de procesado adaptativo masivo paralelo combinadas con estructuras de interconexión de red jerárquica. Los componentes más importantes de una red neuronal artificial son: • Unidades de procesamiento (la neurona artificial) • Estado de activación de cada neurona. • Patrón de conectividad entre neuronas. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 158.
    Inteligencia Artificial. • Regla de propagación. • Función de transferencia. • Regla de activación. • Regla de aprendizaje. De acuerdo a las características de cada nodo de la red (microestructura), se presenta la forma de organización de la red neuronal artificial (mesoestructura) en función de: Número de niveles Número de neuronas por nivel Grada de Tipo de conexiones conectividad (Hacia atrás, hacia delante, lateral) Características de un grupo de neuronas • Número de niveles o capas: La distribución de neuronas dentro de la red se realiza formando niveles o capas de un número determinado de neuronas cada una. A partir de su situación dentro de la red, se pueden distinguir tres tipos de capas: 1) de entrada, es la capa que recibe directamente la información proveniente de las fuentes externa de la red; 2) ocultas, son internas a la red y no tiene contacto directo con el entorno exterior; y 3) de salida, transfieren información de la red hacia el exterior. • Número de neuronas por nivel: • Patrones de conexión: La conectividad entre los nodos de una red neuronal artificial está relacionada con la forma en que las salidas de las neuronas están canalizadas para convertirse en entradas de otras neuronas, • Flujo de información: Debido a su constitución y a sus fundamentos, las redes neuronales artificiales presentan un gran número de características semejantes a las del cerebro. Esto hace que ofrezcan numerosas ventajas y que este tipo de tecnología se este aplicando en diferentes áreas. Estas ventajas incluyen: Aprendizaje adaptativo: capacidad de aprender a realizar tareas basadas en un entrenamiento o una experiencia inicial. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 159.
    Inteligencia Artificial. Autoorganización: unared neuronal puede crear su propia organización o representación de la información que recibe mediante una etapa de aprendizaje. Tolerancia a fallos: la destrucción parcial de una red conducen a una degradación de su estructura; sin embargo, algunas capacidades de la red se pueden retener, incluso sufriendo un gran daño. Operación en tiempo real: los computadores neuronales pueden ser realizados en paralelo, y se diseñan o fabrican maquinas con hardware especial para obtener esta capacidad. Fácil inserción dentro de la tecnología existente: se pueden obtener chip especializados para redes neuronales que mejoran su capacidad en ciertas tareas. Esto facilitará la integración modular en los sistemas existentes. Las redes neuronales son una tecnología computacional emergente que puede utilizarse en un gran número y variedad de aplicaciones, tanto comerciales como militares. Se pueden desarrollar redes neuronales en un periodo de tiempo razonable y puede realizar tareas concretas mejor que otras tecnologías convencionales. • El perceptron está constituido por las N entradas provenientes de fuentes externas, las N conexiones o pesos w = (w1,w2,…,wN) y la salida . En realidad un perceptron es la red neuronal más simple posible: aquella donde no existen capas ocultas. Para cada configuración de los estados de las neuronas de entrada (estímulo) la respuesta del perceptron obedece la siguiente dinámica: sumar los potenciales sinápticos wij (ver figura 2). Esta suma ponderada, también llamada campo, se escribe: Si hi > qi, la respuesta de la neurona es = +1; si no, es inactiva y si = -1. Si tanto las entradas como las salidas son binarias; se dice entonces que el perceptron realiza una función booleana de sus entradas. Pero otras posibilidades han sido estudiadas (entradas reales, salidas sigmoideas en función del campo, etc.), en vista de las aplicaciones. Con una arquitectura tan simple como la del perceptron no se pueden realizar más que una clase de funciones booleanas muy simples, llamadas linealmente separables. Son las funciones en las cuales los estados de entrada con salida positiva pueden ser separados de aquellos a salida negativa por un hiperplano. Un hiperplano es el conjunto de puntos en el espacio de estados de entrada, que satisfacen una ecuación lineal. En dos dimensiones, es una recta, en tres dimensiones un plano, etc. La figura 3 presenta dos ejemplos de funciones booleanas con 2 entradas (N=2). El ejemplo 3b no es realizable por un perceptron. Si se quieren realizar funciones más complejas con redes de neuronas, es necesario intercalar neuronas ocultas entre las entradas y la salida. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 160.
    Inteligencia Artificial. Red neuronal con una capa oculta y H unidades Una red multicapas se define como un conjunto de perceptrones, ligados entre si por sinápsis y dispuestos en capas siguiendo diversas arquitecturas. Una de las arquitecturas más comúnmente usada es llamada feedforward: se tienen conexiones de la entrada a las capas ocultas y de aquí a la salida. En la figura 4 se muestra una RN feedforward con N entradas x=(x1,x 2,…,x N) y una capa oculta de H unidades ocultas. El perceptron de salida es denotado por z. El funcionamiento de una RN es gobernado por reglas de propagación de actividades y de actualización de los estados. Teóricamente, una RN puede ser vista como un modelo que realiza una función de un espacio de entrada hacia un espacio de salida. El objetivo de esta modelización consiste en que la asociación sea lo más acorde posible con el medio ambiente del fenómeno estudiado. Observe en la figura 4 que el perceptron de salida z tiene ahora como entradas las salidas de las unidades ocultas s: es justamente aquí donde se realiza el mapeo del espacio de entrada hacia estados ocultos llamados representaciones internas, que son una codificación de la información, y de éstas a la salida. 6.2. REDES NEURONALES Y COMPUTADORAS DIGITALES Para entender el potencial real de la computación neuronal, será necesario hacer una clara distinción entre los sistemas de computación neuronal y digitales. Los sistemas neurológicos no aplican principios de circuitos lógicos o digitales: un sistema de computación digital debe ser asíncrono o asíncrono; mientras que las neuronas non pueden ser circuitos de umbral lógico, porque hay miles de entradas variables en la mayoría de las neuronas y el umbral es variable con el tiempo, siendo afectado por la estimulación, atenuación, etc. Los procesos colectivos que son importantes en computación neuronal no pueden implementarse en computación digital. Por lo que el cerebro debe ser un computador analógico. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 161.
    Inteligencia Artificial. Ni lasneuronas ni las sinapsis son elementos de memoria biestables. En la computación neuronal no hay instrucción de máquina ni códigos de control. Los circuitos del cerebro no implementan computación recursiva, y por tanto no son algorítmicos. Incluso en el nivel más alto, la naturaleza del proceso de información es diferente en el cerebro y en los computadores digitales. Con el fin de llegar al entendimiento global de ANNs, adoptamos la siguiente perspectiva, llamada top-down que empieza por la aplicación se pasa al algoritmo y de aquí a la arquitectura: Esta aproximación a las ANNs está motivada por la aplicación, basada en la teoría y orientada hacia la implementación. Las principales aplicaciones son para el procesado de señal y el reconocimiento de patrones. La primera etapa algorítmica representa una combinación de la teoría matemática y la fundamentación heurística por los modelos neuronales. El fin último es la construcción de neurocomputadores digitales, con la ayuda de las tecnologías y el procesado adaptativo, digital y paralelo Las redes neuronales tratan de resolver de forma eficiente problemas que pueden encuadrarse dentro de tres amplios grupos: optimización, reconocimiento y generalización. Estos tres tipos engloban un elevado número de situaciones, lo que hace que el campo de aplicación de las redes neuronales en la gestión empresarial sea muy amplio. En los problemas de optimización, se trata de determinar una solución que sea óptima. Generalmente se aplican redes neuronales realimentadas, como el modelo de Hopfield citado. En la gestión empresarial, son decisiones de optimización encontrar los niveles de tesorería, de existencias, de producción, construcción de carteras óptimas, etc. En los problemas de reconocimiento, se entrena una red neuronal con inputs como sonidos, números, letras y se procede a la fase de test presentando esos mismos patrones con ruido. Este es uno de los campos más fructíferos en el desarrollo de redes neuronales y casi todos los modelos: perceptrón, redes de Hopfield, mapas de Kohonen, etc, han sido aplicados con mayor o menor éxito. En los problemas de generalización, la red neuronal se entrena con unos inputs y el test se realiza con otros casos diferentes. Problemas típicos de generalización son los de clasificación y predicción. Las redes neuronales son modelos matemáticos especializados que pueden aplicarse en dominios muy concretos. Las redes neuronales están mostrando su utilidad en muchos problemas reales. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 162.
    Inteligencia Artificial. Los estudiosempíricos muestran la eficiencia de las redes neuronales con datos basados en lógica difusa, patrones o rasgos ocultos para la mayoría de las técnicas incluida la capacidad humana, datos que exhiben no linealidad e información en la que se ha detectado caos. La elección entre los diferentes sistemas de ayuda a la toma de decisiones depende del tipo de tarea a realizar. También el nivel al que se toman las decisiones afecta la elección del tipo de sistema más apropiado. Simón (1960) clasificó las decisiones en estructuradas y no estructuradas: las decisiones estructuradas son repetitivas, rutinarias y existe un procedimiento definido para abordarlas, por el contrario, en las decisiones no estructuradas el decisor debe proporcionar juicios y aportar su propia evaluación. Más recientemente Gorry y Scott-Morton (1971) han propuesto un esquema que relaciona el tipo de decisión (estructurada, semiestructurada y no estructurada) y el nivel organizacional (control operativo, de gestión y estratégico) con la herramienta a utilizar. Lógicamente en el nivel operativo dominan las decisiones estructuradas, en el nivel de gestión las semiestructuradas y en el estratégico las no estructuradas, formando una diagonal. En la figura siguiente hemos actualizado este esquema incorporando las últimas tecnologías de la información, e incluso anticipando lo que puede ser un futuro próximo. 6.3. REDES NEURONALES E IA Las redes neuronales se encuentran dentro del campo de la IA, tal y como se muestra en el esquema siguiente: Inteligencia Artificial Redes de Autoproceso Procesamiento Numérico Procesamiento Simbólico Sistemas Asociativos Sistemas Distribuidos Redes Neuronales Redes Subsimbólicas Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 163.
    Inteligencia Artificial. La InteligenciaArtificial clásica (IA) ha generado una cierta decepción al tratar de explicar los procesos cognoscitivos debido a que la representación usando reglas se aleja mucho de cualquier inspiración biológica por una parte y por otra conduce a la creación de sistemas que son demasiado rígidos y al mismo tiempo extremadamente frágiles. El reconocimiento, el aprendizaje y la memoria son mecanismos cognoscitivos que no pueden ser explicados por medio del simbolismo de la IA, sino más bien en función de unidades simples pero altamente interconectadas de las cuales emerge un comportamiento complejo, paralelo y auto-organizado, sin necesidad de tener reglas explícitas de decisión ni de un procesador maestro o motor de inferencia. La secuenciación y la rigidez de reglas son dos aspectos que han sido duramente atacados en las técnicas de IA. La inmensa ventaja de los métodos conexionistas comparado con los métodos tradicionales de IA es la siguiente: no es necesario conocer ni una expresión ni una construcción de la función a modelar, tan solo se requiere disponer de un conjunto de aprendizaje satisfactorio para que la red pueda aproximar esta función aplicando una regla de aprendizaje. Así, muchos fenómenos cognoscitivos han logrado ser modelados a través de sistemas conexionistas. Por otra parte, en lo que concierne a la aplicación tecnológica, las redes de neuronas son actualmente ampliamente utilizadas en aplicaciones tan variadas como la previsión, la clasificación, el diagnóstico automático, el procesamiento de señales, el reconocimiento de formas, la compresión de datos, la optimización combinatoria, la robótica y la búsqueda de documentos, entre otras. Existen diferencias relevantes entre redes neuronales con respecto a lo que se entiende como inteligencia artificial, las cuales se destacan a continuación: Representación del conocimiento: En IA se utilizan métodos de representación del conocimiento (reglas de producción, marcos, reglas semánticas, etc ) generalmente localizados: átomos de conocimiento, concepto asociado a una regla, etc. Esto hace que la gestión de las bases de conocimiento sea problemática: añadir una regla o suprimir un dato puede tener consecuencias imprevisibles sobre los demás datos. Actualmente se piensa que los conocimientos se presentan de forma distribuida en el cerebro. De esto se puede deducir algunas consecuencias: a) La red puede crear su propia organización de la información. b) Como se dispone de un número finito de neuronas, varios hechos se memorizan por la activación de clases de neuronas no disjuntas. c) Mejor tolerancia a fallos, la perdida de neuronas no implica que se deje de recordar, por tanto, debe existir información redundante. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 164.
    Inteligencia Artificial. Mecanismos deinferencia: Los mecanismos de inferencia (razonamiento) utilizados en la IA estan basados en la lógica (lenguaje Prolog, por ejemplo). Sin embargo, el cerebro humano no realiza un razonamiento necesariamente lógico; utiliza la imprecisión y la contradicción parcial. El modo de funcionamiento del cerebro es la evolución dinámica de las actividades neuronales. Aprendizaje: El aprendizaje en IA consiste simplemente en añadir nuevos átomos de conocimientos (nuevos hechos, reglas, etc.). En el cerebro, el aprendizaje de un hecho parecido a otro del que ya tenemos conocimiento se hace por refuerzo de las conexiones entre neuronas y esta actividad conjunta es necesario para memorizarlo. Se ha demostrado que si un sujeto no esta expuesto a ciertos estímulos al comienzo de su vida, no podrá detectar más de estos estímulos, debido a la degeneración de las conexiones necesarias. Paralelismo: Es una característica innata de los sistemas conexionistas. Aunque un ordenador realiza cálculos mucho más rápido que un ser humano, no es capaz de desarrollar procesos que éste realiza de forma sencilla (comprensión de una frase, analizar una imagen, reconocer un rostro, etc). Esto es debido a que el cerebro humano, para hacerlo, pone en marcha simultáneamente millones de neuronas. Modo de trabajo con redes neuronales. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 165.
    Inteligencia Artificial. Originalmente lared neuronal no dispone de ningún tipo de conocimiento útil almacenado. Para que ejecute una tarea es preciso entrenar o enseñar a la red neuronal. El entrenamiento se realiza mediante patrones-ejemplo. Existen dos tipos de aprendizaje: supervisado y no supervisado. Si la red utiliza un tipo de aprendizaje supervisado debemos proporcionarle parejas de patrones entrada-salida y la red neuronal aprende a asociarlos. En terminología estadística equivale a los modelos en los que hay vectores de variables independientes y dependientes. Si el entrenamiento es no supervisado, únicamente debemos suministrar a la red los datos de entrada para que extraiga los rasgos característicos esenciales. Estas redes neuronales no supervisadas están relacionadas con modelos estadísticos como el análisis de conglomerados o las escalas multidimensionales. Durante la fase de aprendizaje en la mayor parte de los modelos se produce una variación de los pesos sinápticos, es decir, de la intensidad de interacción entre las neuronas, lo que en terminología estadística equivale a calcular los coeficientes de las funciones de ajuste. INCONVENIENTES Los sistemas neuronales presentan ciertos inconvenientes. Uno importante es que habitualmente realizan un complejo procesamiento que supone millones de operaciones, por lo que no es posible seguir paso a paso el razonamiento que les ha llevado a extraer sus conclusiones. Sin embargo, en redes pequeñas, mediante simulación o por el estudio de los pesos sinápticos sí es posible saber, al menos, qué variables de las introducidas han sido relevantes para tomar la decisión. Falta todavía mucho por estudiar en el modo de operación de las redes neuronales. Otro problema es que al ser una herramienta novedosa y en pleno desarrollo, no se trata de una disciplina con un cuerpo formal, coherente y establecido, por lo que el investigador se encuentra con muchos problemas a los que todavía no se ha encontrado solución. 6.4. REDES NEURONALES Y MECANISMOS DE APRENDIZAJE (SUPERVISADO – NO SUPERVISADO) Los cambios que se producen durante el proceso de aprendizaje se reducen a la destrucción, modificación y creación de conexiones entre las neuronas. En los modelos de redes neuronales artificiales, la creación de una nueva conexión implica que el peso de la misma pasa a tener un valor distinto de cero. De la misma forma, una conexión se destruye cuando su peso pasa a ser cero. Un aspecto importante respecto al aprendizaje en las redes neuronales es el conocer como se modifican los valores de los pesos; es decir, cuales son los criterios que se sigue para cambiar el valor asignado a las conexiones cuando se pretende que la red aprende una nueva información. Estos criterios determinan lo que se conoce como ña regla de aprendizaje de la red. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 166.
    Inteligencia Artificial. Se sueleconsiderar dos tipos de reglas: las que responden a los que habitualmente se conoce como aprendizaje supervisado, y las correspondientes a un aprendizaje no supervisado. La diferencia entre ambos tipos estriba en la existencia o no de un agente externo (supervisor) que controle el proceso de aprendizaje de la red. a) Redes con aprendizaje supervisado El aprendizaje supervisado se caracteriza porque el proceso de aprendizaje se realiza mediante un entrenamiento controlado por un agente externo (supervisor, maestro) que determina la respuesta que debería generar la red a partir de una entrada determinada. El supervisor comprueba la salida de la red y en el caso de que esta no coincida con la deseada, se procederá a modificar los pesos de las conexiones, con el fin de conseguir que la salida obtenida se aproxime a la deseada. En este tipo de aprendizaje se suele considerar, a su vez, las siguiente formas de llevar a cabo aprendizajes supervisados: Aprendizaje por corrección de errores: Consiste en ajustar los pesos de las conexiones de la red en función de la diferencia entre los valores deseados y los obtenidos en la salida de la red; es decir en función del error cometido en la salida. La red neuronal Perceptron utiliza esta forma de aprendizaje. Aprendizaje por refuerzo: Se trata de un aprendizaje supervisado más lento que el anterior, que se basa en la idea de no disponer de un ejemplo completo del comportamiento deseado; es decir, de no indicar durante el entrenamiento exactamente la salida que se desea que proporcione la red ante una determinada entrada. La función del supervisor se reduce a indicar mediante una señal de refuerzo si la salida obtenida en la red se ajusta a la deseada (éxito = + 1 o fracaso = - 1), y en función de ello se ajustan los pesos basándose en un mecanismo de probabilidades. Una red que utiliza este tipo de aprendizaje es la conocida como Linear Reward Penalty. Aprendizaje estocástico: Consisten básicamente en realizar cambios aleatorios en los valores de los pesos de las conexiones de la red y evaluar su efecto a partir del objetivo deseado y de distribuciones de probabilidades. Una red que utiliza este tipo de aprendizaje es la conocida como Boltzmann Machine. b) Aprendizajes no supervisados Las redes con aprendizaje no supervisado (autosupervisado) no requieren influencia externa para ajustar los pesos de las conexiones entre sus neuronas. La red no recibe ninguna información por parte del entorno que le indique si la salida generada en respuesta a una determinada entrada es o no correcta; por ello, suele decirse que estas redes son capaces de autoorganizarse. Se consideran dos tipos de algoritmos de aprendizaje no supervisado: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 167.
    Inteligencia Artificial. Aprendizaje hebbiano:El aprendizaje hebbiano consiste básicamente en el ajuste de los pesos de las conexiones de acuerdo con la correlación (multiplicación en los casos de valores binarios +1 y –1 ) de los valores de activación (salidas) de dos neuronas conectadas. Si las dos unidades son activas (positivas), se produce un reforzamiento de la conexión, cuando una es activa y la otra pasiva (negativa), se produce un debilitamiento de la conexión. Se trata de una regla de aprendizaje no supervisado, pues la motivación de los pesos se realiza en función de los estados (salidas) de las neuronas obtenidos tras la presentación de cierto estímulo (información de entrada a la red ), sin tener en cuenta si se desea obtener o no esos estados de activación. Este tipo de aprendizaje fue empleado por Hopfield en la conocida red que lleva su nombre: “Red Hopfield”. Aprendizaje competitivo y cooperativo: En las redes con aprendizaje competitivo ( y cooperativo), suele decirse que las neuronas compiten (y cooperan ) unas con otras con el fin de llevar a cabo una tarea dada. Con este tipo de aprendizaje, se pretende que cuando se presente a la red cierta información de entrada, solo una de las neuronas de salida de la red, o una por cierto grupo de neuronas compiten por activarse, quedando finalmente una, o una por grupo, como neurona vencedora, siendo anuladas el resto, que son forzadas a sus valores de respuesta mínimo. El objetivo de este aprendizaje es categorizar los datos que se introducen a la red. De esta forma, las informaciones similares son clasificadas formando parte de la misma categoría, y por tanto deben activar la misma neurona de salida. Las clases o categorías deben ser creadas por la propia red, puesto que se trata de un aprendizaje no supervisado, a través de las correlaciones entre los datos de entrada. Este tipo de aprendizaje se ha aplicado a redes feedforward de dos capas. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 168.
    Inteligencia Artificial. 6.5. REDESNEURONALES Y LÓGICA BORROSA La lógica borrosa o multivaluada permite asignar diferentes grados de certeza a los hechos. En lógica borrosa se trabaja con conjuntos, que se definen por sus funciones de pertenencia, que se denotan como µ c (x) e indican el grado de pertenencia (entre 0 y 1) del elemento con valor x al conjunto C. Las operaciones entre conjuntos se plantean en forma de operaciones borrosas entre sus funciones de pertenencia. Las más utilizadas son la Unión ( ∪ ), Intercepción ( ∩ ) y complemento ( - ) para los conjuntos, y las correspondientes suma lógica borrosa ( ∨ ), producto lógico borroso ( ∧ ) y negación borrosa para las funciones de pertenencia. Sean dos conjuntos borrosos A y B, con funciones de pertenencia µ A y µ B tendríamos: Unión: µ A ∪ B = µ A (x) ∨ µ B (x) = máx. (µ A (x), µ B (x)) Intercepción: µ A ∩ B = µ A (x) ∧ µ B (x) = mín. (µ A (x), µ B (x)) Complemento: µ -A (x) = 1 - µ A (x) Neuronas borrosas y aprendizaje borroso Una neurona borrosa puede modelarse como una unidad de procesamiento que recibe una señales borrosas de entrada a través de una sinapsis borrosas, siendo la entrada el producto borroso de la salida de la neurona anterior por el peso borroso de la conexión. La entrada neta de la neurona no se obtiene como la suma aritmética de las entradas, sino como la suma borrosa de las mismas. Una posible utilidad en este tipo de redes, es servir de memoria asociativa para almacenar y evaluar las reglas de control en un sistema borroso. El mecanismo de aprendizaje también utiliza operadores borrosos para la obtención de los pesos, siendo una adaptación de la regla de hebb, conocida como aprendizaje hebbiano borroso. Implementación neuronal de mapas cognitivos borrosos. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 169.
    Inteligencia Artificial. SÉPTIMA UNIDAD: ALGORITMOSGENÉTICOS 7.1. Introducción 7.2. Algoritmos Genéticos 7.2.1 Representación de Hipótesis 7.2.2 Operadores Genéticos 7.2.3 Función de evaluación y selección 7.3. Búsqueda en el espacio de Hipótesis 7.4. Programación Genética 7.4.1 Representación de Programas 7.5. Modelos de evolución y aprendizaje 7.5.1 Evolución Lamarckiana 7.5.2 El efecto Baldwin 7.6. Paralelismo en Algoritmos Genéticos 7.1. INTRODUCCIÓN Los algoritmos genéticos (AG) proporcionan un método de aprendizaje basado en la analogía con la evolución de las especies. Los AG generan un conjunto de hipótesis mediante la mutación y recombinación de parte del conjunto de hipótesis conocido. En cada paso el conjunto de hipótesis conocido como “población actual” se renueva remplazando una proporción de esta población por los sucesores de las hipótesis más “adecuadas” (mediante el uso de una función de evaluación). La popularidad de los AG se debe en parte a que la evolución es un método robusto y bien probado dentro de los sistemas biológicos naturales. Además son fácilmente paralelizables, lo que supone una ventaja gracias al abaratamiento actual de los costes en hardware. Por otra parte, los AG pueden realizar búsquedas en espacios de hipótesis que contienen complejas interacciones entre las distintas partes, donde el impacto de cada parte sobre la función de evaluación es difícil de especificar. Aunque no se garantice encontrar la solución óptima, los AG generalmente encuentran soluciones con un alto grado de acierto. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 170.
    Inteligencia Artificial. 7.2. ALGORITMOSGENÉTICOS El objetivo de los AG es buscar dentro de un espacio de hipótesis candidatas la mejor de ellas. En los AG la “mejor hipótesis” es aquella que optimiza a una métrica predefinida para el problema dado, es decir, la que más se aproxima a dicho valor numérico una vez evaluada por la función de evaluación. El comportamiento básico de un algoritmo genético es el siguiente: de forma iterativa va actualizando la población de hipótesis. En cada iteración, todos los miembros de la población son procesados por la función de evaluación, tras lo cual una nueva población es generada. La nueva generación estará compuesta por: - Las mejores hipótesis de la población actual (seleccionadas probabilísticamente) - Y el resto de hipótesis necesarias para mantener el número, que se consiguen mediante el cruce de individuos. A partir de dos hipótesis padre (seleccionadas probabilísticamente a partir de la población actual) se generan dos hipótesis hijas recombinando sus partes siguiendo algún criterio establecido. Una vez llegados a este punto (con una nueva población con el mismo número de individuos), a un determinado porcentaje de la población se le aplica un operador de mutación. 7.2.1. Representación de Hipótesis Las hipótesis en los AG se suelen representar mediante cadenas de bits, de forma que puedan ser fácilmente manipulables por los operadores genéticos de mutación y cruce. Primero veamos como usar una cadena de bits para representar los posibles valores de un atributo. Si un atributo puede tomar tres valores posibles (A, B y C), una manera de representarlo es mediante tres bits de forma que: Atributo (100) = puede tomar el valor A Atributo (010) = puede tomar el valor B Atributo (001) = puede tomar el valor C Atributo (110) = puede tomar el valor A ó B (A or B) Atributo (111) = puede tomar el valor A, B ó C (A or B or C). No importa el valor del atributo. De esta forma podemos representar fácilmente conjunciones de varios atributos para expresar restricciones (precondiciones) mediante la concatenación de dichas cadenas de bits. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 171.
    Inteligencia Artificial. Ejemplo: “Tiempo” puede ser Despejado, Nublado o Lluvioso. “Viento” puede ser Fuerte o Moderado. (Tiempo = Nublado ó Lluvioso) y (Viento = Fuerte) se representaría con la siguiente cadena: 011 10. Las postcondiciones de las reglas se pueden representar de la misma forma. Por ello una regla se puede describir como la concatenación de la precondición y la postcondición. Ejemplo: “Jugar al Tenis” puede ser Cierto o Falso. Si Viento = Fuerte entonces “Jugar al Tenis” = Cierto se representaría mediante 111 10 10. Donde los tres primeros bits a uno indican que el atributo “Tiempo” no afecta a nuestra regla. Cabe destacar que una regla del tipo 111 10 11 no tiene demasiado sentido, puesto que no impone restricciones en la postcondición. Para solucionar esto, una alternativa es codificar la postcondición con un único BIT (1 = Cierto y 0 = Falso). Otra opción es condicionar los operadores genéticos para que no produzcan este tipo de cadenas o conseguir que estas hipótesis tengan una adecuación muy baja (según la función de evaluación) para que no logren pasar a la próxima generación de hipótesis. 7.2.2. Operadores Genéticos Los dos operadores más comunes son la “mutación” y el “cruce”. El operador de cruce genera dos nuevos hijos a partir de dos cadenas padre recombinando sus bits. Para elegir con que bits contribuye cada padre hacemos uso de una “máscara de cruce”. Veamos un par de ejemplos: Cruce Simple: Cadenas padre Mascara de Cruce Hijos 11101001000 11101010101 11111000000 00001010101 00001001000 Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 172.
    Inteligencia Artificial. Cruce Doble: Cadenas padre Mascara de Cruce Hijos 11101001000 11001011000 00111110000 00001010101 00101000101 El operador mutación produce un nuevo hijo de un solo padre cambiando el valor de uno de sus bits elegido al azar. Generalmente se aplica después de hacer uso del operador cruce. Otros operadores genéticos son “AddAlternative” y “DropCondition”. El primero de ellos cambia un BIT de un atributo de 0 a 1, es decir, permite que el atributo pueda tomar el valor representado por dicho BIT. El segundo pone todos los bits de un atributo a 1, con lo que elimina la restricción impuesta por el atributo. Una posibilidad interesante que surge con la aplicación de estos operadores, es la de incluir nuevos bits en las cadenas que representan las hipótesis y que indiquen que operadores pueden ser aplicados a dicha hipótesis (añadiendo un BIT por operador). Como estos bits van a sufrir modificaciones a causa de los operadores aplicados a la cadena, estaremos alterando dinámicamente los métodos de búsqueda del algoritmo genético. 7.2.3. Función de evaluación y selección La función de evaluación define el criterio para ordenar las hipótesis que potencialmente pueden pasar a formar parte de la siguiente generación. La selección de las hipótesis que formarán parte de la siguiente generación o que serán usadas para aplicarles los operadores genéticos, puede realizarse de varias formas. Las más usuales son: - Selección proporcional al ajuste dado por la función de evaluación. En este método la probabilidad de que una hipótesis sea seleccionada viene determinada por: Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 173.
    Inteligencia Artificial. Figura 1 - Probabilidad de que la hipótesis hi sea elegida. - Selección mediante torneo. Se eligen dos hipótesis al azar. La más “adecuada” (según la función de evaluación) tiene una probabilidad p (prefijada de antemano) de ser elegida, mientras que la otra tiene una probabilidad (1 – p). - Selección por rango. Las hipótesis de la población actual se ordenan de acuerdo a su adecuación. La probabilidad de que una hipótesis sea seleccionada será proporcional a su posición en dicha lista ordenada, en lugar de usar el valor devuelto por la función de evaluación. 7.3. BÚSQUEDA EN EL ESPACIO DE HIPÓTESIS Una de las dificultades que nos encontramos en algunos algoritmos genéticos es el problema del “crowding” (muchedumbre). Se trata de un fenómeno por el cual las mejores hipótesis se reproducen rápidamente de manera que las nuevas generaciones una gran proporción se debe a éstas hipótesis y a otras muy similares (descendientes), reduciendo así la diversidad de la población, y por lo tanto, las posibilidades de la evolución. Para reducir los efectos del “crowding” se usan varias estrategias. Una solución consiste en cambiar el método de selección habitual (selección proporcional al ajuste) por alguno de los otros vistos con anterioridad (selección mediante torneo o selección por rango). Otra opción consiste en usar otra función de evaluación, “ajuste compartido”, de manera que el valor devuelto por esta función se devalúa ante la presencia de otras hipótesis similares en la población. Y una tercera alternativa es restringir el tipo de hipótesis a los que se les permite la recombinación. 7.4. PROGRAMACIÓN GENÉTICA La programación genética (PG) es una forma de computación evolutiva en la que los individuos de la población son programas, en lugar de cadenas de bits. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 174.
    Inteligencia Artificial. 7.4.1. Representaciónde Programas Los programas usados en la programación genética suelen representarse mediante sus árboles sintácticos. En esta notación, cada llamada a una función se representa por un nodo en el árbol, y los argumentos de la función corresponden con los nodos hijos de éste. Para aplicar programación genética a un dominio particular, es necesario que el usuario defina de antemano las primitivas que se van a emplear así como el tipo de los nodos hoja. Por lo tanto, la programación genética realiza una búsqueda evolutiva en un espacio de programas descritos mediante sus árboles sintácticos. De igual forma que los algoritmos genéticos, la programación genética itera sobre una población de individuos produciendo una nueva generación mediante el empleo de la selección, el cruce y la mutación. La adecuación de un programa viene determinada por los resultados de su ejecución sobre unos datos de entrenamiento (función de evaluación). Así, por ejemplo, el operador de cruce se implementa mediante el intercambio de subárboles entre programas padres. En la mayoría de los casos, el rendimiento de la programación genética depende básicamente de la representación elegida y de la elección de la función de evaluación. Figura 2 - Representación de un programa mediante su árbol. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 175.
    Inteligencia Artificial. 7.5. MODELOSDE EVOLUCIÓN Y APRENDIZAJE En muchos sistemas naturales, los individuos aprenden a adaptarse durante sus vidas. Al mismo tiempo distintos procesos biológicos y sociales permiten a la especie adaptarse a lo largo de las distintas generaciones, por lo que surge una interesante pregunta: ¿Cuál es la relación entre el aprendizaje individual de un organismo durante su vida y el aprendizaje colectivo de la especie? A esta cuestión intentan responder la teoría de la evolución Lamarckiana y la teoría del efecto Baldwin. 7.5.1. Evolución Lamarckiana Lamarck (científico de finales del siglo XIX) propuso que la experiencia de un individuo afecta directamente a su descendencia, por lo que el conocimiento sería hereditario y las siguientes generaciones no necesitarían adquirirlo. Se trata de una conjetura que mejora la eficiencia de los algoritmos genéticos y la programación genética, en las cuales se ignoraba la experiencia adquirida por el individuo durante su vida. Aunque biológicamente esta teoría no es correcta como modelo de evolución, sin embargo si es perfectamente aplicable al caso de la computación genética, donde recientes estudios han demostrado su capacidad para mejorar la efectividad. 7.5.2. El efecto Baldwin Se trata de otro mecanismo que sugiere como el aprendizaje de un individuo puede alterar el curso de la evolución de la especie. Se basa en las siguientes afirmaciones: - Si una especie evoluciona en un entorno cambiante, entonces los individuos capaces de aprender durante su vida se verán favorecidos. De hecho, la habilidad para aprender permite a los individuos maximizar su capacidad de adaptación en el entorno. - Los individuos con capacidad de aprendizaje dependerán en menor medida de su código genético. Como consecuencia de lo anterior las nuevas generaciones poseerán una diversidad genética mayor, lo que permitirá una evolución más rápida. En resumen, la capacidad de aprendizaje de algunos individuos provoca indirectamente una aceleración en la evolución de toda la población. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 176.
    Inteligencia Artificial. 7.6. PARALELISMOEN ALGORITMOS GENÉTICOS Los algoritmos genéticos son fácilmente paralelizables. A continuación se muestran las posibilidades de paralelismo con AG’s: Grano Grueso: Se subdivide la población en una serie de grupos distintos (siguiendo algún criterio), llamados “demes”. Cada uno de estos grupos se asigna a un nodo de computación distinto, y a continuación se aplica un AG en cada nodo. Los operadores de cruce se aplicaran generalmente entre individuos del mismo grupo, y en menor porcentaje, entre individuos de distintos grupos. En este entorno surge un nuevo concepto, denominado migración, que se produce cuando un individuo de un grupo se copia o se traslada a otro (s). Un beneficio del modelo de grano grueso es que se reduce el efecto “crowding” que aparecía en los AG no paralelizados. Grano Fino: Se asigna un procesador a cada individuo de la población. La recombinación se efectúa entre individuos vecinos en la red de computación. Algunos ejemplos de redes de procesadores (especifican las reglas de vecindad) son la malla, el toroide, etc. EJERCICIO Diseñar un algoritmo genético que aprenda a clasificar conjunciones de reglas ara el problema “Jugar al Tenis” descrito en el capítulo 3 [nota]. Describe detalladamente la codificación de la cadena de bits para las hipótesis y el conjunto de operadores de cruce. La expresión que soluciona el problema es la siguiente: (Tiempo = soleado y Humedad=Normal) o (Tiempo = nublado) o (Tiempo = lluvioso y Viento=Debil) Los posibles valores de los atributos son: Tiempo = (Soleado,Nublado,Lluvioso) Humedad=(Alta,Normal) Viento=(Fuerte,Debil) JugarTenis=(Si,No) Por lo tanto, para la cadena de bits de las hipótesis usaremos tres bits para “Tiempo”, dos para “Humedad”, dos para “Viento” y uno para “Jugar tenis”. Ejemplo: Si (Tiempo = soleado y Humedad=Normal y Viento = fuerte) -> JugarTenis=Si se expresaría como: 100 01 10 1 Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 177.
    Inteligencia Artificial. Como lasolución buscada es la disyunción de tres de estas reglas, las cadenas de bits de nuestras hipótesis estarán formadas por la concatenación de tres cadenas. Ejemplo: 100 01 10 1 + 010 10 10 1 + 100 10 01 1 En cuanto al operador de cruce, elegiremos uno de tipo uniforme con la siguiente máscara: Máscara de cruce = 11000011 11000011 11000011 Para elegir las hipótesis que pasarán a la siguiente generación, o que serán elegidas para sufrir las operaciones de cruce, usaremos una selección probabilística tal que: ver Figura 1 A la hora de implementar el algoritmo, haremos uso de los siguientes parámetros: r= % población que sufrirá la operación de cruce p= número de hipótesis de la población m= % de individuos (hipótesis) que mutan Durante las iteraciones del algoritmo: a) (1-r)p pasarán a la siguiente generación (Ps) intactos b) (r*p)/2 parejas de hipótesis realizarán la operación de cruce c) Y el m porciento de la “nueva” población sufrirán mutaciones. Este m porciento se elige con una probabilidad uniforme. Función Fitness (función de evaluación) Dispondremos de una base de datos de entrenamiento, compuesta por cadenas de 7 bits tal que nos indique que condiciones habrán de darse para jugar o no al tenis. Ejemplo: 100 01 10 1 = (Tiempo = soleado y Humedad=Normal) -> Si En nuestro ejemplo, el número de combinaciones posible es 3x2x2=12 (lo cual no es mucho y nos permite tener una muestra de entrenamiento completa). El objetivo de la función es el de comprobar el porcentaje de reglas de entrenamiento que nuestra hipótesis es capaz de clasificar correctamente para, de esta forma, dotar a cada individuo de un valor numérico indicativo de su precisión (ajuste al modelo buscado). Nuestra hipótesis (individuo) se puede representar en tres partes (A,B y C) donde Z es el bit que indica si se juega o no al tenis en cada caso. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 178.
    Inteligencia Artificial. A B C x x x x x x x x x x x x x x x x x x x x x x x x z z z Nuestra función de evaluación tomará una hipótesis y la procesará con todo el conjunto de entrenamiento. Una cadena de entrenamiento se representa de la siguiente forma (donde R es el BIT que indica si se juega o no al tenis): Entrenamiento x x x x x x x x Data (7 bits) R Esta cadena de entrenamiento se compara con cada una de las partes de la hipótesis para ver si alguna de las tres la clasifica correctamente. Para saber si una parte clasifica bien una regla de entrenamiento procederemos de la siguiente forma: Si R=1 entonces Si ( (Entrenamiento AND A) = Entrenamiento) devolver SI Sino devolver NO Si R=0 entonces Si ( (Data AND A) = Data) Si R=Z devolver SI Sino devolver NO Sino devolver NO Si se ha devuelto SI, procedemos con el siguiente dato de entrenamiento. Si se ha devuelto NO, evaluamos la siguiente parte del individuo (B y después C). Para cada individuo, la función de evaluación realiza esta tarea con todos los datos de entrenamiento, devolviendo un número entre 0 y 1 que indique el porcentaje de clasificaciones correctas de la hipótesis actual (0% a 100%). Así pues, cada individuo estará asociado a un valor numérico que usará posteriormente la función de selección. Función AG (Fitness,Umbral,p,r,m) { Inicializar población P. Para cada hipótesis en P, calcular Fitness. Mientras que max(Fitness) < Umbral hacer Seleccionar (1-r)p individuos de P que pasan a Ps. Elegir (r*p)/2 parejas de P y aplicarles operadores de cruce. Añadir los hijos a Ps. Elegir m porciento sobre Ps y aplicar mutación. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.
  • 179.
    Inteligencia Artificial. P <-Ps Para cada hipótesis en P, calcular Fitness. Fin mientras Devolver la hipótesis con mayor fitness. } En nuestro caso el Umbral será 1 (100% de clasificaciones correctas) ya que disponemos en la base de entrenamiento de todas las combinaciones posibles (algo que no ocurrirá en problemas reales y no de juguete, como es éste) Nota: Se trata de un ejemplo sencillo en el que una determinada persona juega al tenis siempre y cuando se cumplan unas determindas condiciones atmosféricas. CONCLUSIONES Como hemos podido observar, la principal ventaja de los algoritmos genéticos radica en su sencillez. Se requiere poca información sobre el espacio de búsqueda ya que se trabaja sobre un conjunto de soluciones o parámetros codificados (hipótesis o individuos). Se busca una solución por aproximación de la población, en lugar de una aproximación punto a punto. Con un control adecuado podemos mejorar la aptitud promedio de la población, obteniendo nuevos y mejores individuos y, por lo tanto, mejores soluciones. Se consigue un equilibrio entre la eficacia y la eficiencia. Este equilibrio es configurable mediante los parámetros y operaciones usados en el algoritmo. Así, por ejemplo, bajando el valor del umbral conseguiremos una rápida solución a cambio de perder en “calidad”. Si aumentamos dicho valor, tendremos una mejor solución a cambio de un mayor tiempo consumido en la búsqueda. Es decir, obtenemos una buena relación entre la calidad de la solución y el costo. Quizás el punto más delicado de todo se encuentra en la definición de la función de evaluación. Al igual que en el caso de la heurística, de su eficacia depende el obtener buenos resultados. El resto del proceso es siempre el mismo para todos los casos. La programación mediante algoritmos genéticos suponen un nuevo enfoque que permite abarcar todas aquellas áreas de aplicación donde no sepamos como resolver un problema, pero si seamos conscientes de que soluciones son buenas y cuales son malas. Desde aplicaciones evidentes, como la biología o la medicina, hasta otros campos como la industria (clasificación de piezas en cadenas de montaje). Los algoritmos genéticos poseen un importante papel en aplicaciones de búsqueda y optimización, pero desde nuestro punto de vista, es en el aprendizaje automático donde encuentra un estupendo marco de trabajo. La capacidad que poseen para favorecer a los individuos que explican bien los ejemplos, a costa de los que no lo hacen, consigue una nueva generación con mejores reglas y, por lo tanto el sistema será capaz de ir aprendiendo a conseguir mejores resultados. Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.