You are on page 1of 119

Inteligencia Artificial Compilado por Ing.

Irving Gngora
CONTENIDO
Unidad I: Introduccin a la Inteligencia Artificial
1.1 Introduccin a la Inteligencia Artificial
1.2 Inteligencia, Cerebro Humano y el Conocimiento
1.3 Qu es Inteligencia Artificial? Definiciones.
1.4 Historia de la Inteligencia Artificial
1.5 Inteligencia Artificial y los Modelos Computacionales
Computacin de IA
Diferencias con un programa convencional de cmputo.
1.5 Problemas y Tcnicas de la Inteligencia Artificial
1.6 Estado del Arte de la Inteligencia Artificial (Aplicaciones y Tendencias)
Unidad II: Formas de Representacin del Conocimiento
2.1 Definicin
Representaciones y Correspondencia
2.2 Clasificacin de las Formas de Representacin del Conocimiento
2.2.1 Declarativas
Razonamiento Lgico
Tipos Bsicos de Razonamientos Lgicos
Razonamiento Deductivo:
Razonamiento Inductivo.
2.2.1.1 Lgica Proposicional
2.2.1.2 Lgica de Predicados (Lgica de Primer Orden, Clculo de Predicados)
2.2.1.3 Redes Semnticas (RS)
2.2.1.4 Frames (Marcos o Armazones)
Ejemplo de Ranura:
2.2.1.5 Guiones (SCRIPTS)
2.2.2 Procedurales
2.2.2.1 Strips (Sistemas de Planificacin)
2.2.2.2 Reglas de Produccin
Partes de un Sistema Basado en Reglas:
Ejemplo de Aplicacin de las Reglas de Produccin:
2.3 Representacin con Incertidumbre
Lgicas Modales y los Posibles Mundos
2.4 Ejercicios Propuestos
Unidad III: Mtodos de Solucin de Problemas
3.1 Introduccin
3.2 Como Solucionar el Problema
3.2.1 Definicin del Problema
3.2.1.1 Espacio de Bsqueda
3.2.1.2 Tipos de Espacio de Espacios de Bsqueda
3.2.1.3 Representacin del Espacio de Bsqueda
3.2.2 Anlisis de Problema
3.2.2.1 Tratar de Descomponer el Problema
3.2.2.2 Considerar si se Puede Ignorar o Deshacer Pasos Para la Solucin
3.2.2.3 Se Puede Predecir el Universo del Problema?
3.2.2.4 La Mejor Solucin o Cualquier Solucin Para el Problema?
3.2.2.5 Es Consistente el Conocimiento Disponible Para Resolver el Problema?
3.2.2.6 El Papel que Juega el Conocimiento
3.2.2.7 Considerar si se Necesita la Intervencin de Una Persona
3.2.3 Aplicar la Mejor Tcnica de IA Para Resolver el Problema
3.3 Mtodos de Bsqueda Ciega
3.3.1 Primero a lo Ancho
3.3.2 Primero en Profundidad
3.2.3 Bsqueda en Arboles AND/OR (Y/O)
3.3.4 Encadenamiento Hacia delante (Forward Chaining enfoque guiado por datos)
3.3.5 Encadenamiento Hacia Atrs (Backward Chaining enfoque guiado por objetivos)
Ejemplo de Bsqueda: Mundo de los Bloques
3.4 Bsqueda Heurstica
3.4.1 Definicin de Heurstica

Pgina 1 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


3.4.2 Bsqueda por el Incremento Mayor (Hill Climbing)
3.4.3 Bsqueda por el Mejor Nodo (Best First Search)
3.3.4 Bsqueda Heurstica en Arboles AND/OR (AO*)
3.4 Ejercicios Propuestos
Unidad IV: Sistemas Basados en el Conocimiento (Sistemas Expertos)
4.1 Definicin de Sistema Experto
4.2 La Base de Conocimiento
4.3 La Mquina de Inferencia
4.4 Experticidad Humana y Artificial
4.5 Programas Convencionales vs Sistemas Expertos
4.6 Requerimientos Para el Uso de los Sistemas Expertos
4.7 Aplicaciones de los Sistemas Expertos
4.8 Desarrollo de un Sistema Experto
4.8.1 Etapas del Desarrollo
4.8.2 Adquisicin del Conocimiento
4.8.3 Estados en el Desarrollo de un Sistema Experto
4.9 Tratamiento de la Incertidumbre
4.9.1 Fuentes de la Incertidumbre
4.9.2 Representacin de la Incertidumbre
Unidad V: Programacin Lgica y Conchas Expertas (Expert Shell)
5.1 Introduccin al PROLOG
5.2 Secciones de un Programa en PROLOG
DOMAINS
PREDICATES
CLAUSES
GOAL
CONSTANTS
5.3 El lenguaje y programacin en PROLOG
5.4 Repeticin y Recursin
Retroceso Revisitado
Ejercicio
5.5 Sistemas Expertos Programados con PROLOG
5.6 Introduccin a ESTA
5.6.1 Usando un Sistema de Concha Experta
5.6.2 Representacin del Conocimiento
5.6.2.1 Comentarios
5.6.2.2 Titulo
5.6.2.3 Secciones
5.6.2.4 Parmetros
5.6.2.5 Ejercicio: Identificacin de un Invertebrado

Unidad I: Introduccin a la Inteligencia Artificial


Objetivos:
Definir en forma clara y explicita en que consiste la Inteligencia Artificial.
Explicar las preguntas mas frecuentes que se generan al aplicar la Inteligencia
Artificial.
Distinguir las aplicaciones de Inteligencia Artificial con otras reas de aplicacin
de la informtica.

1.1 Introduccin a la Inteligencia Artificial

Pgina 2 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


La inteligencia artificial comenz como el resultado de la investigacin en Psicologa
cognitiva y lgica matemtica. Es una combinacin de la ciencia del computador,
fisiologa y filosofa.
Definiremos algunos trminos que se usarn en el desarrollo de la clase:
Cognicin: Conocimientos, accin y efecto de conocer. Sicologa: Conjunto de
estructuras y actividades sicolgicas cuya funcin es el conocimiento, por oposicin a
los dominios de la efectividad.
Cognoscitivos: Dcese de lo que es capaz de conocer.
Inteligencia: Facultad de entender, de comprender. Sicologa: aptitud variable con los
individuos y las especies para resolver todo tipo de problemas.

Inteligencia prctica: La que se presenta en algunos animales.

Factores que inciden en la inteligencia (Tomado de Internet)

1.2 Inteligencia, Cerebro Humano y el Conocimiento


El cerebro percibe, comprende, predice y manipula un mundo de gran tamao y
complejidad. El cerebro por ser la materia ms altamente organizada, tiene la propiedad
de reflejar el mundo objetivo. Precisamente, ese reflejo del mundo objetivo lo que
constituye el conocimiento humano.

Pgina 3 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

La forma ms elemental de conocimiento son las sensaciones. Por contemplacin


sensorial debe considerarse la va que nos une con el mundo de las cosas., de sus
propiedades y relaciones, condicionada por la prctica precedente., el lenguaje, etc.
Las fuentes de las sensaciones radican en los objetos que se hallan fuera de nosotros. A
travs de los analizadores percibimos la sensacin visual, auditiva, olfativa, gustativa,
tctil. Sin embargo, el hombre percibe el objeto en su totalidad por medio de la
percepcin.
La sensacin es la imagen de las caractersticas aisladas del objeto, la percepcin
integra varios aspectos del objeto en su interaccin, es la integracin del sistema de
sensaciones. No se debe entender la percepcin como la suma de distintas sensaciones,
sino como las sensaciones de acuerdo a una estructura.
Tanto la sensacin como la percepcin, necesitan de la influencia directa del objeto
sobre nuestros rganos sensoriales. Un momento algo superior del conocimiento
corresponde a las representaciones donde el hombre reproduce el objeto en su cerebro
sin su presencia. El hombre posee un almacn de representaciones en su cerebro, las
cuales se han formado en el curso en el curso de la actividad prctica.

Las sensaciones, percepciones y representaciones son formas primarias o elementales


del conocimiento, conforman el nivel sensorial. A este nivel sensorial no se revela la
esencia de los objetos y fenmenos, a la cognicin sensorial se aade la actividad del
pensamiento abstracto.
La razn humana es quien nos permite penetrar en la esencia de las cosas, las relaciones
entre ellas, descubrir lo singular, lo comn, lo universal. Esta razn humana, a travs
de procesos dialcticos, realizados a partir de las representaciones, elabora conceptos,
juicios y conclusiones, que constituyen las formas superiores del conocimiento. El paso
de lo sensorial a lo racional, es un salto dialctico. Las sensaciones y percepciones
son propias del hombre y de los animales, y constituye un salto cualitativo el paso del
conocimiento sensorial al abstracto, que es propio exclusivamente del hombre.
Un paso fundamentalmente inherente de la teora del conocimiento, es la prctica. La
prctica constituye la fuente del conocimiento, el conocimiento es el objetivo de la
prctica y, al mismo tiempo, la prctica es la esfera de aplicacin del conocimiento.

Pgina 4 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


El hombre asimila los conocimientos mediante los distintos tipos de percepcin, los
cuales sirven de base al proceso del pensamiento que culmina con la fijacin de los
conocimientos adquiridos en la conciencia. El proceso de asimilacin parte del contacto
con el objeto de estudio o su representacin y en el tiene lugar una actividad analticasinttica, que garantiza la calidad de la percepcin.
La consideracin de que el conocimiento comienza en el plano sensorial y se eleva
al plano racional, nos lleva en el proceso de enseanza a destacar la importancia de
proporcionar a los alumnos representaciones del objeto o fenmeno de estudio. Para
conocer los objetos y fenmenos ante todo, debemos observarlos en su conjunto
y describirlos, para despus, explicarlos teniendo en cuenta la interrelacin de
sus distintas partes y de su estructura como un todo, para formular las leyes de su
existencia.
Es necesario exponer que todo conocimiento terico tiene sus races en los objetos
y fenmenos de la realidad, de la misma manera que la experiencia, es decir, el
conocimiento sensorial considerado aisladamente sin su conexin con lo terico, no nos
lleva a la esencia del fenmeno.

Discuta: Los animales no son inteligentes solo hacen lo que sus genes les indican. Es
esta ultima afirmacin verdadera e implica la primera?

Pgina 5 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

1.3 Qu es Inteligencia Artificial? Definiciones.


Alan Turing expresa que:
Si

durante el intercambio entre una computadora


y el usuario este ltimo cree que est intercambiado
con otro humano, entonces se dice que el programa es
inteligente
El test de Turing consiste en:

El interrogador formula un conjunto de preguntas que deben ser respondidas por


una mquina y por un ser humano.
Si el interrogador no puede diferenciar al humano de la mquina, entonces se
dice que la mquina es inteligente.

Segn Schildlt:

un programa inteligente es uno que muestra un


comportamiento similar al humano cuando se enfrenta
a un problema. No es necesario que el programa resuelva
realmente el problema de la misma forma que el hombre.
Para Forsyth:

La IA se relaciona con problemas los cuales han


escapado de una caracterizacin matemtica
Elaine Rich:
la IA es el estudio de cmo lograr que las computadoras hagan cosas que por el
momento, las personas hacen mejor.
Una computadora encuentra las races de una ecuacin mucho mas rpido y con
mayor exactitud que un hombre; sin embargo, el hombre reconoce mucho mejor
un conjunto de caracteres.

1.4 Historia de la Inteligencia Artificial

Pgina 6 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Como rama de la Ciencia de la Computacin, la I.A. ha evolucionado tanto en la
formalizacin, como en la implementacin de sus tcnicas. Un resumen cronolgico de
su desarrollo puede ser el siguiente:
1936 - Turing formaliza el concepto de computadora de propsito general.
1945 - Von Neumann concibe el diseo de programa almacenado para compu-tadoras
digitales.
1946 - Aparece ENIAC, primera computadora digital de propsito general de-dicada.
1950 - Turing describe su test para conocer si una mquina es inteligen-te.
1955 - Bernstein desarrolla el primer programa para jugar ajedrez.
1956 - McCarthy organiza la conferencia de Dartmouth e introduce el trmino
Inteligencia Artificial.
Newell, Shaw y Simon desarrollan el Logic Theorist, primer programa de Inteligencia
Artificial exitoso.
1957 - McCarthy desarrolla el LISP (primer lenguaje de Inteligencia Arti-ficial).
Newell, Shaw y Simon comienzan los trabajos para encontrar un solucionador general
de problemas (GPS).
Chomsky introduce transformaciones gramaticales para modelar la sintaxis de los
lenguajes naturales.
1965 - Feigenbaum desarrolla DENDRAL (primer Sistema Experto).
Dreyfus publica el artculo Alchemy and Artificial Intelligence.
1966 - Quillian desarrolla las redes semnticas.
1967 - Greenblatt desarrolla MacHack, el primer programa de ajedrez profesionalmente competente.
1970 - Aparece Learning Structural Descriptions from Examples de Winston
(primer artculo que se dedic al Aprendizaje Automatizado).
Colmerauer desarrolla el lenguaje de programacin PROLOG.
1972 - Es desarrollado MYCIN, primer Sistema Experto en utilizar reglas de
produccin.
Winograd completa el SHRDLU, un programa para el procesamiento de lenguaje
natural.
1974 - En su artculo A framework for representing knowledge Minsky de-fine los
marcos.
1975 - El MIT inventa la mquina LISP, primera especializada en I.A.
1982 - Aparece una teora sobre visin desarrollada por Marr.
Comienzan las investigaciones de los japoneses y la Quinta genera-cin.
1986 - Se introduce la primera Mquina Conexionista por Thinking Machines
Corporation.
Aparece la primera microcomputadora de 32 bits.
1987 - Primera Conferencia Internacional sobre Redes Neuronales Artificia-les.
1988 - Primera computadora ajedrecista Hitech.
El desarrollo de la I.A. pudiera enmarcarse en las siguientes etapas:
Oscura (dcada del 50) : Surgen la Redes Neuronales Artificiales (R.N.A.).
De la razn (dcada del 60) : Desarrollo de la lgica y los demostrado-res de
teoremas.
Romntica (dcada del 70) : Surgimiento de los Sistemas Expertos.
Ilustracin (dcada del 80) : Desarrollo del aprendizaje automatizado o
extraccin automatizada del conocimiento.
Renacimiento gtico (dcada del 90) : Resurgimiento de las R.N.A.

Pgina 7 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Los trabajos iniciales dentro del campo de la I.A. estuvieron dirigidos a emular el
proceso del pensamiento humano. Resultados relevantes fueron el intento de Newell,
Shaw y Simon de crear un Solucionador General de Problemas (GPS), as como el
xito alcanzado a fines de la dcada de los 50 e inicios de los aos 60 por Rosemblatt
al crear los Perceptrons. En ambos casos, otros autores se encargaron de demostrar las
limitaciones de ambos intentos.
En 1973 Gdel demostr que era imposible la matematizacin del proceso de
razonamiento lo cual anulaba la posibilidad de crear, al menos en el presente, un
GPS como el pensado por Newell, Shaw y Simon. Minsky y Papert en los aos 60
mostraron las serias limitaciones del funcionamiento de un perceptron simple a travs
del problema clsico del XOR. Es por esto que a esta etapa se le denomin oscura.
Sin embargo, en Amrica los trabajos en I.A. siguieron otra direccin. Se planteaba
que, si bien no exista una teora universal de la inteligencia, s era posible crear
inteligencias especializadas. En esta poca se comenz a dar ms importancia al papel
del conocimiento que a los mtodos potentes de solucin de problemas, todo lo cual
llev a la reactivacin de los trabajos en este campo.
La I.A. cobr vigor en la dcada de los 80, debido al xito alcanzado por los Sistemas
Expertos, al proyecto japons de Quinta Generacin, el cual origin un gran avance
tecnolgico y al xito del uso de tcnicas de I.A. en problemas concretos como el
reconocimiento de patrones, la robtica, la visin, etc.
El desarrollo de la I.A. ha seguido dos lneas principales: la simblica y la subsimblica.
La primera se caracteriza por desarrollar modelos que describen, formalizan e
implementan aspectos sistematizables del conocimiento en forma explcita (Sistemas
Expertos, Razonamiento basado en casos, etc). La otra se basa en los enfoques no
representacionales de la I.A. (R.N.A., algoritmos genticos y sistemas difusos). El
clculo subsimblico se basa en el uso de representaciones analgicas, el conocimiento
se reparte entre diversas componentes del sistema que estn enlazadas y que pueden
funcionar en paralelo.
Finalmente es necesario mencionar uno de los problemas fundamentales que enfrenta
actualmente la I.A.: el problema del aprendizaje automatizado, para el que no existe
actualmente una solucin eficiente.

1.5 Inteligencia Artificial y los Modelos Computacionales


El trmino de Inteligencia Artificial, es utilizado para describir el objetivo de lograr
que los programas que se ejecuten en computadoras, permitan reproducir conductas
humanas inteligentes, tales como resolucin de problemas, comunicacin en lenguaje
natural y tomas de decisiones creativas.
La inteligencia artificial es una rama de la ciencia informtica dedicada a la creacin
tanto de software como de hardware que imitan a la mente humana. En el estado
actual de desarrollo de la IA existen tcnicas para tratar de solucionar problemas
complejos mediante el empleo de procesos de bsquedas, formas de representacin del
conocimiento y aprendizaje. Por sus caractersticas, los mtodos utilizados se dividen en
dos grupos, los cuales definen los dos enfoques de desarrollo de la IA. La Inteligencia

Pgina 8 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Artificial Simblica (IAS), y la Inteligencia Artificial Conexionista. Usualmente la
IAS se refiere como IA simplemente, mientras que la IAC, se identifica con las Redes
Neurales Artificiales.
El acierto principal de la IA es el de hacer a la computadora lo ms inteligente posible,
crendose programas que permitan modelar algunas de las funciones del cerebro
humano en aplicaciones seleccionadas. La idea no es reemplazar lo que hace el hombre,
pero nos suministran una poderosa herramienta para auxiliarnos en nuestro trabajo.
La inteligencia es la capacidad humana de adquirir conocimientos y aplicarlos, el
recurso de la capacidad de pensar y razonar. En un grado limitado, la inteligencia
artificial permite a las computadoras aceptar conocimiento desde la entrada humana,
entonces utilizarlos a travs de pensamiento simulado y procesos de razonamiento para
resolver los problemas. Aunque una computadora no tiene experiencia, o estudio y
aprendizaje como lo tiene la mente humana, ella puede adquirir conocimientos dados
a ella por los humanos expertos. Los conocimientos consisten de hechos, conceptos,
teoras, procedimientos y relaciones. El conocimiento es tambin informacin que ha
sido organizada y analizada para hacerse comprensible y aplicable. Muchas bases de
conocimiento estn limitadas a aquellos enfoques tpicos hacia alguna rea, objeto
especfico o dominio.
Con una base de conocimiento y la habilidad de desprender inferencia (deducciones),
a partir de ella, la computadora puede hacer un uso prctico como es la solucin de un
problema y tomar una decisin (ver ilustracin 2).
En un programa de cmputo convencional le decimos mediante un algoritmo como
resolver un problema a la computadora, mientras en la IA le decimos a la computadora
cual es el problema, pero no como resolverlo. Comnmente a la computadora se le
dan los datos y un programa paso a paso que especifica como el dato es utilizado para
alcanzar la respuesta. En las computadoras con IA, le son dados conocimientos acerca
del rea objeto de los problemas, ms alguna capacidad de hacer inferencias (deducir).

Pgina 9 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Hay un hecho, y es que los programas de IA son implementados por tcnicas de


bsquedas y coincidencia de patrones. Le damos a la computadora una serie de
informacin y una gua para utilizarla.
El sistema experto es un programa de IA que incorpora una base de conocimiento, una
base de datos y un sistema de inferencia. Este es un software altamente especializado,
que tiene la intencin de duplicar la funcin de un experto en algn campo de la
experiencia. El programa acta como un consultante inteligente o asesor de un dominio
de inters, capturando el conocimiento de uno o ms expertos.

Computacin de IA
El programa de IA no est en un proceso algortmico, en su lugar, est basado en
representacin simblica y manipulacin. En la IA, un smbolo es una letra, palabra o
nmero que es utilizado para representar objetos, proceso y sus relaciones. Los objetos
pueden ser personas, cosas, ideas, conceptos, eventos o sentencias de hechos. Mediante
la utilizacin de smbolos es posible crear bases de conocimiento que caracterizan
hechos (estados), conceptos y relaciones entre ellos. Entonces son utilizados procesos
variados para manipular los smbolos y resolver el problema.
Los procesos son cualitativos en lugar de cuantitativos como es un algoritmo de
cmputo convencional. Virtualmente todas las computadoras son algortmicas en
sus operaciones, basados en el concepto de mquina secuencial sincrnica de Von
Neumann. La cuestin consiste en como es implementado el procesamiento simblico
en una mquina algortmica. El programa algortmico est escrito de tal forma como
para permitir representacin y manipulacin simblica.
Una vez que la base de conocimiento de hechos y su asociacin lgica este construida,
algn medio de utilizacin para resolver el problema debe de ser desarrollado,
para inferir con esta base de conocimiento, las tcnicas bsicas son la bsqueda y
coincidencia de patrones. Dando alguna informacin inicial, el programa de IA busca en
la base de conocimiento inquiriendo por una condicin especfica del patrn. Ella busca
una coincidencia que satisfaga los criterios impuestos para resolver el problema. La
computadora literalmente efecta una bsqueda hasta que ella puede encontrar la mejor
respuesta que puede encontrar basada en el conocimiento que ella tiene.
Mientras que la solucin del problema que se lleva a cabo no es un algoritmo, por
supuesto, son utilizados algoritmos para implementar el proceso de bsqueda (ver
ilustracin 3).
La mayora de los sistemas de IA actualmente incluyen dos partes bsicas: una base
de conocimiento y un mecanismo de inferencia. La base de conocimiento contiene los
hechos y relaciones entre los objetos en el dominio seleccionado y constituye la fuente
de inteligencia del sistema, la que es utilizada por el mecanismo de inferencia para
arribar a ciertas conclusiones.

Pgina 10 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Diferencias con un programa convencional de cmputo.


En un programa de convencional de cmputo, se le dice a la computadora que resuelva
el problema mediante en algoritmo. Entran los datos y un programa paso a paso llega a
la solucin del problema especfico.
En la IA se le da a la computadora conocimientos del rea objeto del problema,
ms la capacidad de deducir (inferir), en un proceso totalmente cualitativo basado en la
representacin y manipulacin simblica. Dando una informacin inicial, el programa
de IA busca en la base del conocimiento inquiriendo por una condicin especfica del
patrn. Ella busca una coincidencia que satisfaga los criterios los criterios impuestos
para resolver el problema. La computadora literalmente efecta una bsqueda, hasta que
ella pueda encontrar la mejor respuesta que pueda encontrar basada en el conocimiento
que ella tiene.
Partiendo del hecho cmo funciona un programa de inteligencia artificial, se llega
a la conclusin de que las computadoras no son realmente tan inteligentes. Se da a
la computadora un lote de informacin y alguna gua para utilizarla. Usando esta
informacin y aquellos criterios, la computadora entrega una solucin.
Aunque la computadora no es realmente inteligente, ciertamente parece que piensa y
frecuentemente entrega una solucin satisfactoria.
Espectro de Inteligencia
En el espectro de la inteligencia, se muestran los grados de inteligencia universal de
acuerdo al juicio de las pruebas de Turing, realizados por el matemtico Ingls Alan
Turing, pionero de la IA.

1.5 Problemas y Tcnicas de la Inteligencia Artificial


Hay un hecho, y es que los programas de IA son implementados por tcnicas de
bsquedas y coincidencia de patrones. Le damos a la computadora una serie de
informacin y una gua para utilizarla.

Pgina 11 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Para la resolucin de problemas de I.A. se requieren tcnicas que difieren de las
convencionales. Los programas de I.A. requieren de conocimiento. En compensacin
por esta arrolladora ventaja, el conocimiento tiene algunas propiedades menos deseables
como son:
Ser voluminoso.
Ser difcil de caracterizar y modelar con presicin.
Estar cambiando constantemente.
Una tcnica de I.A. es un mtodo para explotar el conocimiento, que debera ser
representado de tal manera que:
Capte generalizaciones: No es una Base de Datos. No debe ser necesario

representar cada situacin individual, sino que se agrupen las situaciones que
compartan propiedades importantes. Si no tiene esta caracterstica se necesitara
ms espacio del disponible y ms tiempo del que tenemos para mantenerlo
actualizado.
Pueda ser comprendido por los especialistas que lo proporcionan.
Deba ser modificable fcilmente.
Pueda ser usado en muchas situaciones diversas, incluso si no es total-mente
preciso o completo.
Pueda ser usado para extenderse a s mismo.

Los lenguajes bsicos para la implementacin de las tcnicas de I.A. son LISP y
PROLOG por las facilidades que brindan para el tratamiento simblico, entre otras
razones. LISP permite disear las estructuras de datos y los algoritmos que los
manejan de una manera muy eficiente. PROLOG, a su vez, tiene muy buen poder
expresivo, permitiendo una formulacin bastante natural y directa en la solucin de
muchos problemas. En esto, los lenguajes procedurales son muy malos. No se debe
confundir las tcnicas de I.A. con software de I.A. Se deben diferenciar dos aspectos
fundamentales:

Software para el desarrollo de aplicaciones con tcnicas de I.A. Ejemplo: el shell


de un sistema experto, mquina de inferencia ms interfase con el usuario, puede
ser escrito en cualquier otro lenguaje. De hecho, el LISP y el PROLOG son
malos para implementar shells debido a su eficiencia computacional.
Aplicaciones en el campo de I.A. Ejemplos: Sistemas Expertos, traductores,
demostradores de teoremas especficos, etc. Para los traductores es mejor usar
LISP y para los de-mostradores de teoremas, es mejor el PROLOG.

Es posible resolver problemas de I.A. sin usar tcnicas de I.A., aunque las soluciones no
son muy buenas. A su vez, es posible aplicar tcnicas de I.A. a problemas que no son de
I.A.

1.6 Estado del Arte de la Inteligencia Artificial (Aplicaciones y


Tendencias)
Para entender la importancia de la inteligencia artificial, hay que comprender la IA ha
irrumpido en casi todos los campos de la ciencia, hay que ver cual es el estado del arte
de esta manera veamos los campos de aplicacin de la IA.

Pgina 12 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Solucin de problemas de tipo general: La IA generalmente es aplicable a un tipo
de usuario aunque un programa puede tener la habilidad de ser aplicado en un rango
amplio de sujetos.
Sistemas Expertos: Un sistema experto permite que el conocimiento de uno o
ms expertos sean capturado y almacenados en una computadora. Entonces estos
conocimientos podrn ser utilizados por cualquiera que as lo requiera.
Procesamiento de Lenguaje Natural (NPL): Estos programas utilizan las tcnicas de
inteligencia artificial para permitir que la computadora comprenda y genere el lenguaje
natural. Un proceso avanzado de procesamiento de voz utiliza las tcnicas de IA.
Visin en Computadora: Utilizacin de la computadora para analizar y evaluar la
informacin visual. Las tcnicas de IA permiten a la computadora examinar una imagen
o escena de la vida real para identificar objetos particulares, formas o patrones.
Robtica: La IA tambin es utilizada en el campo de la robtica. Ese es un campo en
que los ingenieros se dedican a la duplicidad de las capacidades de los seres humanos,
un natural complemento de la IA que intenten simular las habilidades mentales
humanas.
Educacin: Se utilizan tutores inteligentes que se adapten al estudiante para el proceso
de aprendizaje.
Adems se ha llegado a crear nuevas disciplinas como son:
Automtica + Mecnica + Computacin + IA
Biologa Molecular + Computacin + IA

Mecatrnica

Bioinformtica.

BIOINFORMATICA
Es la ciencia que utiliza una combinacin de las tecnologas de la computacin, las
ciencias de la informacin, la biologa terica y el conocimiento biolgico, para
coleccionar, almacenar, analizar, relacionar y modelar datos biolgicos.
Significa un Cambio de paradigma: de Buscar datos e Interpretar datos

La ventaja competitiva cambia de la capacidad de generar datos a la capacidad


de interpretarlos.
Enormes Bases de datos de secuencia de genes y protenas se duplican cada 14
meses.
A la economa tecnolgica la reemplazar la Bioeconoma.
Problemas genricos:
Prediccin de estructuras y funciones.
Encontrar relaciones entre genes de diferentes especies y entre genes y
determinadas enfermedades.
Descubrir patrones de Genes y Protenas.
Pgina 13 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Unidad II: Formas de Representacin del Conocimiento


Objetivos:
Explicar las diferentes formas de representacin del conocimiento existentes en
Inteligencia Artificial.
Aplicar adecuadamente las formas de representacin del conocimiento a un
problema especfico.

2.1 Definicin
Llamamos Forma de Representacin del Conocimiento (F.R.C.) a la notacin usada
para representar el mismo, es decir la manera en que se almacena.
El objetivo de la representacin del conocimiento es expresar ste en forma manejable
por la computadora. Un lenguaje para la representacin del conocimiento consta de dos
aspectos:
Sintaxis: Explica las posibles configuraciones mediante las cuales se forman las

oraciones.
Pgina 14 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Semntica: Determina los hechos del mundo a los que hacen alusin las oraciones.

Mediante la semntica, cada oracin expresa algo relacionado con el mundo.


Un componente clave de cualquier aplicacin de la IA es el conocimiento considerado
como la comprensin de alguna rea especifica que se obtiene a travs de la experiencia
o educacin. El conocimiento esta compuesto de hechos, conceptos, teoras,
procedimientos y relaciones. El conocimiento es tambin informacin que ha sido
organizada y analizada para hacerla ms comprensible y aplicable en la solucin de
problemas o en la toma de decisiones.
Se puede asegurar que el proceso de captacin y organizacin del conocimiento,
denominado Ingeniera del Conocimiento, es la fase ms difcil y que consume ms
tiempo en la realizacin de cualquier software que utilice tcnicas de IA. Para poder
almacenar el conocimiento es necesario lograr su representacin, lo cual no es ms
que la estructuracin del conocimiento relacionado con un problema, en una forma
que conduzca a que el problema sea ms fcil de resolver. La cuestin bsica de la
representacin del conocimiento es el desarrollo de una notacin suficientemente
precisa con la cual representar el mismo. A esa notacin se le llama Forma de
Representacin del Conocimiento (FRC).
Las caractersticas comunes de los esquemas de representacin del conocimiento son
dos: una es que son programados con un lenguaje de cmputo existente y almacenado
en memoria, y la otra es que sean diseados de forma tal que los hechos y otros
conocimientos contenidos en ella puedan ser utilizados en razonamiento. Esto es, la
base de conocimiento que contiene una estructura de datos que puede ser manipulada
por un sistema de inferencia. La otra mayor parte del programa de IA son los sistemas
de inferencia que utilizan tcnicas de bsqueda y coincidencia de patrones sobre la base
de conocimiento, para responder preguntas, sacar conclusiones y efectuar otras formas
de una funcin inteligente.

Representaciones y Correspondencia
Un componente clave de cualquier aplicacin de IA es el conocimiento, considerado
como la comprensin de algn rea especfica que se obtiene a travs de la experiencia
o la educacin.
Para resolver los problemas complejos a los que se enfrenta la IA, es necesario disponer
tanto de una cantidad de conocimiento como de una serie mecanismos que permitan
manipularlo con el fin de obtener soluciones a nuevos problemas.
Hay una caracterstica que est presente en todas las representaciones, el hecho de que
estamos manejando dos tipos de entidades.
Hechos: Verdades en un cierto mundo. Es aquello que queremos representar.
Representaciones: de los hechos en un determinado formalismo. Estas son las
entidades que realmente seremos capaces de manipular.
Estas dos entidades se pueden clasificar en dos niveles distintos:

Pgina 15 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


El nivel del conocimiento, donde se describen los hechos.
El nivel simblico, donde se describen los objetos del conocimiento en trminos
simblicos manipulables por programas.

Los enlaces de correspondencia entre las representaciones y los hechos son


denominados las correspondencias de la representacin.
La representacin hacia delante establece una correspondencia entre los hechos y las
representaciones, mientras que la correspondencia inversa se realiza hacia atrs, desde
las representaciones hacia hechos.
Los programas de IA no hacen ms que manipular las representaciones internas de los
hechos que reciben. Estas manipulaciones darn lugar a nuevas estructuras que a su vez
podrn ser interpretadas como representaciones internas de hechos.
En esta figura resulta evidente la importancia de los mecanismos de correspondencia
entre las representaciones.

Las funciones de correspondencia no suelen ser biunvocas, ni funciones, sino


relaciones de muchos a muchos.
Ejemplo:
Hecho

Representacin

Al menos los perros tienen una cola

Todos los perros tienen cola


Todo perro tiene cola

Pgina 16 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Pueden representar el mismo hecho de que al menos los perros tienen una cola. Por otra
parte, la primera puede representar todos los perros tiene una cola o bien que cada
perro tiene varias colas. La segunda que todos los perros tienen al menos una cola
o bien que hay una cola comn que todos los perros tienen.

2.2 Clasificacin de las Formas de Representacin del


Conocimiento
Las F.R.C. pueden clasificarse en:
Declarativas: Donde la mayor parte del conocimiento se representa como una coleccin
esttica de hechos junto con un pequeo conjunto de procedimientos generales para
manipularlos. Ejemplos de ellas son:
- Lgica (Proposicional, Clculo de predicados, No Monotnica, etc.).
- Redes semnticas.
- Marcos o armazones.
- Guiones.
Procedurales: Donde la mayor parte del conocimiento se representa como
procedimientos para usarlo.
- Reglas de produccin.
- Strips.

2.2.1 Declarativas
Una representacin declarativa es aquella en la que el conocimiento est especificado,
pero la manera en que dicho conocimiento debe ser utilizado no viene dado. En
el mtodo declarativo se considera que el control de bsqueda del conocimiento
se encuentra completamente separado de las propias reglas. Para utilizar una
representacin declarativa se debe aumentar sta con un programa que especifique lo
que debe hacerse con el conocimiento y de que modo debe hacerse. Es utilizado para
representar hechos y afirmaciones. Por ejemplo, un conjunto de aserciones lgicas, se
puede combinar con un demostrador de teoremas por resolucin para dar lugar a un
programa completo de resolucin de problemas.
Las F.R.C. declarativas tienen las siguientes ventajas:
Cada hecho slo necesita almacenarse una vez, sin importar el nmero de
maneras diferentes en que pueda usarse.
Es fcil aadir nuevos hechos al sistema sin cambiar los otros hechos ni los
procedimientos pequeos.

Razonamiento Lgico
El lenguaje de la lgica es uno de los mecanismos concretos de la representacin del
conocimiento. Quizs sea la RPC ms antigua. Es considerada una subdivisin de la
filosofa. El aspecto ms atractivo del formalismo lgico es que proporciona de una

Pgina 17 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


manera inmediata un mtodo muy potente para la obtencin de nuevo conocimiento a
partir de uno antiguo: la deduccin matemtica.
La regla general para un proceso lgico (ver figura 4), es primero se da la informacin,
se hace la sentencia o se considera la observacin. Esta forma de entrada al proceso
lgico son las premisas. Las premisas son utilizadas por el proceso lgico para crear la
salida que consiste de conclusiones llamadas inferencias. Con este proceso, los hechos
que son conocidos como verdaderos pueden ser usarse para deducir nuevos hechos que
tambin deben ser ciertos.
La prueba como un mtodo riguroso de demostracin de una proposicin que se
cree cierta se puede extender a la deduccin como un medio de obtener respuestas a
preguntas y soluciones a problemas.

Tipos Bsicos de Razonamientos Lgicos


Hay dos tipos bsicos de razonamientos: el deductivo y los inductivos. Ambos son
utilizados por la lgica para realizar inferencias a partir de premisas.

Razonamiento Deductivo:
Cuando la premisa general es utilizada para obtener una inferencia especfica, el
proceso es llamado razonamiento deductivo o deduccin. El razonar va desde un
principio general a una conclusin especfica. El proceso deductivo generalmente
comienza con una declaracin de premisas e inferencias. El proceso deductivo
generalmente consiste en tres partes:

Mayor premisa: Yo no corro cuando la temperatura excede 90.


Menor premisa: Hoy la temperatura es de 93.
Conclusin: Debido a ello, yo no corro hoy.

Para utilizar el razonamiento deductivo, el problema deber ser formateado en esta


forma. Una vez que este formato se logre, la conclusin ser valida si las premisas son
ciertas. Nuevamente, la idea inicial es la de desarrollar un nuevo conocimiento a partir
de un conocimiento dado previamente.

Razonamiento Inductivo.
Pgina 18 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Utiliza un nmero establecido de hechos o premisas con el fin de discurrir alguna


conclusin general.

Premisa: Diodos defectuosos causan que el equipo electrnico falle.


Premisa: Transistores defectuosos causan que el equipo electrnico falle.
Premisa: Circuitos integrados defectuosos causan que el equipo electrnico falle.
Conclusin: Debido a ello, los defectos en los componentes semiconductores
son la mayor causa de que los equipos electrnicos fallen.

Las conclusiones pueden cambiar si se describen nuevos datos. Siempre habr alguna
incertidumbre en la conclusin al menos que todos los hechos posibles estn incluidos
en las premisas, y esto es prcticamente imposible. Como resultado, la salida de un
proceso de razonamiento inductivo contendr siempre alguna medida de incertidumbre.
Sin embargo, esta incertidumbre ser reducida segn ms hechos o premisas sean
usados en el proceso de razonamiento.

2.2.1.1 Lgica Proposicional


Una proposicin no es ms que una sentencia que bien es cierta o es falsa. Esta es una
premisa, la cual puede ser utilizada para derivar nuevas proposiciones o inferencias. Son
utilizadas reglas para determinar la veracidad o falsedad de la nueva proposicin.
En la lgica proposicional se utilizan smbolos tales como letras del alfabeto para
representar las proposiciones, premisas, o conclusiones.
A = El cartero viene de lunes a sbado.
B = Hoy es domingo.
C = El cartero no viene hoy.
Los problemas del mundo real involucran muchas proposiciones interrelacionadas.
Para formular premisas ms complejas, dos o ms proposiciones pueden combinarse
utilizando los operadores lgicos AND, OR, NOT, IMPLICA, o EQUIVALE. Estos
son los mismos que aquellos utilizados en el lgebra Booleana. En efecto, la lgica
proposicional involucra solo las proposiciones verdadero o falso, el lgebra booleana y
todas las tcnicas relacionadas utilizadas en el anlisis, diseo o simplemente circuitos
de lgica binaria pueden ser utilizados en la lgica proposicional.
La sintaxis de la lgica proposicional es bastante sencilla. Los smbolos utilizados
en la lgica proposicional son las constantes lgicas verdadero y falso, smbolos de
proposiciones tales como P y Q, los conectivos lgicos ^, v, <=>, =>, y parntesis (
). Las oraciones se forman combinando los signos anteriores mediante las siguientes
reglas:

Las constantes lgicas verdadero y falso constituyen oraciones en si mismas.


Un smbolo propositivo tal como P o Q es una oracin, por ejemplo (P ^ Q).
Una oracin se forma combinando oraciones ms sencillas con uno de los cinco
conectores lgicos:
^ Conjuncin lgica ( And o y).

Pgina 19 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

V Disyuncin (OR u O).


=> Implicacin. Una oracin como (P ^ Q) => R se conoce como
implicacin (o condicional). Su premisa o antecedente es P ^ Q y su
conclusin o consecuente es R. A las implicaciones tambin se les
conoce como reglas o aseveraciones si-entonces.
<=> Equivalencia.
(NOT o no). Por ejemplo a una oracin como P se le conoce como la
negacin de P.
La semntica de la lgica propositiva es sencilla, se define especificando la
interpretacin de los signos de proposicin y de las constantes y especificando el
significado de los conectores lgicos.
Se han desarrollado lenguajes de programacin simblicos como es el PROLOG; el
cual est diseado a la medida del clculo de predicados y de la operacin fundamental
de la lgica, que es la inferencia. El nombre del lenguaje responde a la etimologa:
Programacin Lgica (PROgramming in LOGic).
La lgica proposicional no es muy til en la IA, porque ella trata con sentencias o
proposiciones completas para determinar si son falsas o verdaderas, resultando pues
limitada para representar el conocimiento real. Consecuentemente, la IA usa la Lgica
de Predicados (denominado tambin Clculo de Predicados, o tambin Lgica de
Primer Orden), que es una forma ms elaborada de la lgica que utiliza los mismos
conceptos y reglas de la lgica proposicional, pero permite separar una sentencia en
sus partes componentes, por lo que se facilita la descripcin de las caractersticas y
aserciones del objeto analizado. La lgica de predicados constituye una FRC que es ms
aplicable a la resolucin de problemas prcticos en una computadora.

2.2.1.2 Lgica de Predicados (Lgica de Primer Orden, Clculo de


Predicados)
Debido a que la lgica proposicional relaciona sentencias completas y que cuando
ellas son verdaderas o falsas, su habilidad para representar el mundo del conocimiento
es limitada. Por lo tanto la IA utiliza la lgica de predicado. Esta es una lgica ms
sofisticada que utiliza todos los mismos conceptos y reglas que la lgica proposicional.
La lgica de predicado permite descomponer una sentencia en partes componentes,
nombradas un objeto, una caracterstica del objeto o alguna afirmacin del objeto. Esta
lgica tambin permite utilizar variable y funciones de variable en una sentencia lgica
simblica.
Objetos: gente, casas, nmeros, teoras, colores, juegos de bisbol, guerras,

siglos..
Relaciones: hermano de, mayor que, dentro de , parte de, de color, sucedi luego
de, es el dueo de
Propiedades: rojo, redondo, de varios pisos, falso, lo mejor.
Funciones: padre de, mejor amigo de, tercer tiempo de, uno ms que.

Ejemplo: Uno mas dos es igual a tres


Objetos: uno, dos, tres, uno mas dos.
Pgina 20 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Relacin: es igual a
Funcin: mas
Una proposicin o premisa se divide en dos partes, los argumentos u objetos y el
predicado (o la afirmacin). Los argumentos son los individuos u objetos que se hacen
con la afirmacin. El predicado es la afirmacin que se hace acerca de ellos. Los dos se
combinan para crear una proposicin.

Sintaxis:
PREDICATE (Individuo [objeto]1, Individuo [objeto]2).
Por ejemplo la proposicin: el carro est en el garaje. Se puede establecer como:

ADENTRO(CARRO,GARAJE)

En el clculo del predicado se pueden utilizar letras por los argumentos:


Proposicin: Juan se parece a Mara.
En forma de variable:
X = Juan
Y = Mara
La proposicin sera:

SE_PARECE(JUAN, MARIA)

Utilizando este sistema es posible formar una base de conocimiento. El conocimiento


expresado en el clculo de predicado puede ser manipulado para generar inferencias:
Juan se parece a Mara.

Pgina 21 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Ramn se parece a Mara.
Juan = X Mara = Y

Ramn = Z

SEPARECE(X,Y) AND NOT SEPARECE(Z,Y) IMPLIES NOT SEPARECE(X,Z)


Esta expresin dice que si Juan se parece a Mara y Ramn no se asemeja a Mara,
entonces Juan no es como Ramn.
Un cuantificador es un smbolo que permite establecer el rango o alcance de las
variables en una expresin lgica. Son utilizados dos cuantificadores bsicos en la
lgica:
Para todo
Hay un, Existe un (existencia)

Ejemplo: Todos los managuas son ciudadanos de Nicaragua.


( X) [managuas(X), ciudadanos Nicaragua(X)]
Algunos carros son rojos.
( X) [carro(X) AND son rojos(X)]

Los cuantificadores son la va exacta para determinar cuando las cosas son ciertas y bajo
que condiciones todas las veces o exactamente algunas de las veces.
En la lgica de predicados podemos representar los hechos del mundo real como
declaraciones escritas como frmulas bien formadas. Veamos un ejemplo.
Sultn es un perro.
perro(Sultn)
Los humanos son hombres o mujeres.
(x) [humano(x) (hombre(x) mujer(x))]
Todos los hombres tienen una madre.
(x) (y) madre(y,x)
Unificacin y LIFTING
La seccin anterior describe cmo se comprenda la lgica de primer orden hasta
principios de 1960. Pero un ojo observador (y ciertamente para los expertos en lgica
de ese tiempo) hubieran notado que el acercamiento a la proposionalizacin es ms
bien ineficiente. Por ejemplo, dada la bsqueda (pregunta) Demonio(x) y la base de
conocimiento en ecuacin, parece perverso generar oraciones como Rey(Ricardo) ^
Avaro(Ricardo) Demonio(Ricardo).
Ciertamente, la inferencia de Demonio(Juan) a partir de las oraciones

Pgina 22 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


x Rey(x) ^ Avaro(x)
Rey(Juan)
Avaro(Juan)

Demonio(x)

Parece obvio para un ser humano. Mostraremos como hacerla completamente obvio
para una computadora
Una regla de inferencia de primer orden
La inferencia de que Juan es demonio trabaja de esta manera: encuentra algn x tal que
x es un rey y x es avaro, y entonces infiere que x es demonio. De manera ms general, si
hay alguna substitucin que haga la premisa de la implicacin idntica a las oraciones
que ya estn en la base del conocimiento, entonces podemos assert (afirmar, declarar)
la conclusin de la implicacin, despus de aplicar . En este caso, la substitucin {x/
Juan) alcanza ese objetivo.
Podemos hacer que el paso de la inferencia haga an ms trabajo. Supongamos que en
ves de saber avaro(Juan), sabemos que todo el mundo es avaro:
y Avaro(y).
Entonces nos gustara an poder concluir que Demonio(Juan), porque sabemos que Juan
es un Rey(nombre) y Juan es avaro (porque todo mundo es avaro). Lo que necesitamos
para que esto trabaje es una substitucin para ambas las variables en la oracin de
implicacin y para las variables en las oraciones a ser igualadas. En este caso, aplicando
la substitucin {x / Juan, y / Juan} a las premisas Rey(x) y Avaro(x) y las oraciones
de la base de conocimiento Rey(Juan) y Avaro(y) las harn idnticas. Por lo tanto,
podemos inferir la conclusin de la implicacin.
Este proceso de inferencia puede ser capturado como una simple regla de inferencia que
llamamos Modus Ponens Generalizado.
El Modus Ponens Generalizado es una versin elevada (lifted) eleva el Modus Ponens
de la lgica proposicional a la lgica de primer orden.
Unificacin
Reglas de inferencia elevadas requieren encontrar substituciones que hacen que
diferentes expresiones lgicas luzcan idnticas. Este proceso es llamado unificacin
y es un componente de todo algoritmo de inferencia de primer orden. El algoritmo de
unificacin toma dos oraciones y retorna un unificador para ellas si existe alguno:
Unificar(p, q) = donde Subst(, p) = Subst(, q) .
Veamos algunos ejemplos de como Unify (unificar) debe comportarse. Supongamos
que tenemos una bsqueda Conoce(Juan, x): a quien conoce Juan? Algunas respuestas
a esta bsqueda se pueden hallar encontrando todas las oraciones en la base de
conocimiento que unifica con Conoce(Juan, x). Veamos los resultados de la unificacin
con cuatro diferentes oraciones en la base de datos
UNIFY (Conoce(Juan, x), Conoce(Juan, Jane)) = {x/Jane}
UNIFY (Conoce(Juan, x), Conoce(y, Bill)) = {x/Bill, y/Juan}

Pgina 23 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


UNlFY (Conoce(Juan, x), Conoce(y, Madre(y))) = {y/Juan, x/Madre(Juan)}
UNlFY (Conoce(John,x), Conoce(x, Elizabeth)) = fail .
La ltima unificacin falla porque x no puede tomar los valores de Juan y
Elizabeth al mismo tiempo.
Listas y rboles
Las listas y rboles son comnmente utilizados para representar el conocimiento que
se relaciona con ellos regularmente en cada rea de la IA. Una lista es una serie escrita
de artculos virtualmente relacionados. Las listas son normalmente utilizadas para
representar conocimiento jerrquico donde los objetos son agrupados, categorizados o
graduados de acuerdo a un rango o relacin.
Los objetos son divididos en grupos o clases de artculos similares. Entonces, sus
relaciones son mostradas enlazndolos a ellos unos con otros. La siguiente figura
muestra un formato generalizado de una lista.

Un rbol es una estructura grfica de una jerarqua. Este es simplemente una forma de
ilustrar la lista y otra jerarqua del conocimiento. Una lista se muestra en la siguiente
figura. Esta consiste de nodos que corresponden a nombres de la lista y elementos.
Los nodos son conectados por lneas llamadas arcos que muestran la relacin entre los
nodos.

Pgina 24 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Herencia
Para soportar la representacin flexible del conocimiento acerca del mundo es necesario
permitir que la jerarqua sea un grafo acclico dirigido. Se sabe que estos grafos
acclicos son adecuados, ya que se corresponde con la relacin subconjunto.
La herencia permite nuevas clases que heredan las propiedades, tanto de datos como
de los miembros de las funciones de una clase previamente definida. Las nuevas
propiedades heredadas se colocan encima de las propiedades heredadas, lo cual puede
ahorrar a los programadores bastante cdigo.

2.2.1.3 Redes Semnticas (RS)


Una de las formas ms antigua y fcil de comprender los esquemas representacin del
conocimiento es la red semntica. Las redes semnticas son bsicamente descripciones
grficas del conocimiento que muestran relaciones jerrquicas entre los objetos.
Una red semntica consta de un nmero de crculos o nodos que representan objetos e
informacin descriptiva acerca de ese objeto. Los objetos pueden ser elementos fsicos
tales como un libro, un carro, eventos o acciones. Un concepto puede ser la ley de Ohm,
un evento puede ser una fiesta, una accin puede ser fabricar una casa o escribir un
libro.
Los nodos en las redes semnticas estn interconectados por enlaces (arcos) que
describen las relaciones entre los varios objetos y factores descriptivos. Los arcos
pueden definirse de varias formas, dependiendo de la clase de conocimiento
representado. Estos muestran la relacin entre los varios objetos y factores descriptivos.
Se define una red semntica como un grafo dirigido, cuyos nodos representan
individuos; un arco est etiquetado con el nombre de la relacin que ste representa;
varios arcos pueden tener la misma etiqueta, mientras que cada individuo es
representado por un solo nodo.

Pgina 25 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Algunos de los arcos ms comunes usados para representar jerarqua son del tipo
es-un o tiene-un. El es-un muestra una relacin de clase, esto es, que un
objeto pertenece a una clase grande o categoras de objetos. El enlace tiene-un es
utilizado para identificar caractersticas o atributos de los nodos objetos. Otros arcos
son utilizados para propsitos de definicin. En general, un enlace designa cualquier
relacin utilizada para interconectar objetos.
Las redes semnticas se utilizan tanto como modelos de organizacin de la memoria
humana as como de esquemas de representacin de significados de oraciones en
lenguaje natural.
Esta representacin es ventajosa, pues no hay que hacer mecanismos inferenciales para
hallar la relacin entre nodos. Simplemente lo que hay que buscar es un camino entre
esos dos nodos mediante un algoritmo para el procesamiento de grafos (algoritmos de
recorrido).
Ejemplo de Representacin del Conocimiento en Redes Semnticas
La figura central en el dominio del conocimiento es una persona llamada Sam. Un
enlace muestra que Sam es un hombre y que el hombre es un ser humano.
Otro arco a partir de Sam muestra que este est casado con Kay. Los arcos adicionales
muestran que Kay es una mujer y que una mujer es tambin un ser humano. Otro arco
muestra que tiene un hijo Joy que es un nio y que va a la escuela.
Otros datos muestran otras caractersticas acerca de Sam. Por ejemplo, que es el
vicepresidente de una compaa llamada ACME, una compaa que es una subsidiaria
de AJAX, una gran corporacin. Vemos tambin que Sam juega golf el cual es un
deporte.
Posteriormente vemos que Sam es propietario de un carro Mercedes Benz de color
plateado que fue hecho en Alemania.

Pgina 26 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

La Red Semntica en la Solucin de Problemas


Por ejemplo, se pueden hacer preguntas acerca del dominio representado por la red.
Comnmente la propia red nos proveer de las respuestas:
Con quin est casado Sam?
Por supuesto, el enlace casado con muestra que est casado con Kay.
Tiene Sam algn hijo?
Por supuesto el enlace tiene hijo al hijo Joe muestra que tiene uno.
Qu deporte juega?
El enlace juega a golf suministra la respuesta.
La computadora puede buscar hacia delante o hacia atrs a travs de los arcos desde el
nodo inicial para la bsqueda de las respuestas.
Jerarqua en la Red Semntica
Debido a que la red semntica es bsicamente jerrquica, las caractersticas variadas de
los nodos realmente heredan las caractersticas de los otros.
Por ejemplo: El hecho de que el enlace que muestra que Sam es un hombre y el hombre
en final es un ser humano, De aqu que Sam herede las propiedades del ser humano.
Podremos hacer la pregunta que si Sam es un ser humano y debido al enlace jerrquico,
podremos decir que lo es.
Otro ejemplo de la herencia es la relacin entre la compaa Acme para la cual trabaja
Sam y que tiene una corporacin padre, Ajax. Nuevamente podramos realizar una
pregunta:
Trabaja Sam para la corporacin Ajax?

Pgina 27 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

La respuesta es s, porque esta es propietaria de Acme. Esta caracterstica de herencia


de la red semntica la hacen capaz de realizar una variedad de deducciones a partir de la
informacin suministrada.
Cantidad de Detalles en una Red Semntica
La cantidad de detalles que se pueden incluir en la red semntica dependen del tipo de
problema que pueden resolverse. Si los problemas son generales, menos son los detalles
requeridos. Si el problema involucra un lote de adicionales, ser necesario dar ms
explicaciones de la que tiene la red original. Por ejemplo: el enlace que muestra que
Sam es propietario de un carro podra ser expandido para mostrar que es propietario de
otras cosas.
Aqu Sam est enlazado a un nuevo nodo llamado propietario. Manteniendo en mente
que los nodos pueden tambin representar condiciones, situaciones y acciones as como
especificar los objetos y sus atributos.

Ejercicio: elabore la red semntica para el siguiente conocimiento expresado a travs de


los siguientes hechos:
1) Vctor es un pingino.
2) Todos los pinginos son pjaros.
3) Todos los pjaros son animales.
4) Todos los mamferos son animales.
5) Todos los perros son mamferos.
6) Sultn es un sato.
7) Todos los satos son perros.
8) Una raza de perro es el pastor.
9) A Vctor le agrada Sultn y a Sultn le agrada Vctor.
10) Un pjaro puede volar.
11) Un perro puede correr.

Pgina 28 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

2.2.1.4 Frames (Marcos o Armazones)


Un marco (frame) es una estructura de datos compleja que contiene un agregado
de informacin usado para representar conceptos, clases de objetos o instancias
individuales con caractersticas y experiencias bien conocidas. El marco describe ese
objeto en gran detalle.
El detalle est dado en forma de ranuras las cuales describen los varios atributos y
caractersticas del objeto y situacin. La informacin almacenada en una armadura se
distribuye en diferentes campos, llamados aspectos o ranuras (slots). Cada aspecto tiene
la informacin sobre un atributo del objeto que se modela, los cuales representan las
propiedades del marco.
Ejemplos:
1- Marco: Empleado
Nombre
Edad (entre 16 y 65)
Piernas (2 por defecto)
Ocupacin
2- Marco: Hombre de familia
Nombre
Edad (entre 16 y 120)
Estado civil (genrico:casado)
Cnyuge (Apuntador al marco Mujer de familia)
Se denomina ejemplificacin de un marco a uno con sus ranuras llenas. Podemos ver
entonces al marco como una clase de entidades y a una ejemplificacin de l como una
entidad particular.
Ejemplos de ejemplificaciones de los marcos anteriores son:
1- Marco: Empleado
Nombre: Jess Lpez
Edad: 32
Piernas: 2
Ocupacin: Programador
2- Marco: Hombre de familia
Nombre: Jess Lpez
Edad: 32
Estado civil: casado
Cnyuge: (Apuntador a la ejemplificacin para Mujer de familia de Mariela Prez)
A cada aspecto se le pueden asociar varios tipos de informacin, llamados facetas
del aspecto. Algunas se las propiedades que nos gustara ser capaces de representar y
utilizar en el razonamiento incluyen:
VALUE: Almacena el valor para el aspecto.
PROCEDURE: Contiene un procedimiento para calcular el valor que debe ser
almacenado en la faceta VALUE.
Pgina 29 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

DEMONS: Contiene procedimientos que tienen que ser ejecutados cuando cambia el
valor almacenado en VALUE.
DEFAULT: Contiene un valor inicial, por omisin o valores comnmente usados para
la faceta VALUE.
RESTRICTIONS: Contiene un conjunto de expresiones lgicas que tienen que ser
verdaderas para el valor almacenado en VALUE.
EXPLANATION: Almacena documentacin sobre el aspecto.
En general se puede plantear que la informacin almacenada usando como FRC las
armaduras presenta cuatro niveles de detalle:

La armadura (estructura compleja).


Los aspectos o ranuras (informacin sobre atributos).
Las facetas de cada aspecto (tipos de informacin asociada).
Los valores almacenados en cada faceta (propiedades para representar y
utilizar en el razonamiento).

No necesariamente un aspecto incluye todas las facetas.


Las armaduras pueden ser organizadas como una jerarqua, para lo cual es suficiente
incluir en la armadura una o ms aspectos que contengan un enlace a la armadura
superior en la jerarqua, de la cual ella es una instancia, Cuando esta estructura
jerrquica es usada, una armadura puede heredar las propiedades de otra armadura, o
sea, compartir informacin a travs de la herencia.

Esta FRC es til para almacenar el conocimiento sobre los elementos de un dominio
de aplicacin que tiene una descripcin estereotipada o conocimientos basados en
caractersticas bien conocidas o experiencias; adems es fuerte para permitir que la
informacin comn sea almacenada de modo compartido para mltiples armaduras. Sin

Pgina 30 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


embargo, las armaduras no ofrecen directamente facilidades para describir cmo se usa
el conocimiento almacenado.

Ejemplo de Ranura:
Pitcher:
es-un : Jugador de Base Ball
Dominio :
Rango : Persona
Restriccin del Rango: experiencia en Base Ball como pitcher.
Right Field:
es-un : Jugador de Base Ball
Dominio:
Rango: Persona
Restriccin del rango: Experiencia en Base Ball
Jugador de Leon:
es-un: Jugador de Base Ball
Dominio:
Rango: Persona
Por omisin: Jugador de.
Entrenador:
Es-un: Jugador de Base Ball
Dominio:
Rango: Persona
Restriccin del Rango: Experiencia en Base Ball como entrenador
Por omisin: Entrenador de.
Jugador de Matagalpa:
Es-un: Jugador de Base Ball
Dominio:
Rango: Persona
Por omisin: Jugador de.
Jugador de Liga Nacional:
Es-un: Jugador de Base Ball
Dominio:
Rango: Persona
Por omisin: Jugador de.

Pgina 31 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Ejercicio: Usando el formato sugerido represente el siguiente conocimiento:


1.
2.
3.
4.
5.
6.

Los mamferos tienen cuatro patas


Los perros son mamferos
Los gatos son mamferos
Fido es un perro
Fido tiene tres patas
Mini es un gato

Nombre del Marco

Ranura

Valor de Ranura

Nota: utilice el concepto de clases

2.2.1.5 Guiones (SCRIPTS)


Un guin es una representacin del conocimiento de secuencia que describe una
secuencia de eventos en un contexto. Los guiones son estructuras de datos complejas,
designadas para almacenar el conocimiento sobre una secuencia estereotipada de
acciones. Este conocimiento informa a los sujetos que intervienen en la secuencia de
eventos lo que puede suceder en una situacin, cul evento sigue y qu papel debe jugar
cada quin en la actividad que se describe.
Los guiones resultan tiles porque en el mundo real aparecen patrones en la ocurrencia
de eventos. Estos patrones surgen debido a las relaciones de causalidad entre los
eventos. Los eventos que se describen en un guin forman una gigantesca cadena
causal.
Para almacenar dicho conocimiento el guin usa un conjunto de ranuras que contiene
informacin acerca de los sujetos que intervienen en al secuencia de eventos, lo que
puede suceder en una situacin, cul evento sigue y qu papel debe jugar cada quien en
la actividad que se describe.
Si se sabe que un guin es apropiado para una situacin dada, entonces puede resultar
muy til para poder predecir las ocurrencias de eventos que no se han mencionado
explcitamente. Los guiones pueden resultar tambin tiles para indicar la forma en que
los eventos mencionados se relacionan con los dems.
La informacin en los guiones puede referirse a:

Pgina 32 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


-Entry Condition. Condiciones bajo las cuales el evento a que se refiere el script debe
efectuarse (estas condiciones describen situaciones que necesitan ser satisfechas antes
que el evento se realice).
-Roles. Sujetos que actan en el evento descrito.
-Props. Objetos utilizados por los sujetos.
-Tracks. Lugar donde ocurre el evento.
-Results. Condiciones que existen despus de ocurrir el evento.
Los guiones son tiles en la prediccin de lo que va a suceder en cierta situacin, an
sin observar algunos eventos. Entre las aplicaciones que usan scripts se encuentran:
-Procesamiento del lenguaje natural.
-Representacin, procesamiento y generacin de historietas.
-En un sistema de EAC, para dar explicaciones y realizar modelos de conocimiento del
estudiante.
Pero en la prctica, esta estructura del conocimiento es inadecuada.
Un ejemplo de un guin tpico es la visita a un restaurante.
GUION RESTAURANTE
Sitio: Restaurante de autoservicio y su contorno.
Sujetos: Cliente (C), Dependiente (D), Cajero (J).
Objetos: Contadora, bandeja, comida, dinero.
Condicin: C tiene hambre, C tiene dinero.
Escena 1: Entrada al restaurante
- C entra al restaurante.
- C se pone en cola ante la contadora.
- C lee el men en la pared y decide qu pedir.
El episodio C entra al restaurante puede estar formado por los eventos abrir la
puerta y dirigirse a la lnea de servicio.
Escena 2: Tomar los alimentos
- C toma la bandeja vaca.
- C le pide a D los alimentos.
- D coloca los alimentos en la bandeja.
- C le paga a J.
Escena 3: Comer los alimentos
- C toma la bandeja con los alimentos.
- C coloca la bandeja en una mesa vaca.
- C ingiere los alimentos.
Escena 4: Salida del restaurante
- C se levanta de la mesa.
- C abandona el restaurante.
Resultados: C no tiene hambre, C tiene menos dinero, C est satisfecho o no, C est
demasiado lleno.

Pgina 33 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

2.2.2 Procedurales
Como ventajas de las F.R.C. procedurales podemos sealar:
Es fcil representar el conocimiento sobre cmo hacer cosas.
Es fcil representar el conocimiento que no encaja bien en muchos esquemas
declarativos simples, como por ejemplo razonamientos por defecto y
probabilsticos.
Es fcil representar conocimiento heurstico de cmo realizar las cosas
eficientemente.

2.2.2.1 Strips (Sistemas de Planificacin)


La planificacin es la generacin de una secuencia de acciones o programa de accin
para un agente, como por ejemplo el brazo de un robot. Estas acciones cambian de un
estado del universo sobre el que se desarrolla la planificacin a otro. Al igual que en las
reglas de produccin, los STRIPS transforman la descripcin de un estado en otra.
Un strip est compuesto por:
Condiciones (Precondicin): son los enunciados que deben cumplirse en un
estado dado para poder ejecutar una accin expresada mediante una regla
determinada.
Lista de literales a ser eliminados (Suprimir): contiene los enunciados que dejan
de ser vlidos al aplicarse dicha regla.
Lista de literales a ser aadidos (Aadir): contiene los enunciados que se hacen
vlidos en el nuevo estado una vez aplicada dicha regla.
Cualquier enunciado que no est incluido en las listas Suprimir o Aadir de un strip
se supone que no queda afectado por l. Esto significa que, al especificar cada strip,
no necesitamos considerar los aspectos del dominio que no se relacionan con l.
Naturalmente, debe usarse algn otro mecanismo distinto de la simple demostracin
de teoremas para calcular las descripciones completas de los estados despus de haber
realizado las acciones.
La esencia de esta F.R.C. es: Si la accin A transforma el estado S1 en el estado S2,
entonces una proposicin P es verdadera en el estado S2, si y slo si P est en la lista
Aadir de A o P es verdadera en S1 y no est en la lista Suprimir de A.
Analicemos el problema clsico: el mundo de bloques. Este problema puede plantearse
de la siguiente manera:
Hay una superficie plana sobre la cual pueden colocarse bloques. Existe cierto nmero
de bloques cbicos, todos del mismo tamao. Pueden apilarse uno encima del otro.
Hay un brazo de robot que puede manipular los bloques. El brazo del robot slo puede
sostener un bloque a la vez. Cada bloque puede tener como mximo un nico bloque
encima de l, no entendiendo por esto que no pueda tener 3 bloques: uno encima del
segundo y el segundo encima del tercero.
Supongamos que se tiene sobre una mesa, una distribucin inicial de tres bloques, como
se muestra en la figura 2.14. Se desea elaborar un sistema que determine la secuencia
de acciones a realizar por el brazo del robot para transformar dicha distribucin en la
mostrada en la figura 2.15.

Pgina 34 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


A
A

B
C

Fig. 2.14. Distribucin inicial


Fig. 2.15. Distribucin deseada
Para transformar la distribucin inicial (figura 2.14) en la deseada (figura 2.15) se
necesitan definir una serie de acciones:
TOMAR(x): Tomar el bloque x que est encima de la mesa y sostenerlo. Para ello, el
bloque x debe estar encima de la mesa, el brazo del robot debe estar vaco y el bloque x
no debe tener ningn bloque encima.
DEJAR(x): Dejar el bloque x encima de la mesa. Para ello, el brazo del robot debe estar
sosteniendo al bloque x.
APILAR(x,y): Colocar el bloque x encima del bloque y. Para ello, el brazo del robot
debe estar sosteniendo al bloque x y encima de y no debe existir ningn bloque.
DESAPILAR(x,y): Quitar el bloque x de encima del bloque y. Para ello, el bloque x
debe estar encima del bloque y, el brazo del robot debe estar vaco y el bloque x no debe
tener bloques encima.
Estas acciones se representan por medio de las siguientes reglas STRIPS:
TOMAR(x)
Precondicin: ENMESA(x) BRAZOVACIO
Suprimir: ENMESA(x) BRAZOVACIO
Aadir: SOSTENIDO(x)

DESPEJADO(x)

DEJAR(x)
Precondicin: SOSTENIDO(x)
Suprimir: SOSTENIDO(x)
Aadir: ENMESA(x) BRAZOVACIO
APILAR(x,y)
Precondicin: DESPEJADO(y) SOSTENIDO(x)
Suprimir: DESPEJADO(y) SOSTENIDO(x)
Aadir: ENCIMA(x,y) BRAZOVACIO
DESAPILAR(x,y)
Precondicin: ENCIMA(x,y) DESPEJADO(x)
Suprimir: ENCIMA(x,y) BRAZOVACIO
Aadir: SOSTENIDO(x) DESPEJADO(y)

BRAZOVACIO

Las tres componentes de cada regla STRIP se definen usando algunos predicados
bsicos. Para este universo los predicados bsicos ms frecuentes son:
DESPEJADO(x): el bloque x no tiene bloques encima.

Pgina 35 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


SOSTENIDO(x): el brazo del robot est sosteniendo al bloque x.
ENCIMA(x,y): el bloque x est encima del bloque y.
ENMESA(x): el bloque est colocado directamente sobre la mesa.
BRAZOVACIO: el brazo del robot est vaco.

2.2.2.2 Reglas de Produccin


El conocimiento procedimental especifica qu hacer en una determinada situacin.
Este conocimiento se suele especificar en la mquina como un cdigo que hace algo.
La mquina utiliza el conocimiento cuando ejecuta el cdigo para llevar a cabo una
determinada tarea.
Es la tcnica de representacin del conocimiento procedimental ms usada en la
actualidad, para la cual se han desarrollado un mayor nmero de herramientas
comerciales y constituyen un medio eficaz para la codificacin del cmo conocer la
resolucin de problemas de los expertos humanos.
Ellas consisten en sentencias de dos partes que incorporan pequeas partes de
conocimiento. La primera parte es el antecedente, expresa una situacin o premisa,
mientras que la segunda parte, llamada consecuencia, establece la accin particular o
conclusin que se aplica si la situacin o premisa es cierta. Las reglas siempre expresan
una condicional con un antecedente (situacin o premisa) y un consecuente (accin
o conclusin). Si el antecedente es satisfecho o verdadero, entonces se obtiene el
consecuente.

La forma ms comn est dada por el formato:


ANTECEDENTE ==> CONSECUENTE
SITUACION
==> ACCION
PREMISA
==> CONCLUSION
Ellas representan una unidad relativamente independiente del conocimiento, las cuales
pueden describir relaciones como las siguientes:
Si situacin S, entonces accin A.
Si premisa P, entonces conclusin C.
La parte izquierda de la regla es una sentencia con el prefijo IF. La segunda es con el
prefijo THEN. Ejemplo:
Si novena entrada, y
Menos de dos outs, y
Primera base vaca, y
El bateador golpea mejor que el siguiente
Entonces se embasa el bateador
Una de las ventajas de las reglas de produccin es la modalidad de tal enfoque, otra
ventaja es que pueden captar conocimiento probabilstico til o conocimiento de juicio
que los humanos utilizamos a menudo al razonar.

Pgina 36 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Las reglas de produccin son una de las ms flexibles formas de representar el
conocimiento. Debido a la similitud entre las reglas de produccin y las frmulas de
la lgica proposicional, muchos de los mtodos y teoremas bien definidos de la lgica
formal pueden ser aplicados a los sistemas de produccin. Por lo que son fciles de
crear y comprender.
Las RP pueden ser fcilmente comprendidas y tienen suficiente fuerza expresiva para:
Representar reglas de inferencia dependientes del dominio.
Almacenar el conocimiento que puede ser expresado como heurstica
experimental.
Expresar conocimiento orientado a objeto.
Expresar relaciones causales.
Al usar las RP como FRC se pueden desarrollar sistemas con las siguientes
caractersticas:
Cada regla define una pequea unidad de conocimiento relativamente
independiente (modularidad).
Se pueden aadir nuevas reglas con una relativa independencia del resto
(incrementalidad).
Las reglas viejas pueden ser modificadas con relativa independencia
(modificabilidad).
La habilidad del sistema crece proporcionalmente a la cantidad de reglas.
El conocimiento existente puede ser refinado.

Partes de un Sistema Basado en Reglas:


Un sistema basado en reglas de produccin consta de:
a. Un conjunto de reglas denominadas reglas de produccin.
b. Un sistema de gestin de base de datos.
c. Un intrprete de reglas.
a. Un conjunto de reglas denominadas reglas de produccin.

Una regla de produccin es un par condicin/accin de la forma:


Si C entonces A
Donde C es alguna condicin que tiene que ser satisfecha por los datos de la base de
datos antes que la regla pueda ser aplicada y la accin A tomada.
C puede ser una expresin compuesta, tal como se ilustra en la regla:
Si [C1 y C2] o [C3 y NO C4], entonces A.
Con las reglas se utilizan las conjunciones AND, OR, que son aadidas como funciones
lgicas combinadas con IF si la representacin del conocimiento as lo requiere.
Un ejemplo de regla de produccin es:
Si manchas rojas, fiebre, y edad escolar,

Pgina 37 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Entonces el paciente tiene varicela.
Para definir algn dominio del conocimiento exactamente, muchas reglas de produccin
deben ser comnmente utilizadas. Las reglas suministran detalles acerca de objetos,
sus caractersticas y acciones a ser tomadas. Ellas toman un lote de detalles para cubrir
precisamente un objeto. Las reglas son comnmente interrelacionadas y referenciadas
unas con otras. Estas reglas forman una base de conocimiento, la cual forma parte de un
sistema de produccin. Un sistema de produccin consiste de una base de conocimiento
ms una base de datos y un mecanismo de inferencia.
b. Un sistema de gestin de base de datos.

El sistema de gestin de base de datos de un sistema de produccin gestiona una base


de datos que consta de un nmero de hechos relevantes en un problema en particular
para el que est utilizndose el sistema de produccin. En la base de datos estn dadas
las condiciones iniciales y el xito a ser logrado.
c. Un intrprete de reglas.

El intrprete de reglas es un programa que identifica reglas aplicables, es decir, reglas


en las que la parte condicin est satisfecha; y determina el orden en el que las reglas
aplicables deberan ser utilizadas. Los mecanismos de control e inferencia buscan sobre
la base de conocimiento buscando las reglas que coinciden con las condiciones iniciales
o con el xito de la base de datos. Aquellas reglas que coincidieron con las condiciones
o con el xito buscado entonces nos proveen del conocimiento bsico para resolver el
problema.

Ejemplo de Aplicacin de las Reglas de Produccin:


Una caracterstica muy importante es que la base de conocimientos es independiente del
mecanismo de inferencia que se utiliza para resolver de inferencia que se utiliza para
resolver los problemas. De esta forma, cuando los conocimientos almacenados se han
quedado obsoletos, o cuando se dispone de nuevos conocimientos, es relativamente fcil
aadir reglas nuevas, eliminar las antiguas o corregir errores en las existentes. No es
necesario reprogramar todo el sistema experto.
Las reglas suelen almacenarse en alguna secuencia jerrquica lgica, pero esto no
es explcitamente necesario. Se pueden tener en cualquier secuencia y el motor de
inferencia las usar en el orden adecuado que necesite para resolver un problema.
Una base de conocimiento estructurada indica que hay hojas terminales en cada paso
de un rbol de decisiones. En una base de conocimiento completamente estructurada es
imposible para las reglas en la base de conocimiento estar fuera de orden segn halla
un paso y solo un paso para cada xito en la base de conocimiento. Estos tipos de base
de conocimiento, comnmente toman un gran esfuerzo en construirse, pero son ms
satisfactorias en su comportamiento. Generalmente planificamos cmo la informacin
deber ser vista por el cdigo. Por ejemplo:

Pgina 38 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Ntese que hay una hoja Terminal para cada paso en el rbol. En este tipo de rbol de la
base de conocimiento la respuesta del usuario est limitada a Si o No.
Una base de conocimientos muy ingenua, para identificar vehculo, podra ser la
siguiente:
Regla 1: SI tiene 2 ruedas
Y utiliza motor
ENTONCES es una motocicleta
Regla 2: SI tiene 2 ruedas
Y es movido por el hombre
ENTONCES es una bicicleta
Regla 3: SI tiene 4 ruedas
Y utiliza motor
Y pesa menos de 3500 Kgrs.
ENTONCES es un coche

2.3 Representacin con Incertidumbre


Como veremos, una de las debilidades de la lgica tradicional es su inhabilidad para
tratar con la incertidumbre. Las oraciones lgicas deben ser expresadas en trminos
de falso o verdadero no es posible razonar, en lgica clsica, sobre posibilidades.
Veremos diferentes versiones de lgica como lgica modal, abduccin e induccin que
proveen alguna habilidad para razonar sobre posibilidades, y hay tambin los mtodos
probabilsticos y la lgica difusa que proveen formas ms rigurosas para razonar en

Pgina 39 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


situaciones de incertidumbre, que son parte de un curso ms avanzado.
Abduccin y Razonamiento Inductivo
El tipo de razonamiento que hemos ha sido el razonamiento deductivo, el que en
general est basado en el uso del Modus Ponens y las otras reglas de razonamiento
deductivo. Este tipo de razonamiento asume que estamos tratando con incertidumbres y
no nos permite razonar sobre cosas de las cuales no estamos seguros. Hay otro tipo de
razonamiento, el razonamiento inductivo, que no tiene la misma base lgica pero que
puede ser extremadamente poderosa para tratar con situaciones en las que carecemos de
certidumbre.
Extraamente, otra forma de razonamiento, abduccin, esta basado en una mentira
comn que puede ser expresada como:

Note que la abduccin es muy similar al Modus Ponens, pero no es lgicamente


razonable un ejemplo tpico de esta regla puede ser Cuando Roberto esta enfermo, no
viene a trabajar. Roberto no est en el trabajo hoy. Por lo tanto est enfermo. De hecho,
Roberto puede estar de fiesta, o atendiendo un funeral, o quizs puede ser Domingo o el
da de navidad.
Dado que este tipo de razonamiento no es vlido, porqu lo estamos discutiendo aqu?
Sucede que aunque la abduccin no provee un modelo razonable lgicamente para el
razonamiento, si provee un modelo que trabaja razonablemente bien en el mundo real
porque nos permite observar un fenmeno sin el conocimiento completo.
El Razonamiento Inductivo nos permite hacer predicciones acerca de lo
que pasar, basado en lo que ha sucedido en el pasado. Los humanos usamos el
razonamiento inductivo todo el tiempo sin darnos cuenta. De hecho, nuestra vidas entera
estn basadas alrededor del razonamiento inductivo, por ejemplo, el sol sali ayer y
anteayer, y todos los das que yo se antes de eso, as que saldr de nuevo maana. Es
posible que no lo haga, pero parece claramente que no es probable que suceda. Este tipo
de razonamiento se hace ms poderoso cuando le aplicamos las probabilidades, como en
he notado que casi todo pjaro que veo es una golondrina. Por lo tanto, es casi seguro
que cada pjaro es una golondrina.
Como vemos, estos tipos de razonamiento son extremadamente tiles para tratar con
la incertidumbre y son la base de la mayora de las tcnicas de aprendizaje usadas en
Inteligencia Artificial.

Lgicas Modales y los Posibles Mundos


Las formas de lgica con las que hemos tratado hasta aqu tienen que ver con hechos y
propiedades de objetos que son ya sea verdaderas o falsas. En estas lgicas clsicas, no
consideramos la posibilidad de que las cosas cambien o de que las cosas puedan no ser
siempre como son ahora.

Pgina 40 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Las lgicas modales son una extensin de la lgica clsica que nos permiten razonar
sobre posibilidades e incertidumbres. En otras palabras, usando una lgica modal,
nosotros podemos expresar idea tales como aunque el cielo es normalmente azul,
no siempre lo es (por ejemplo, en la noche). De esta manera podemos razonar sobre
mundos posibles. Un mundo posible es un universo o escenario que podra lgicamente
llegar a ser.
Las siguientes afirmaciones pueden no ser verdaderas en nuestro mundo, pero son
posibles, en el sentido de que no son ilgicas, y pueden ser verdad en un posible mundo:
Los rboles son todos azules.
Los perros pueden volar.
Las personas no tienen piernas.
Es posible que algunas de estas afirmaciones lleguen a ser verdad en el futuro, o quizs
fueron verdades en el pasado. Es tambin posible imaginar un universo alternativo en el
que estas afirmaciones son verdad ahora. Las siguiente afirmaciones, por otro lado, no
pueden ser verdad en ningn mundo posible:
A A
(x > y) (y > z) (z > x)
La primera de estas ilustra la ley del medio excluyente, que simplemente dice que un
hecho debe ser verdadero o falso: no puede ser al mismo tiempo verdadero y falso.
Tambin no puede darse el caso de que el hecho son sea verdadero ni falso. Esta es
una ley de la lgica clsica, y como se puede ver en otros estudios, es posible tener un
sistema lgico sin la ley del medio excluyente, en el cual un hecho puede ser ambos
verdadero y falso.
La segunda afirmacin no puede ser verdadera por las leyes de la matemtica.
No estamos interesados en mundos posibles en los que las leyes de la lgica y las
matemticas no se mantienen.
Una afirmacin que puede ser verdadera o falsa, dependiendo de la situacin, es
llamada contingente. Una afirmacin que siempre tiene que tener el mismo valor de
verdad, sin importar cul mundo posible consideremos, es no contingente. Por lo tanto,
las siguientes oraciones son contingentes:
AB
AB
Me gusta el helado.
El cielo es azul.
Las siguientes oraciones son no contingentes:
A A
A A
Si te gusta el helado, entonces te gusta este helado.

Pgina 41 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Claramente, una afirmacin no contingente puede ser ya sea verdadera o falsa, pero el
hecho de que es no contingente significa que siempre tendrn el mismo valor.
Si una afirmacin A es contingente, entonces decimos que A es posiblemente verdadera,
lo que se escribe
A
Si A es no contingente, entonces es necesariamente verdadera, lo que se escribe
A

2.4 Ejercicios Propuestos


1- Para cada uno de los siguientes conjuntos de frases, indicar el formalismo que facilite
mejor la representacin del conocimiento dado en ellas para responder a la cuestin
propuesta. Explicar brevemente la eleccin.
a) Los bombones son caramelos.
Los diabticos no deberan tomar azcar.
Guillermo es diabtico.
Debera Guillermo comer bombones?
b) Al ir al cine, usualmente se compra una entrada, se da la entrada al encargado y luego
se va a encontrar un asiento.
Se compran palomitas antes de ir al asiento.
Al finalizar la pelcula se abandona el cine.
Juan fue al cine.
Compr Juan una entrada?
2- Represente en una red semntica el conocimiento expresado a travs de los siguientes
hechos:
a) Todos los animales son seres vivos.
b) Todos los animales pueden moverse.
c) Las amebas son animales.
d) Todos los animales superiores son animales.
e) Todos los animales superiores tienen cabeza y tienen patas.
f) La cabeza de los animales superiores tiene cerebro.
g) Los tigres son animales superiores.
h) Los tigres tienen color rayado.
i) Los elefantes son animales superiores.
j) Todos los elefantes son de color gris.
k) Federico es un elefante.
l) Jumbo es un elefante.
3- Represente el siguiente conocimiento por medio de una red semntica:
Un petrobono es un tipo de emisin. Las emisiones pertenecen al mercado de dinero,
as como a los valores de renta fija. Por otra parte, este tipo de emisin posee diversos
valores como: valor nominal, valor de compra y valor de venta.
4- Construir un marco que sea apropiado para almacenar datos acerca de estudiantes en
un sistema de registros de estudiantes. Tratar de incorporar distintas facetas.

Pgina 42 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

5- Construir un marco que almacene la informacin correspondiente al problema


planteado en la seccin 2.5.1.
6- Construir un guin para ir al cine.
7- Construir un guin para la secuencia de acontecimientos implicados en la matrcula y
graduacin de un curso de computacin.
8- Dado el conocimiento expresado en la siguiente figura, represntelo usando la F.R.C.
ms adecuada.

10- Dada la siguiente base de conocimientos expresada en reglas de produccin,


analizar la respuesta que dara a las siguientes preguntas, suponiendo que el intrprete
de reglas siempre analiza partiendo de la primera regla que aparece.
R1: Si X es un animal, entonces X es un ser viviente.
R2: Si X es un animal, entonces X puede moverse.
R3: Si X es un animal superior, entonces X es un animal.
R4: Si X es un animal y X tiene cabeza y X tiene patas, entonces X es un animal
superior.
R5: Si X es un animal superior, entonces X tiene cabeza.
R6: Si X tiene cabeza, entonces X tiene cerebro.
R7: Si X es un elefante o X es un tigre, entonces X es un animal superior.
R8: Si X es un tigre, entonces X tiene patrn rayado.
R9: Si X es un elefante, entonces X es gris.
Inicialmente la Base de Datos contiene los hechos:
Jumbo es un elefante.
Federico es un elefante.
Preguntas:
a) Federico tiene cerebro?
b) Es el elefante de color verde?

Unidad III: Mtodos de Solucin de Problemas


Pgina 43 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Objetivos:
Explicar la manera de realizar eficazmente la definicin y anlisis de un
problema en Inteligencia Artificial.
Analizar los tipos de representacin de problemas que requieran solucin.
Explicar las diferentes tcnicas de solucin de problemas.

3.1 Introduccin
Dado un sistema de I.A., donde el conocimiento est representado en una de las formas
estudiadas, se desea resolver un determinado problema de un dominio D bajo un
conjunto de ciertas condiciones C. Solucionar este problema significa encontrar una
solucin x X que satisfaga el conjunto de condiciones C, donde X es el conjunto de
todas las soluciones posibles a dicho problema.
Este proceso de solucionar un problema se realiza mediante una bsqueda en el espacio
X. Existen tres esquemas bsicos de solucin de problemas:

Esquema de produccin.
Esquema de reduccin.
Esquema de reduccin dbil.

Analicemos cada uno de estos esquemas.


Esquema de Produccin: En este esquema el problema a solucionar se representa
en un espacio de estados y su solucin se reduce a la bsqueda en este espacio. Los
conceptos principales en este esquema son:

Estados: situaciones en que se pueden encontrar los objetos que caracterizan al


problema durante su solucin.
Movimientos: acciones legales que permiten pasar de un estado del problema a
otro.
Funcin de evaluacin de estados: asigna a un estado un estimado heurstico del
esfuerzo necesario para alcanzar una solucin desde este estado.
Funcin de seleccin de movimientos: selecciona uno o ms de los movimientos
aplicables.
Funcin de seleccin de estados: selecciona el estado a partir del cual debe
continuar la bsqueda.

Encontrar la solucin de un problema significa, entonces, descubrir algn camino entre


el estado inicial y el final. El procedimiento general de un esquema de produccin es:
1. Determinar, a partir del problema, el estado inicial S0 y colocarlo como raz del

rbol de bsqueda.
2. Aplicar la funcin de seleccin de movimientos a S0 y generar sus estados
descendientes.
3. Si el rbol de bsqueda contiene alguna solucin, o sea, si uno de los estados
generados es el estado final, entonces TERMINAR y EXITO.
4. Si no,
a. Aplicar la funcin de evaluacin a cada uno de los estados generados.

Pgina 44 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


b. Si no existen en el rbol estados sin procesar, entonces TERMINAR y

FALLO.
c. Aplicar la funcin de seleccin de estados a los estados del rbol de
bsqueda para seleccionar uno de ellos.
d. Aplicar la funcin de seleccin de movimientos al estado seleccionado y
generar los nuevos estados aplicando dichos movimientos.
e. Ir al paso 3.
La construccin de la funcin de evaluacin de estados para un problema concreto
requiere del uso de conocimiento sobre ese problema. No siempre se dispone de dicho
conocimiento, por lo que no siempre es posible definir esta funcin. Esto trae por
consecuencia que los mtodos de bsqueda se dividan en dos tipos:

Bsqueda a ciegas: no se dispone de conocimiento para definir la funcin de


evaluacin de estado.
Bsqueda heurstica: se puede definir la funcin de evaluacin de estado.
Dentro de estos dos tipos existen diferentes mtodos de bsqueda, los cuales estn
determinados por la forma en que se construyen las funciones de seleccin de estados y
de movimientos. Entre estos mtodos podemos sealar:
Mtodos de bsqueda a ciegas (Brute-Force searches):
Primero en profundidad (depth-first).
Primero a lo ancho (breadth-first).
Bsqueda en rboles y/o.
Bsqueda en sistemas de produccin.
Bsqueda bidireccional.
Bsqueda por diferencias.
Bsqueda de soluciones mltiples.
Mtodos de bsqueda heurstica:
Bsqueda por el incremento mayor (hill-climbing).
Bsqueda por el mejor nodo o algoritmo A* (best-first).
Bsqueda heurstica en rboles y/o o algoritmo AO*.
Esquema de reduccin: En este esquema el problema se descompone en varios
subproblemas, los cuales se resuelven de manera independiente y luego se combinan
sus soluciones para obtener la solucin del problema original. Existen dos tipos de
movimientos: uno de ellos se encarga de la descomposicin de un estado en otros y el
otro constituye un movimiento terminal, que resuelve el problema completamente.
Los conceptos principales de este esquema, as como su procedimiento general son
similares a los del esquema de produccin, pero las funciones de evaluacin de estado,
seleccin de estados y seleccin de movimientos se basan en consideraciones diferentes.
Es usual representar los problemas que se resuelven con este esquema mediante rboles
y/o.
Esquema de reduccin dbil: Este esquema est orientado a tareas de planificacin.

Pgina 45 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

3.2 Como Solucionar el Problema


Para resolver un problema debemos seguir los siguientes pasos:
Definir el problema con precisin: especificar el espacio del problema, los
operadores para moverse en dicho espacio y los estados inicial y final o meta.
Analizar el problema: determinar las caractersticas del problema para
seleccionar las tcnicas que pueden resolverlo.
Escoger la mejor tcnica y aplicarla al problema particular.

3.2.1 Definicin del Problema


El primer paso hacia el diseo de un sistema para resolver un problema es la creacin
de una descripcin formal y manejable de dicho problema, o sea, la definicin del
espacio de bsqueda de las soluciones.

3.2.1.1 Espacio de Bsqueda


Un espacio de bsqueda no es ms que el ambiente o espacio de todas las soluciones
posibles donde se realiza la bsqueda de una solucin. Est formado por un conjunto de
nodos que constituyen soluciones parciales o posibles del problema y un conjunto de
operadores que permiten movernos de un nodo a otro.
El proceso de bsqueda de una solucin consiste, entonces, en encontrar una secuencia
de operadores que transformen el nodo inicial en el final.

3.2.1.2 Tipos de Espacio de Espacios de Bsqueda


Existen tres tipos de espacios de bsqueda:

Espacio de estado.
Espacio de reduccin de problemas.
rboles de juego.

Espacio de Estado: El conjunto de todos los estados posibles para un problema


concreto se denomina espacio de estado. Definir un problema significa, entonces,
especificar:
el espacio de estados que contiene todas las configuraciones posibles de los
objetos relevantes y el conjunto de operadores que permiten movernos en
dicho espacio. Naturalmente es posible definir este espacio sin enumerar,
explcitamente, todos los estados que contiene.
el estado inicial.
uno o ms estados finales que sern aceptados como solucin al problema.
Espacio de reduccin de Problemas: A diferencia del espacio de estado, en este
espacio el nodo inicial representa el problema original que se desea resolver, los nodos
finales o metas constituyen problemas que pueden resolverse mediante una primitiva
simple y los restantes nodos representan subproblemas en que puede descomponerse un
determinado problema.
Los arcos seran, entonces, operadores que permiten descomponer un problema en un
conjunto de subproblemas.

Pgina 46 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Existen dos tipos de nodos. Si slo basta con resolver uno de los subproblemas en que
se descompuso un nodo dado para resolver ste, el nodo se denomina nodo O (or). Si
por el contrario, deben ser resueltos todos los subproblemas en que se descompuso el
nodo, ste se denomina nodo Y (and). Este tipo de espacio de bsqueda se representa,
usualmente, mediante un rbol y/o, el cual no es ms que un rbol que contiene nodos
del tipo Y y nodos del tipo O.
Una solucin de un problema sera, entonces, un subrbol que comienza en el nodo raz
y que contiene siempre una de las ramas de los nodos O y todas las ramas de los nodos
Y hasta llegar a uno o varios nodos terminales.
Ejemplo:

rboles de juego: Un caso especial de los rboles y/o son los rboles de juego, donde
participan dos jugadores. En un rbol de juego el nodo raz representa la posicin inicial
del juego y los nodos terminales representan posiciones del juego donde un jugador
gana, pierde o hace tablas. Los operadores son, precisamente, los movimientos legales
que pueden realizarse en dicho juego.

3.2.1.3 Representacin del Espacio de Bsqueda


Hemos representado a los tres tipos de espacios de bsqueda estudiados en la seccin
anterior, en forma de rbol. Sin embargo, con frecuencia, el proceso de generacin de
los nodos sucesores produce un mismo nodo ms de una vez, lo que implica que en la
bsqueda del camino a la solucin, ste se procese varias veces. En este caso, es mejor
representar el espacio de bsqueda mediante un grafo orientado.
En la creacin del grafo, antes de incorporar un nodo N, deben realizarse los siguientes
pasos:
1. Si N pertenece al conjunto de los nodos generados hasta el momento, entonces
poner como sucesor del nodo que se est expandiendo al nodo ya existente. El
nodo N puede simplemente descartarse.
2. Si no, aadirlo al grafo.
El buscar en un grafo reduce el esfuerzo que se invierte en explorar un camino varias
veces, pero requiere un esfuerzo adicional para comprobar si el nodo ya se ha generado.
El hecho de si este esfuerzo es justificado depende del problema concreto. Un problema
que se puede presentar y que hay que tener en cuenta es la presencia de ciclos en el
grafo.

3.2.2 Anlisis de Problema


Pgina 47 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Para escoger la tcnica de I.A. ms apropiada para resolver un problema es necesario
analizar el mismo teniendo en cuenta los siguientes aspectos:
Se puede descomponer el problema en un conjunto de subproblemas
independientes ms pequeos o ms fciles?
Es posible en la solucin del problema ignorar o deshacer pasos mal hechos?
Es predecible el universo del problema?
Se desea una solucin cualquiera o la mejor solucin al problema?
Es consistente el conocimiento disponible para resolver el problema?
Cul es el papel del conocimiento?
Se requiere la interaccin con una persona?

3.2.2.1 Tratar de Descomponer el Problema


Los problemas que se pueden descomponer en un conjunto de subproblemas se
pueden solucionar usando la tcnica de divide y vencers (divide and conquer). Un
ejemplo de este tipo de problema es la integracin simblica. Sin embargo, estas
tcnicas generalmente no pueden usarse en aquellos problemas no descomponibles,
aunque a veces es posible usarlas para generar una solucin aproximada y, entonces,
arreglarla para reparar los errores causados por las interacciones existentes entre los
subproblemas. Un ejemplo de problema no descomponible es el mundo de bloques.

3.2.2.2 Considerar si se Puede Ignorar o Deshacer Pasos Para la


Solucin
En relacin con este aspecto existen tres clases de problemas:
1. Ignorables: En ellos los pasos dados incorrectamente para la solucin del
problema pueden ignorarse. Un ejemplo es la demostracin de un teorema
matemtico. Supongamos que comenzamos demostrando un lema que pensamos
es til, pero despus nos damos cuenta que no era de ninguna ayuda. Cualquier
regla que pudo haberse aplicado, todava puede aplicarse. Podemos simplemente
ignorar lo hecho y lo nico que se ha perdido es el esfuerzo.
2. Recuperables: En ellos los pasos dados incorrectamente para la solucin del
problema pueden deshacerse. Un ejemplo es el rompecabezas de 8 piezas, el
cual consiste en que se tiene una bandeja en la que se colocan ocho baldosas
cuadradas. El noveno cuadrante sobrante queda sin cubrir. Cada baldosa tiene un
nmero sobre ella. Una baldosa que est adyacente al espacio en blanco puede
deslizarse a dicho espacio. El juego consiste en, dadas una posicin inicial y una
posicin final (usualmente las baldosas en orden consecutivo con el espacio en
blanco en el centro), transformar la posicin inicial en la final, desplazando las
baldosas. Al intentar resolver este problema, podemos realizar un movimiento
tonto. Los errores cometidos pueden enmendarse, retrocediendo para deshacer
cada paso incorrecto.
3. Irrecuperables: En ellos los pasos dados incorrectamente para la solucin del
problema no pueden deshacerse. Un ejemplo es el juego del ajedrez. Si se realiza
un movimiento estpido, no se puede ignorar ni retroceder al principio de la
partida. Lo nico que puede hacerse es tratar de realizar la mejor jugada a partir
de la situacin actual.

3.2.2.3 Se Puede Predecir el Universo del Problema?


En los problemas donde es posible predecir qu ocurrir, pueden usarse las tcnicas de
planificacin, las cuales permiten generar una secuencia de operadores que conducen

Pgina 48 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


con certeza a una solucin. Ejemplo: en el problema del rompecabezas de 8 piezas, cada
vez que se hace un movimiento sabemos exactamente qu pasar, por lo que se puede
planificar una secuencia completa de movimientos y saber de antemano el resultado.
Sin embargo, existen problemas donde esto no es posible. En ellos las tcnicas de
planificacin generan como mximo una secuencia de operadores que conducen a una
solucin con una buena probabilidad. Por ejemplo, en el juego de la brisca, para decidir
qu carta jugar no podemos planificar la partida completa, pues no sabemos qu cartas
tienen los restantes jugadores ni qu jugadas ellos harn.

3.2.2.4 La Mejor Solucin o Cualquier Solucin Para el Problema?


Los problemas en los que se desea encontrar el mejor camino a la solucin son ms
difciles de resolver que aquellos donde basta encontrar una solucin cualquiera, pues
mientras los primeros requieren bsqueda exhaustiva, los segundos pueden resolverse
eficientemente usando tcnicas heursticas. Un ejemplo de problema donde basta
encontrar una solucin se expone a continuacin. Supongamos que se tiene el siguiente
conjunto de hechos:
1. Marcos era un hombre.
2. Marcos era pompeyano.
3. Marcos naci en el ao 40 d.C.
4. Todos los hombres son mortales.
5. Todos los pompeyanos murieron en la erupcin del volcn en el ao 79 d.C.
6. Ningn mortal tiene ms de 150 aos.
7. Hoy estamos en el ao 1995 d.C.
y se desea responder a la pregunta est vivo Marcos?. Representndolos en lgica de
predicados y realizando inferencias se llega fcilmente a una respuesta. Note que en
este caso existen dos caminos para llegar a la respuesta de que Marcos no est vivo.
Uno de ellos se obtiene utilizando los hechos 1,3,4,6 y 7 y el otro, utilizando 2,5 y 7. No
importa cul de ellos se tome, lo que importa es la respuesta a la pregunta.
Un ejemplo donde se desea encontrar la mejor solucin es el problema del vendedor
ambulante, tambin conocido como el agente viajero, el cual consiste en que un
vendedor tiene una lista de ciudades, cada una de las cuales debe ser visitada solamente
una vez. Existen carreteras directas entre cada par de ciudades de la lista. Se debe
encontrar el camino ms corto que debera seguir el vendedor para visitar todas las
ciudades, comenzando por una cualquiera y retornando a ella misma. En este caso, es
necesario analizar todos los caminos posibles para tomar el mejor de ellos.

3.2.2.5 Es Consistente el Conocimiento Disponible Para Resolver el


Problema?
Hay problemas donde el conocimiento que se usa es completamente consistente. Un
ejemplo de ellos es: dado los siguientes axiomas de un grupo multiplicativo,
1. x.y est definido x,y elementos del grupo.
2. (x=y y=z) x=z
3. x=x
4. (x.y).z = x.(y.z)
5. I.x=x x, donde I es el elemento identidad del grupo.

Pgina 49 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


6. x-1.x = I, donde x-1 es el inverso de x.
7. x=y z.x=z.y
8. x=y x.z=y.z
se desea demostrar que x x.I=x.
Sin embargo, existen problemas que tienen inconsistencias. Un ejemplo es el problema
de la diana, el cual consiste en que un hombre est de pie a 50m de una diana y
quiere dar en el blanco con una pistola que dispara a una velocidad de 500 m/s. A
qu distancia debe apuntar por encima del blanco?. Razonemos: la bala tarda 0.1s en
alcanzar el blanco, suponiendo que viaja en lnea recta. La bala cae a una distancia igual
a 1/2gt2 = 1/2(9.8)(0.1)2 = 0.049 m = 4.9 cm. Si el hombre apunta 4.9 cm por encima
del blanco dara en la diana. Pero se ha supuesto que la bala viaja en lnea recta, lo que
entra en conflicto porque viaja en una parbola.

3.2.2.6 El Papel que Juega el Conocimiento


Existen problemas donde se necesita conocimiento slo para restringir la bsqueda. Por
ejemplo, en el problema del ajedrez, suponiendo potencia de computacin ilimitada, se
necesita de poca cantidad de conocimiento: slo reglas para describir los movimientos
legales del juego y un proceso de bsqueda adecuado. Usar conocimiento adicional
sobre tctica y buena estrategia, ayudara a restringir la bsqueda de la solucin y
acelerar la ejecucin del programa. Sin embargo, hay problemas que necesitan gran
cantidad de conocimiento tan slo para reconocer una solucin. Ejemplo: explorar los
peridicos de Estados Unidos para decidir quin est apoyando a los demcratas o a los
republicanos en una eleccin prxima. El programa tendra que saber cosas como los
nombres de los candidatos de cada partido, el hecho de que si quiere bajar los impuestos
apoya a los republicanos, el hecho de que si quiere educacin para las minoras apoya a
los demcratas, etc.

3.2.2.7 Considerar si se Necesita la Intervencin de Una Persona


Teniendo en cuenta este aspecto podemos distinguir dos tipos de problemas:
Solitario, en el cual se le da a la computadora una descripcin del problema
y ella produce una respuesta sin comunicacin intermedia y sin peticin de
una explicacin de su razonamiento. Ejemplo: para demostrar un teorema
matemtico usando resolucin, lo nico que se desea es saber si existe una.
Conversacional. Ejemplo: en problemas como el diagnstico mdico, el
programa debe ser capaz de explicar su razonamiento, pues si no, no ser
aceptado por los mdicos.

3.2.3 Aplicar la Mejor Tcnica de IA Para Resolver el Problema


Para poder escoger la mejor tcnica de I.A. a aplicar en el proceso de resolucin de
un problema particular es necesario estudiar, primeramente, las distintas tcnicas
de bsqueda que existen. A esto, precisamente, nos dedicaremos en las siguientes
secciones de esta unidad.

3.3 Mtodos de Bsqueda Ciega


La bsqueda a ciegas es una coleccin de procedimientos que investigan el espacio de
estados de manera exhaustiva pero ciega. Estos procedimientos se consideran mtodos
dbiles, pues imponen restricciones mnimas a la bsqueda, en general son tcnicas de
Pgina 50 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


solucin de problemas de propsito general y pueden describirse independientemente de
cualquiera sea el dominio del problema. Estos mtodos usan solamente la informacin
estructural y no hacen ninguna distincin cualitativa entre los nodos, respecto a
su posibilidad de encontrarse sobre el camino deseado. En consecuencia, para los
problemas con un extenso espacio de estados, la cantidad de alternativas que deben
explorarse es tan grande que hace que su uso sea computacionalmente imposible.
El nmero de nodos a explorar crece, en general, exponencialmente con la longitud
del camino que representa la solucin del problema. Esto genera una explosin
combinatoria que estos mtodos son incapaces de superar. No obstante, continan
formando el ncleo de la mayora de los sistemas de I.A. Estudiaremos algunas de las
tcnicas de bsqueda a ciegas ms usadas.

3.3.1 Primero a lo Ancho


Se examinan todos los nodos del rbol partiendo del nodo raz. Los nodos en cada nivel
son completamente examinados antes de movernos al prximo nivel. Una bsqueda
primero en anchura permitir siempre encontrar el paso ms corto entre el estado inicial
y el estado meta, con el menor nmero de pasos.

3.3.2 Primero en Profundidad


Una bsqueda primero en profundidad, comienza por el nodo raz y trabaja
descendiendo hacia los niveles de profundidad sucesivamente. En otras palabras,
un hijo o nodo sucesor es genreado por el nodo padre. Este proceso contina hasta
que la solucin es encontrada o es forzada una vuelta hacia atrs (backtracking) por
encontrarse con un terminal final.
La bsqueda primero en profundidad garantiza una solucin, pero la bsqueda puede
ser prolongada. Muchas ramas diferentes tendrn que ser consideradas a mxima
profundidad antes que la solucin sea lograda. Una considerable cantidad de tiempo y
esfuerzo es gastado en la bsqueda utilizando todas las posibilidades.

Pgina 51 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

3.2.3 Bsqueda en Arboles AND/OR (Y/O)


Los algoritmos para bsqueda primero a lo ancho y primero en profundidad en rboles
y/o son similares a los anteriormente estudiados, slo se diferencian en la verificacin
de las condiciones de terminacin. Cada vez que se genera un nodo o un grupo de
nodos, el algoritmo tiene que chequear si se satisfacen las condiciones de terminacin
de acuerdo al tipo de nodo, ya sea Y u O.

3.3.4 Encadenamiento Hacia delante (Forward Chaining enfoque


guiado por datos)
El proceso de iniciar con un nodo de inicio de estado y usar el operador para generar
el nodo sucesor hasta lograr el estado de Meta es conocido como de razonamiento
directo. Un proceso de encadenamiento directo se dice que es manejado por datos. El
encadenamiento directo es un tipo de razonamiento deductivo.
En la bsqueda con encadenamiento hacia delante se comienza a construir el rbol
situando como raz al estado inicial. El siguiente nivel del rbol se genera encontrando
todas las reglas cuyas partes izquierdas concuerden con el nodo raz y usando sus
partes derechas para crear los nuevos estados. De esta manera el proceso contina hasta
generar un estado que concuerde con el estado meta.
La bsqueda con encadenamiento hacia delante tiene las siguientes ventajas:
Simplicidad
Puede utilizarse para proporcionar todas las soluciones a un problema.
Sin embargo, tiene la desventaja de que el comportamiento del sistema, al intentar
solucionar un problema, puede ser ineficaz y parecer tambin desatinado, ya que
algunas de las reglas ejecutadas podran no estar relacionadas con el problema en
cuestin.

3.3.5 Encadenamiento Hacia Atrs (Backward Chaining enfoque


guiado por objetivos)
En el razonamiento hacia atrs, se comienza con el nodo Meta y se trabaja en retroceso
hacia el nodo de inicio. En el razonamiento en retroceso, el proceso se dice que va hacia
la meta directamente. Es un tipo de razonamiento inductivo. Comenzando con el nodo
meta y utilizando operadores inversos especiales, es posible generar nodos sucesores
hasta llegar al estado inicial.

Pgina 52 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Realmente como el nodo meta no es conocido, se comienza con un nmero de nodos
metas posibles e intenta la prueba o la justifica buscando inversamente.
La bsqueda en vuelta hacia atrs, comienza con un nodo meta potencial y trabaja hacia
atrs a travs del rbol de bsqueda por pruebas, justificaciones, o soportes.

Ejemplo de Bsqueda: Mundo de los Bloques


Este es un ejemplo para comprender los conceptos de bsquedas y tcnicas. Un brazo
controlado por robot es utilizado para mover los bloques sobre una tabla en una
secuencia particular desde un estado inicial hasta el estado meta. Un programa de
bsqueda de IA determinar la secuencia de los movimientos del brazo.

El operador para este programa es el comando que dice MOVER C a A o en su lugar


poner un bloque C sobre otro bloque, A, o sobre la superficie de la mesa. Para utilizar
este operador, no puede haber nada sobre el tope del bloque A, el bloque que se va a
mover. Si C es un bloque y no es la superficie de la mesa, no habr nada sobre el tope
del bloque C.
Utilizando ese operador repetitivamente, podremos generar el rbol de bsqueda
completo para este problema. Esto es, podremos determinar todos los movimientos
posibles comenzando por el estado inicial. Cada vez que utilizamos el operador
crearemos un nuevo nodo. El inicial y el final son los mostrados en la figura.

Pgina 53 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Una vez dibujado el rbol, debemos responder las siguientes preguntas:


1. Cul producir el menor costo de bsqueda desde el estado inicial a la meta,

una primero en profundidad o primero en anchura?


2. Es la bsqueda directa o restrospectiva?
La bsqueda primero en profundidad tiene la siguiente secuencia de nodos: 0-1-4-9-4-15-10, la misma tiene siete transiciones de nodos.
La bsqueda primero en anchura tiene la siguiente secuencia de nodos: 0-1-2-3-4-5-6-78-9-10, o diez transiciones entre nodos.
As que la bsqueda primero en profundidad es ms rpida y tiene el menor costo.

3.4 Bsqueda Heurstica


Analicemos el problema del vendedor ambulante. Para resolverlo usando alguna de las
tcnicas de bsqueda a ciegas estudiadas, se explorara el rbol de todos los posibles
caminos y se devolvera aquel de menor longitud. Si existen N ciudades, el nmero de
caminos diferentes entre ellas es (N-1)!. Explorar cada camino nos tomara un tiempo
proporcional a N y, por tanto, el tiempo total sera proporcional a N!. Tomando 10
ciudades tardaramos un tiempo de 10!=3 628 000 para solucionar el problema. Este
fenmeno se llama explosin combinatoria.
Para solucionar eficientemente la mayora de los problemas difciles, a menudo es
necesario comprometer los requerimientos de movilidad y sistematicidad, y construir
una estructura de control que, aunque no nos garantice que encontremos la mejor
respuesta, por lo menos proporcione una respuesta suficientemente buena.

Pgina 54 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

3.4.1 Definicin de Heurstica


Cuando un proceso afirma poder resolver un problema determinado, pero no ofrece
ninguna garanta de ello, se dice que es la heurstica de dicho problema.
(Norvig y Russel, p.101).
Es una estrategia de bsqueda en la que existe informacin, en la que se utiliza
conocimiento especfico para un problema determinado, permite encontrar soluciones
con ms eficiencia. Obviamente la bsqueda sin contar con informacin es menos
eficiente que la bsqueda que cuenta con informacin.
La heurstica utiliza la experiencia y el conocimiento emprico para guiar el proceso de
bsqueda, lo cual puede conducir a una solucin eficiente, ms rpida.
La bsqueda heurstica tiene dos categoras:

Heurstica de propsito general.


Heurstica de dominio especfico.

Heurstica de propsito general: La bsqueda heurstica es un mtodo muy general


que se puede aplicar a una gran variedad de problemas. Incluye gran variedad de
tcnicas especficas, cada una de las cuales es particularmente efectiva para una
pequea clase de problemas. Algunas de las estrategias de bsqueda heurstica de
propsito general son:

Generacin y prueba.
Escalada.
Bsqueda el primero es mejor.
Verificaciones de restricciones.
Anlisis de medios y fines.

Heurstica de dominio especifico: Son procedimientos especiales que se aplican


solamente a problemas dados.
Una heurstica, en muchos casos, involucra alguna evaluacin matemtica. Esto es
realizado por las as llamadas funciones heursticas, las cuales podran ser una frmula
para computar un valor a ser determinado.

3.4.2 Bsqueda por el Incremento Mayor (Hill Climbing)


Este mtodo consiste en realizar en cada momento la transicin hacia el estado que
se encuentre ms cerca del estado objetivo. Este criterio puede ser implementado
definiendo una funcin de seleccin de estados que escoja el estado en el cual la funcin
de evaluacin de estados produzca el mayor incremento.
Una de las ventajas de este mtodo de bsqueda es que tiende a reducir el nmero de
nodos visitados para alcanzar una solucin. Sin embargo, este mtodo tiene el problema
de que puede no terminar nunca, debido a que como el algoritmo slo almacena el
estado actual no tiene manera de saber dnde ha estado y puede caer en un ciclo. Una
Pgina 55 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


forma de solucionar esta dificultad es mantener una lista de estados visitados y nunca
re-visitar uno de stos, lo cual garantiza que el algoritmo terminar siempre que el
espacio de estados del problema sea finito.
Apliquemos este mtodo al problema del vendedor ambulante:
1. Seleccionar arbitrariamente una ciudad de partida.
2. Para seleccionar la siguiente ciudad, mirar todas las ciudades que an no se han
visitado. Seleccionar aquella que sea la ms cercana a la ciudad actual e ir a ella.
3. Repetir el paso 2 hasta que se hayan visitado todas las ciudades.
Este procedimiento se ejecuta, para N ciudades, en un tiempo proporcional a N2, lo cual
constituye una mejora significativa sobre el N! que se obtuvo utilizando un mtodo de
bsqueda a ciegas.
Considrese el problema de los bloques siguiente en el cual se usa como funcin
heurstica:
Aadir un punto por cada bloque situado encima del que le
corresponde. Sustraer un punto por cada bloque en lugar equivocado.
Estado
inicial:
A
H
G
F
E
D
C
B

Estado objetivo:
H
G
F
E
D
C
B
A
Figura 3.2: Planteamiento del problema de los bloques.

Con esta heurstica el valor del estado inicial de la figura 3.2 es 4 y el objetivo toma
valor 8. Por qu? Los bloques H hasta C estn sobre el bloque correcto, suman 6,
los bloques A y B no estn sobre el bloque correcto, suman 2, por lo tanto valor del
estado inicial = 6 2 = 4. En el estado final todos los bloques estn sobre el que les
corresponde.
Desde el estado inicial hay un solo movimiento posible: colocar el bloque A sobre
la mesa. El estado resultante tiene valor 6, por lo que es aceptado por el mtodo hillclimbing.

Desde ese estado se pueden generar tres estados:

Pgina 56 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Figura 3.3: Un estado intermedio en el problema de los bloques.


Aqu la bsqueda Hill-climbing se detiene pues se alcanzo un mximo local. El estado
actual parece ser mejor que cualquiera de sus sucesores porque ms bloques descansan
sobre el objeto correcto. Para resolver esto es necesario desbaratar una buena estructura
local ya que est en un contexto global errneo.
Se puede modificar la funcin heurstica para ver que sucede. Sea la nueva funcin
heurstica:
Para cada bloque que tiene por debajo la estructura correcta, aadir un punto por cada
bloque en la estructura que lo soporta. Por cada bloque que tiene una estructura soporte
incorrecta sustraer un punto por cada bloque en esa estructura.
Usando esta funcin heurstica el estado inicial tiene valor 28 y el objetivo 28 (el
bloque H est soportado por GFEDCBA, por lo tanto sumamos 7, el bloque G est
soportado por FEDCBA, as que sumamos otros 6, y as sucesivamente). Mover A a la
tabla produce 21. Los tres estados sucesores toman valor (a) 28, (b) 6 y ( c) 15. El
mtodo steepest-ascent hill climbing seleccionara ( c).
El mismo procedimiento hill-climbing que fall con la primera heurstica ahora trabaj.
Otra alternativa es comenzar de nuevo desde un punto inicial diferente.

3.4.3 Bsqueda por el Mejor Nodo (Best First Search)


La bsqueda por el mejor nodo es una forma de combinar las ventajas de las bsquedas
en profundidad y a lo ancho en un nico mtodo. En cada paso del proceso de bsqueda
se selecciona el ms prometedor de aquellos nodos que se han generado hasta el
momento. Entonces este se expande usando los operadores para generar sus sucesores.
Si uno de ellos es una solucin se termina. Si no, todos esos nuevos nodos se aaden al
conjunto de nodos generados hasta ese momento. Se selecciona de nuevo el nodo ms
prometedor y el proceso contina. La seleccin del nodo a expandir es independiente de
la posicin en que nos encontramos en el rbol de bsqueda y de la posicin del nodo
ms prometedor. Lo que sucede usualmente es que se realiza un poco de bsqueda a
profundidad mientras se explora una rama prometedora. En un momento dado esa rama
comienza a ser menos prometedora que otras de ms alto nivel que se han ignorado

Pgina 57 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


hasta ese momento.
El nombre de bsqueda primero el mejor (Best-First Search) es impreciso. Si
realmente pudiramos expandir el mejor nodo primero no sera una bsqueda sino un
procedimiento directo al estado objetivo. Este mtodo se describe de la forma siguiente:
Algoritmo BFS:
P1: Formar una pila de un elemento consistente en el nodo raz.
P2: Iterar a travs de (a) a (c) hasta que la pila sea vaca.
a. Chequear si el elemento en la cima de la pila es solucin.
b. Salir con xito si es solucin.
c. Si no es solucin, aadir sus sucesores a la pila y reordenar la pila por el
estimado de la distancia al objetivo desde cada nodo.
P3: Salir con falla si no se encuentra solucin.

Donde i denota el orden de generacin, j el orden de procesamiento y k el costo.


Figura 3.1: Bsqueda primero el mejor.
Realmente la bsqueda primero el mejor es una familia de mtodos de solucin de
problemas heursticos que se distinguen por su funcin objetivo.
La estrategia prefiere tomar el bocado ms grande del costo restante para alcanzar el
objetivo sin preocuparse de si ser el mejor. Por eso la bsqueda primero el mejor con
esta heurstica se denomina bsqueda golosa/avara (greedy search).
La bsqueda golosa frecuentemente trabaja bastante bien. Ella tiende a encontrar
soluciones rpidamente aunque no siempre encuentre la ptima como se mostr en el
ejemplo anterior. Esta bsqueda sufre de los mismos defectos que la bsqueda primero
en profundidad, no es optima y es incompleta. En el peor caso su complejidad en tiempo
es O(bm) donde m es la mxima profundidad del espacio de bsqueda. Como mantiene
todos los nodos en memoria su complejidad en espacio es la misma que respecto
al tiempo. Estas complejidades se reducen sustancialmente con una buena funcin
heurstica.
Los siguientes temas pueden ser tomados en cuenta dependiendo del profesor
Bsqueda A*

Pgina 58 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


La variante anterior minimiza el costo estimado al objetivo, h(n) y reduce el costo de
la bsqueda considerablemente, pero no es ni optima ni completa. Por otro lado, si
recordamos la bsqueda con costo uniforme estudiada antes, vemos que ella minimiza
el costo del camino hasta el nodo n desde el nodo inicial S, g(n); Ella es ptima y
completa pero puede ser muy ineficiente. Una buena alternativa es combinar ambas
estrategias para tomar sus ventajas. Eso puede hacerse simplemente combinando las dos
funciones de evaluacin mediante la suma, as se obtiene:
f(n) = g(n) + h(n)
Como g(n) da el costo del camino del nodo inicial al nodo n, y h(n) es el estimado del
costo del camino ms barato desde n hasta el nodo objetivo, entonces f(n) es el costo
estimado de la solucin ms barata a travs de n. Se puede probar que esta estrategia
es completa y ptima siempre que la funcin h nunca sobrestime el costo de alcanzar
el objetivo. En este caso h se denomina una heurstica admisible. Las heursticas
admisibles son por naturaleza optimistas porque ellas piensan que el costo de resolver el
problema es menor que lo que es realmente. Este optimismo se transfiere a la funcin f;
si h es admisible f(n) nunca sobrestimar el costo real de la mejor solucin a travs de n.
La bsqueda primero el mejor que usa f como funcin de evaluacin y una funcin h
admisible se conoce como bsqueda A*. La distancia area (equivalente a la distancia
en lnea recta entre dos puntos del mapa) es un ejemplo de heurstica admisible.
Algoritmo A*:
P1: Colocar el nodo inicial S en Open
P2: Si Open es vaco salir con fallo.
P3: Remover de Open y Colocar en Closed un nodo n para el cual f es mnimo.
P4: Si n es un nodo objetivo salir con xito con la solucin obtenida a partir de los
enlaces desde n hasta S.
P5: En otro caso expandir n generando todos sus sucesores, y asignndoles punteros
hacia n. Para todo sucesor n de n:
a. si n no est ni en open ni en closed estimar h(n) (un estimado del costo del
mejor camino desde n a algn nodo objetivo), y calcular
f(n) = g(n) + h(n) donde g(n) = g(n) + c(n,n) , y g(S) = 0
b. si n est en Open o Closed entonces dirigir sus apuntadores al camino que
produce el menor g(n)
c. si n requiri ajustar los apuntadores y fue encontrado sobre closed entonces
reabrirlo.
P6: Ir a P2.
Anlisis del algoritmo A*
La relacin de A* con las otras bsquedas es la siguiente:
A* con h = 0
Bsqueda de costo uniforme
A* con h = 0 y c(n,n) = 1 Bsqueda primero a lo ancho
A* con f(s) = 0 y f(n) = f(n) - 1
Bsqueda primero en profundidad
Otras consideraciones importantes acerca del algoritmo son:

Pgina 59 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


A* es ptimamente eficiente, ya que ningn otro algoritmo ptimo expande menos
nodos que A*.
La principal deficiencia de A*, y de cualquier algoritmo que usa el enfoque de bsqueda
primero el mejor, es su requerimiento de memoria. Usualmente se desborda en memoria
antes de desbordarse en tiempo.
Bsqueda A* iterativa en profundidad.
En la bsqueda A* iterativa en profundidad (Iterative Deepening A* Search, IDA*) se
combinan la formas de construir el rbol de bsqueda iterativa en profundidad con el
uso de la funcin heurstica del algoritmo A*, el valor de f sirve como lmite. En este
algoritmo cada iteracin es una bsqueda primero en profundidad como en la bsqueda
iterativa en profundidad. Pero se modifica usando un limite de costo para f en lugar de
un lmite de profundidad; es decir, en cada iteracin se expanden todos los nodos cuyo
costo sea menor que el lmite fijado. Cuando se completa una bsqueda para un lmite
dado se inicia una nueva iteracin usando un nuevo lmite. Justamente esta tcnica
resuelve el problema de requerimiento de memoria, elimina la restriccin de memoria
de A* sin sacrificar la optimalidad de la solucin.
Beneficios adicionales del algoritmo IDA* son que es mucho ms fcil de implementar
y frecuentemente corre ms rpido que A*. El IDA* fue el primer algoritmo de
esta familia que enfrento el problema de la complejidad respecto a la memoria. Su
requerimiento de memoria es lineal: O(d), donde d es la longitud de la solucin. Se han
realizado algunas versiones de este algoritmo, entre ellas la conocida como busqueda
primero el mejor recursiva de Richard E. Korf, la cual usan ligeramente mas memoria
(O(b*d)).
Algoritmo IDA*:
Function IDA*(problem) return a solution secuence
Inputs: problem, a problem
Statics: f-limit, the current f-COST limit
root, a node
root Make-Node(Initial-State[prblem])
loop do
solution, f-limit DFS- Contourn(root, f-limit)
if solution is non-null then return solution
if f-limit = then return failure;
end
function DFS-Contourn(node, f-limit) return a solution sequence and a new f-Cost
limit
Inputs: node, a node
f-limit, the current f-COST limit
Statics: next-f, the f-Cost limit for the next contour, initialy
if f-Cost[node] > f-limit then return null
if Goal-Test[problem](State[node]) then return node, f-limit
for each node s in Succesors(node) do
solution, new-f
DFS-Contour(s, f-limit)

Pgina 60 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


if solution is non-null then return solution, f-limit
next-f Min(next-f, new-f)
end
return null, next-f
Este algoritmo llamado IDA* es completo y ptimo, pero como es primero en
profundidad slo requiere un espacio proporcional al camino ms largo que el explora.
En la mayora de los casos b d es un buen estimado de los requerimientos de memoria.
El tiempo de complejidad en IDA* depende fuertemente del nmero de valores
diferentes que la funcin heurstica pueda tomar. Por ejemplo, la distancia Manhattan
usada como heurstica en el juego de las ocho piezas toman un pequeo nmero de
valores enteros, tpicamente f slo crece dos o tres veces a lo largo de cualquier camino
solucin Por eso, IDA* slo ejecuta dos o tres iteraciones. Su eficiencia es similar a
la de A*; en la ltima iteracin expande ms o menos la misma cantidad de nodos que
A* y no necesita insertar y eliminar nodos sobre una cola de prioridades. Soluciones
ptimas para muchos problemas prcticos fueron encontradas por primera vez por
IDA*, el cual fue por varios aos el nico algoritmo heurstico acotado en memoria.

3.3.4 Bsqueda Heurstica en Arboles AND/OR (AO*)


Los algoritmos para bsqueda primero a lo ancho y primero en profundidad en rboles
y/o son similares a los anteriormente estudiados, slo se diferencian en la verificacin
de las condiciones de terminacin. Cada vez que se genera un nodo o un grupo de
nodos, el algoritmo tiene que chequear si se satisfacen las condiciones de terminacin
de acuerdo al tipo de nodo, ya sea AND u OR (Y u O).

3.4 Ejercicios Propuestos


1- Sea el problema del mundo de bloques mostrado en la figura. Suponga que se tiene
definido el operador MOVER(x,y) donde x es un bloque y y puede ser un bloque o la
mesa.
a) Represente el espacio de estados.
b) Cul es el recorrido de la bsqueda primero en profundidad?
c) Cul es el recorrido de la bsqueda primero a lo ancho?

2- Trazar la ejecucin del procedimiento generar del enfoque guiado por datos cuando
se intenta determinar si N es divisible por 2 dadas las cuatro reglas mostradas y la B.D.
inicial que contiene los hechos: N es divisible por 10 y N es divisible por 12.
Reglas:
R1: Si X es divisible por 12, entonces X es divisible por 6.
R2: Si X es divisible por 20, entonces X es divisible por 10.

Pgina 61 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


R3: Si X es divisible por 6, entonces X es divisible por 2.
R4: Si X es divisible por 10, entonces X es divisible por 5.
Base de Datos
N es divisible por 10
N es divisible por 12

3- Trazar la ejecucin del procedimiento validar del enfoque guiado por objetivos
cuando se intenta determinar si N es divisible por 2 dadas las cuatro reglas mostradas
anteriormente y la B.D. inicial que contiene los hechos: N es divisible por 10 y N es
divisible por 12.
4. Represente el espacio de estados (usando un rbol de bsqueda). Recrralo usando
primero en profundidad y luego primero a lo ancho.

5- Consideremos el sistema tipo STRIPS al que se le proporciona el conjunto de


operadores siguientes:
PASAR-EXAMEN
Precondicin y Suprimir: IGUAL(grado, x)
Aadir: DORMIR-TARDE IGUAL(grado, x-10)
ESCRIBIR-ARTICULO
Precondicin: IGUAL(grado, x)
Suprimir: IGUAL(grado, x) DORMIR-TARDE
Aadir: IGUAL(grado, x + 50)
Tambin se tienen los siguientes axiomas acerca de su universo:
MAYOR(grado, 80) CAPAZ-DE-GRADUARSE
MENOR(grado, 80)
CAPAZ-DE-GRADUARSE
Supongamos que este sistema est intentando, dada la condicin inicial grado = 70,
satisfacer la meta DORMIR-TARDE CAPAZ-DE-GRADUARSE.

Pgina 62 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Unidad IV: Sistemas Basados en el Conocimiento


(Sistemas Expertos)
Objetivos:
Analizar la importancia de los sistemas basados en conocimientos como el
medio ms desarrollado y robusto de la Inteligencia Artificial.
Explicar como realizar la manipulacin del conocimiento especfico de un
determinado dominio.
Diferenciar los sistemas convencionales (que utilizan algoritmos) y los sistemas
basados en conocimiento para la solucin de problemas.

4.1 Definicin de Sistema Experto


Los S.E. son programas sofisticados de computacin que manipulan conocimientos de
expertos para resolver, eficiente y efectivamente, problemas de un rea especfica, tal
como lo hacen los expertos humanos. Ellos resuelven problemas de forma inteligente
y son capaces de explicar y justificar sus respuestas. Son creados para actuar como
asistentes inteligentes en los procesos de tomas de decisin.

4.2 La Base de Conocimiento


O B.C. es donde se almacena el conocimiento sobre algn dominio de aplicacin
mediante una FRC. Es el corazn del SE.

4.3 La Mquina de Inferencia


O MI, implementa algn mtodo de solucin de problemas (MSP), que manipula el
conocimiento almacenado en la BC, e informaciones sobre estados iniciales, estados
actuales de la solucin del problema, etc., las cuales procesan dinmicamente en una
estructura que se le llama base de datos (BD) o memoria de trabajo.

Pgina 63 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

4.4 Experticidad Humana y Artificial


Los expertos son personas que resuelven tipos especficos de problemas. Su habilidad
proviene, generalmente, de una vasta experiencia y de un conocimiento detallado,
especializado de los problemas que manejan. Se pueden citar como ejemplos los
mdicos especialistas, intrpretes de datos de satlite, ingenieros expertos que
diagnostican y reparan equipos de alta tecnologa, entre otros.
El conocimiento de un experto humano presenta dos aspectos:
Conocimiento formal o pblico: Est basado en las leyes conocidas de la

naturaleza, como por ejemplo las leyes de Newton, y en mtodos formales


de razonamiento. Este conocimiento est, usualmente, incluido en los libros
de texto relativos al tema y, como est formalizado, puede ser transferido a
otras personas con relativa facilidad.
Conocimiento informal o privado: Segn el juicio, la opinin o el criterio
del experto, consta de sugerencias y de clculos aproximados. Constituye
la parte ms importante del conocimiento de los expertos. Se presume
que el mejor experto es el que posee un conjunto ms rico de este tipo de
conocimiento.
La experticidad o pericia es, entonces, el conocimiento tanto pblico como privado
que existe en determinado campo y las habilidades conocidas para resolver problemas
dentro de ese campo. El conocimiento privado es el que diferencia a un experto de un
novato, pues este ltimo slo posee conocimiento pblico sobre dicho campo.
Al comparar la experticidad humana con la artificial nos damos cuenta que, a pesar de
las enormes ventajas de los expertos artificiales, todava existen aspectos en que no
superan a los humanos.
Experticidad Humana
Puede perderse pues la vida humana es
limitada
Impredecible por razones emocionales

Difcil de transferir, pues la educacin


humana es un proceso largo y costoso
Difcil de documentar
Costosa, pues los expertos humanos son
escasos
Se agota durante un trabajo intenso
Creativo e imaginario
Adaptable a las condiciones cambiantes

Espectro ancho, pues tiene en cuenta las


relaciones con el resto del mundo
Conocimiento con sentido comn

Experticidad Artificial
Permanente
Consistente pues no est relacionada con
el estado fsico o mental del S.E, ni
con la frecuencia de su uso
Fcil de transferir, bastara con copiar un
archivo en la computadora
Fcil de documentar
Relativamente barata, los S.E. son caros
para desarrollar pero de bajo costo para
operar
Puede trabajar las 24 horas del da
Sin inspiracin, se comporta de modo
rutinario
Se necesita ensearles todo el
conocimiento, pues las tcnicas de
aprendizaje automatizado no estn lo
suficientemente desarrolladas
Espectro estrecho, pues aslan el
problema
Conocimiento tcnico

Pgina 64 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Podemos concluir que los S.E. no sustituyen a los expertos, sino ms bien ayudan a
las personas a progresar, participando en actividades ms desafiantes intelectualmente,
por lo que el conocimiento contenido en un S.E. es una nueva fuente prctica de
conocimientos.

4.5 Programas Convencionales vs Sistemas Expertos


Los programas convencionales pueden ser divididos en: el algoritmo, el cual contiene
todo el conocimiento y los datos a los que se le aplica dicho algoritmo. La arquitectura
tpica de los S.E. es diferente. Ellos estn constituidos por el shell y la B.C.
Si un programa convencional necesita ser modificado para incluir nueva informacin,
entonces hay que examinar el programa completo hasta encontrar la lnea o bloque
donde se necesita insertar dicha informacin. Sin embargo, en los S.E. podemos realizar
estas modificaciones fcilmente, pues basta modificar la B.C. y no hay necesidad de
afectar la estructura del programa. Esta flexibilidad de los S.E. proporciona una mayor
eficiencia en la programacin y la comprensibilidad y precisamente, los distingue como
un modelo computacional nuevo.
Mientras los programas convencionales son usados para llevar a cabo una
predeterminada secuencia fija de instrucciones, sin tener en mente el fin o la meta
de su actividad, los S.E. tienen en mente la obtencin de ese fin. Los S.E. contienen
hechosy medios de utilizacin de sus hechos para alcanzar los fines. Adems la
habilidad para aprender nuevos conocimientos a partir de la experiencia puede ser
implementada en forma natural y efectiva por los S.E.

4.6 Requerimientos Para el Uso de los Sistemas Expertos


Para desarrollar un S.E. en un dominio de aplicacin concreto deben tenerse en cuenta
algunos requerimientos:
La solucin de las tareas en este dominio no requiere de sentido comn.
La solucin de las tareas slo requiere el empleo de habilidades
cognoscitivas, no fsicas.
Existen expertos genuinos en el dominio de aplicacin.
Los expertos pueden articular sus mtodos.
Las tareas en este dominio estn bien comprendidas pues, en caso contrario,
se necesita desarrollar previamente investigaciones bsicas para hallar las
soluciones.

4.7 Aplicaciones de los Sistemas Expertos


Son muchas las reas de aplicacin de los S.E. Entre ellas podemos mencionar:
Interpretacin: Inferir la descripcin de situaciones a partir de da-tos
sensoriales. Implica el anlisis de datos para determinar su significado.
Prediccin: Inferir las consecuencias de situaciones dadas.
Diagnstico: Inferir el mal funcionamiento de un sistema a partir de
observaciones.
Diseo: Configurar objetos bajo ciertas restricciones.
Planificacin: Determinar la secuencia ptima de operadores para
transformar un estado inicial en un estado final. La mayora de los sistemas
de planificacin actuales estn basados en el mtodo generar y comprobar.

Pgina 65 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Monitoreo: Comparar observaciones para detectar situaciones esperadas.


Implica el anlisis continuo de seales y la puesta en marcha de acciones y/o
alarmas segn proceda.
Instruccin: Controlar y actuar sobre el comportamiento del estudiante.
Control: Gobernar parcial o completamente el comportamiento de sistemas.
Algunos S.E. famosos son: MYCIN, desarrollado en la Universidad de Stanford en
1976; PROSPECTOR, creado por Richard Duda, Peter Hard y Rene Reboh en 1978;
R1, luego llamado XCON, AL/X, FEL-EXPERT, DIPMETER ADVISOR, entre otros.

4.8 Desarrollo de un Sistema Experto


Para el estudio de cmo desarrollar un S.E. es importante conocer los siguientes
conceptos:
Ingeniera del Conocimiento: Es la disciplina relacionada con la forma en que
se organizan, construyen y verifican las B.C. de un S.E.
Adquisicin del Conocimiento: Es el proceso de extraccin, codifica-cin y
verificacin del conocimiento de un experto humano. Si la F.R.C. usada por el
S.E. es la Regla de Produccin, la extraccin se refiere a la formulacin de las
reglas, la codificacin, a la escritura de las mismas en una determinada sintaxis
y la verificacin, al refinamiento de la B.C. La adquisicin del conocimiento es
conocida como el Cuello de Botella de las aplicaciones de los S.E.
Ingeniero de Conocimiento (I.C.): Es la persona responsabilizada con
desarrollar las tareas de la ingeniera del conocimiento. Debe ser capaz
de conocer y comprender los S.E., saber usar las herramientas para crear
los mismos, ser un buen programador en un lenguaje de I.A. y un hbil
entrevistador.

4.8.1 Etapas del Desarrollo


En la construccin de los S.E. es necesario seguir ciertos pasos en aras de lograr la
eficiencia del aseguramiento programtico y una mayor agilidad en la confeccin del
sistema en cuestin.
Estas etapas son:
Etapa de identificacin: En esta etapa se caracteriza el problema segn sus
aspectos ms relevantes.
Determinar los participantes y su papel.
Identificar el problema.
Identificar los recursos
Identificar el objetivo
Etapa de conceptualizacin: En esta etapa se definen explcitamente los
conceptos y relaciones claves identificados en la etapa anterior. Esta se
desarrolla mediante interacciones constantes entre el experto y el IC, y consume
gran cantidad de tiempo.
Etapa de formalizacin: En esta etapa se crea una representacin formal,
basada en las herramientas de la Ingeniera del Conocimiento, de todas las
caractersticas analizadas en la etapa anterior. En ella el I.C. desempea un
papel ms activo, explicndole al experto los instrumentos existentes y la forma
idnea para representar su problema. Como resultado de la misma se obtiene un
conjunto de especificaciones parciales que describen cmo el problema puede
representarse dentro de la herramienta seleccionada.
Pgina 66 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Etapa de implementacin: El conocimiento formalizado en la etapa previa se


lleva a la forma de representacin escogida, quedando conformada la B.C. Se
implementa adems el M.S.P seleccionado, especificando las estructuras de
datos, las reglas de inferencia y los mecanismos de control, construyndose un
programa ejecutable. Como resultado de esta etapa se obtiene un prototipo del
S.E., capaz de ser ejecutado y probado.
Etapa de prueba: Se evala el prototipo usando dos o tres ejemplos. Cuando
ste se ejecute correctamente con stos, se debe probar con una variedad de
casos, que incluyan tanto los ms comunes como las ms raros, para determinar
las debilidades de la B.C.: si se hacen preguntas inadecuadas o ambiguas, si la
entrada de los datos es poco amistosa, si las conclusiones son adecuadas, si la
salida tiene un nivel de detalle apropiado, si no hay errores en el razonamiento,
si no hay reglas incorrectas, incompletas o inconsistentes, si el mecanismo de
control usado es adecuado, o sea, si se escogen primero las reglas deseadas, etc.
Revisin del prototipo: Normalmente, el refinamiento del prototipo incluye
el reciclaje a travs de las etapas de implementacin y prueba para ajustar
las reglas y las estructuras de control. Esta etapa debe conducir a que el
razonamiento sea estable y el sistema eficiente. Aquellos aspectos que lo afecten
deben ser modificados.

4.8.2 Adquisicin del Conocimiento


La calidad de la B.C. tiene una importancia crucial para el buen comportamiento de un
S.E. Es por ello que debemos profundizar en las tcnicas empleadas para la adquisicin
del conocimiento.
Fuentes de adquisicin del conocimiento
El conocimiento necesario para el desarrollo de un S.E. se puede obtener desde diversas
fuentes, como libros, artculos, bases de datos, estudio de casos, datos empricos y la
experiencia personal de los expertos, siendo esta ltima la principal.
Secuencia de trabajo del Ingeniero del Conocimiento
En el desarrollo e implementacin del S.E., el I.C. debe realizar las tareas
correspondientes a las etapas explicadas anteriormente siguiendo un orden especfico
Determinacin de los conceptos y las relaciones entre ellos
Un aspecto importante es la determinacin de los conceptos y las relaciones que pueden
establecerse entre ellos, lo que consiste en los siguiente:
Determinar los conceptos primitivos: distinguir entre los objetos relevantes e

irrelevantes y agrupar a los relevantes en clases a las que llamamos categoras


semnticas.
Determinar los conceptos derivados y las relaciones que permiten definirlos:
una ves definidos los conceptos primitivos, debemos definir los conceptos
que podemos derivar de estos. A los mismos se les conoce como conceptos
derivados y se obtienen mediante reglas incluidas en la BC. Un ejemplo
de concepto derivado es el predicado acadmico, el cual se obtiene de las
categoras semnticas profesor y estudiante mediante la regla: si profesor (X)
estudiante(X), acadmico(X).

Pgina 67 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Analizar

las propiedades de las relaciones: simetra, transitividad,


antireflexividad y antisimetra, para crear nuevas reglas que permitan mantener
la integridad del conocimiento.

Automatizacin de la adquisicin del conocimiento


Desafortunadamente, hasta el momento, todo el trabajo mental del I.C. no puede ser
sustituido por un sistema automtico, pero existen herramientas que permiten facilitar el
trabajo creativo. Estas herramientas se dividen en tres grupos:
Herramientas de apoyo simples: editores de B.C., mdulos explicativos

especiales, subsistemas para la prueba automtica en los conjuntos de datos


reales, entre otros.
Medios para la extraccin efectiva del conocimiento del experto: Un ejemplo
es el sistema ETS, el cual ayuda al experto a formular el conocimiento
haciendo uso de las tcnicas de dilogo basadas en la teora psicoteraputica del
comportamiento personal.
Tcnicas de aprendizaje automatizado.

4.8.3 Estados en el Desarrollo de un Sistema Experto


En su desarrollo, el S.E. transita por cinco estados fundamentales:
Prototipo demostrativo: el sistema resuelve una porcin del problema y su
enfoque es adecuado. La B.C. contiene entre 50 y 100 reglas. Se alcanza en tres
meses.
Prototipo de investigacin: el sistema muestra resultados crebles sobre el
problema, pero no est totalmente probado y revisado. Su B.C. contiene entre
200 y 500 reglas y resuelve un gran nmero de casos. Requiere de uno a dos
aos de trabajo. La mayora de los S.E. llegan hasta este estado.
Prototipo de campo: el sistema muestra buenos resultados y ha sido
completamente revisado en el medio de trabajo del usuario. Su B.C. contiene de
500 a 1000 reglas. se alcanza a los dos o tres aos de trabajo. Slo algunos S.E.
llegan a este estado.
Modelo de produccin: el sistema exhibe alta calidad, confiabilidad, rapidez y
eficiencia en el medio de trabajo del usuario. Su B.C. contiene de 500 a 1500
reglas. Requiere de dos a cuatro aos de labor. Pocos S.E. alcanzan este estado.
Sistema comercial: el sistema se usa comercialmente. Este estado se alcanza al
cabo de 5 6 aos de desarrollo.

4.9 Tratamiento de la Incertidumbre


En el desarrollo de un proceso de razonamiento intervienen, al menos, tres elementos:
el conocimiento sobre el dominio de aplicacin, un mtodo para procesar este
conocimiento y ciertas observaciones vinculadas con el objeto de razonamiento. El
razonamiento con incertidumbre denota un proceso de razonamiento en el que alguno
de estos elementos no es totalmente preciso, o sea, el razonamiento se realiza sobre la
base de una informacin parcial y, por lo tanto, los resultados de ste son sugeridos pero
no asegurados por las premisas del mismo.
A diferencia de la I.A., el software algortmico tradicional no puede lidiar con
informacin incompleta. Si algn dato es incorrecto, la respuesta ser incorrecta.

4.9.1 Fuentes de la Incertidumbre


Pgina 68 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


La presencia de incertidumbre en los sistemas de razonamiento es causada por varias
fuentes, entre ellas se pueden mencionar:
Imprecisiones en la definicin de los conceptos y sus relaciones que integran

el conocimiento sobre el dominio de aplicacin. Ejemplo: en un S.P. se puede


ver como que las reglas de produccin son inciertas.
Imprecisiones y pobre seguridad de los instrumentos usados para hacer las
observaciones.
Imprecisiones del lenguaje de representacin en el cual se trasmite la
informacin. Ejemplo: la frase a menudo en la regla Si el motor de su
automvil se sobrecalienta, entonces, a menudo, no hay suficiente lquido
refrigerante en el sistema de enfriamiento.
Falta de idoneidad de un formalismo para representar cierta clase de
conocimiento.
Agregacin de informacin desde mltiples fuentes. Ejemplo: puede haber
una que no sea totalmente fiable como un profesor honesto pero despistado.
Falta de seguridad en si un elemento dado pertenece a un conjunto bien
definido, o en la pertenencia parcial de un elemento dado a un conjunto cuyas
cotas no estn definidas rigurosamente.
El mundo relevante es realmente aleatorio. Ejemplo: el movimiento de los
electrones en un tomo, la distribucin de personas que caern enfermas durante
una epidemia o la distribucin de las alturas de las personas.
El mundo relevante no es aleatorio dada la suficiente cantidad de datos, pero
nuestro programa no siempre tendr acceso a todos esos datos. Por ejemplo, la
probabilidad de xito de un medicamento para combatir una enfermedad en un
paciente concreto.

Durante el razonamiento, la incertidumbre proveniente de estas fuentes se combina


produciendo resultados parciales y finales que tienen su propia incertidumbre. A este
proceso se le llama propagacin de la incertidumbre.

4.9.2 Representacin de la Incertidumbre


Las aproximaciones existentes para la incertidumbre pueden ser divididas en dos
clases:
Representacin numrica: las representaciones numricas son propias para

representar y manipular la incertidumbre dada por la informacin imprecisa,


pues ellas permiten trabajar con valores de confidencia. Es posible, adems,
definir un clculo que ofrece un mecanismo para propagar la incertidumbre a
travs del proceso de razonamiento. Sin embargo, la representacin numrica
no puede ofrecer una explicacin clara de las razones que conducen a una
conclusin dada. Entre los enfoques numricos estn:
Regla de Bayes.
Regla de Bayes modificada.
Teora de la confirmacin.
Teora de Dempster-Shafer.
Espacio evidencia.
Teora de la necesidad y la posibilidad.
Valores lingsticos.

Pgina 69 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Representacin simblica: los modelos basados en este enfoque estn, en su

mayor parte, designados para manipular el aspecto de la incertidumbre derivado


de la informacin incompleta, pues, al carecer de medidas para cuantificar
los niveles de confidencia, son inadecuados para manipular la informacin
imprecisa y son ms apropiados para permitir seguir la traza desde las fuentes de
informacin a las conclusiones. Algunos de los enfoques simblicos son:
Suposiciones razonadas.
Lgica no monotnica.
Circunscripcin.
Enfoque monotnico.
Anlisis Bayesiano.
Conjuntos difusos y lgica difusa.
Teora de Cohen.

Pgina 70 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Unidad V: Programacin Lgica y Conchas Expertas


(Expert Shell)
Objetivos:
Utilizar la programacin lgica (PROLOG), como medio de programacin
existente usado en Inteligencia Artificial (Utilizando Visual Prolog 5.2 y las
nuevas versiones para ambiente totalmente grfico).
Utilizar la concha experta ESTA (Expert System Shell for Text Animation) para
implementar prcticamente los sistemas expertos.

5.1 Introduccin al PROLOG


Los lenguajes de la 4 generacin son imperativos (reciben rdenes), ejemplos: Pascal,
C. Los lenguajes de la 5 generacin son funcionales o declarativos, ejemplos: Lisp,
Prolog. Prolog es una abreviatura de "Programming in Logic".
En 1972 Colmovaur lo escribi en Fortran en una mquina IBM.
Posteriormente en Edimburgo se escribi en cdigo de mquina en una PDP.
>Valioso(oro).
Valioso es un predicado, Oro es el elemento (constantes en minsculas).
>Valioso.
Este predicado no tiene elementos, tiene aridad 0. Aridad es el nmero de argumentos
que tiene un predicado
Para esta unidad, haremos uso de Visual Prolog 5.2, en la actualidad existen otras
versiones ms recientes, que solo admiten prolog desde el medo ambiente visual, lo que
no permite un estudio del prolog tradicional, que es necesario aprender para despus
entrarle al medio ambiente visual.
Abra el programa VIP para empezar a trabajar.
El Application Expert (experto de aplicaciones)
El Experto de Aplicaciones es una herramienta que le ayuda a crear un proyecto Nuevo en
Visual Prolog, as como ayudarle a cambiar algunas configuraciones en le proyecto ms tarde.

Nombre del Proyecto (Project Name)


Un proyecto siempre debe tener un nombre. El nombre debe ser un nombre de archivo vlido y
tambin un nombre de predicado vlido en PROLOG.

Pgina 71 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Nombre del Archivo .VPR


Cada proyecto se almacena en un archivo de proyecto (con la extensin .VPR), el cual es
una base de datos externa de PROLOG, que contiene la descripcin de los componentes del
proyecto.

Directorio Base
El directorio donde el proyecto ser salvado (directorio de trabajo).
Seleccin de la Plataforma y Estrategia
Visual Prolog esta diseado para ser un sistema muy abierto, y acomoda muchas estrategias de
programacin. Hay tambin un gran nmero de combinaciones en las otras plataformas como
DOS, DOS extended code, NT y OS/2, usando BGI, SQL bindings etc. Adems, Visual Prolog
puede enlazar varios compiladores C con diferentes libreras y estrategias.

Plataformas
DOS
La seleccin DOS se usa para construir aplicaciones DOS en modo real. Esta configuracin
puede construir y compilar programas que son compatibles con los programas previos de PDC
Prolog y Turbo Prolog.

DOS Extendido
Esta configuracin require el uso de PharLap 286 DOS Extender. En este modo los programas
se pueden ejcutar bajo Dos en el modo protegido y usar toda la memoria extendida en la
computadora.

Windows 16
Esta configuracin se usa para construir aplicaciones que se ejecutan bajo la plataforma de
Microsoft Windows de 16 bits.

Windows 32
Con esta configuracin, es posible generar aplicaciones que se ejecutarn bajo Windows NT
r Windows 95. Las aplicaciones son verdaderos programas de 32 bits. La decisin de la UI va
desde VPI, EasyWin o Text mode.

OS/2 16 bit
Esta configuraci se usa para portar aplicaciones de PDC Prolog o Turbo Prolog modo texto
para que se ejcuten en el modo protegido de16 bits de OS/2.

OS/2 32 bits
Esta configuracin se usa para construir verdaderas aplicaciones de 32 bits para OS/2 PM.

Estrategias de UI (User Interface Interfase de usuario)


VPI
Esta es la estrategia preferida por Visual Prolog. El uso de VPI hace fcil la creacin de
aplicaciones con ventanas que se ejecutan bajo Windows 16, Windows 32 y OS/2 PM. El VDE
prove muchas herramientas para manejar el VPI, y el experto de cdigo asiste grandemente en
la creacin de las aplicaciones.

EasyWin
Si existe una aplicacin pequea, que no necesita alguna interfase de usuario otra que lneas
de texto con pauses para el teclado, la seleccin de EasyWin puede ser usada. EasyWin trabaja
bajo Windows 16, Windows 32 y OS/2 PM. Las aplicaciones de EasyWin se ejecutan como un
Windows real o aplicacin PM, pero nicamente readchar, readln, write, writef y el predicado

Pgina 72 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


nl pueden ser usados para la entradas y salida.

WINBIND (nicamente para Windows 16 bits)


La estrategia de WINBIND se usa para crear aplicaciones que van directamente al API de
Windows 16.

Modo Texto
Las aplicaciones de modo texto para DOS, DOS Extended 16 y OS/2 16 bits pueden usar el
sistema de ventanas de PDC Prolog. Para Windows 32 bits y OS/2 32 bits, el modo texto indica
aplicacionesetc.
que */
se ejecutan desde la lnea de comando del Sistema Operativo.

Generalmente,
un programa en Visual Prolog incluye cuatro secciones bsicas. Estas
subgoal_2,
subgoal_1,
BGI
son las secciones clauses, predicates, domains, y goal.
/* ...
Para las
selecciones
las plataformas
DOS ydeDOS
Extended 16enbits,
puede
usar laesinterfase
La
seccin de
clauses
es el corazn
un programa
visual
prolog;
donde
GOAL
grfica de
...
Borland.
*/
Esto
requiere
la
presencia
de
Borland
C++.
usted
pone los hechos y reglas sobre las que Visual Prolog operar tratando de
clusulas (reglas y hechos)
satisfacer
la meta del programa (goal). Una secuencia de clusulas definiendo un
/*
...
Otros
CLAUSES
predicado
se Otros,
llama no
un se
procedure
(procedimiento).
Cuando se...
selecciona
incluyen cabeceras
o bibliotecas predefinidas, en este caso es
*/
La
seccin
predicates
esque
donde
usted declara sus predicados y los dominios
responsabilidad
del usuario
lo
se necesite.
Declaraciones
de suplir
predicado
/* ...
(tipos)
de argumentos de sus predicados. (No necesita declarar los predicados
PREDICATES
... */
definidos
en de
Visual
5.2 Secciones
unProlog.)
Programa en PROLOG
Declaraciones de dominio
No
puede
usar
espacios,
el
menos,
asteriscos,
plecas,
u otro caracter no
Un programa
en Visual Prolog signo
tiene la
siguiente
estructura
bsica:
/* ...
DOMAINS
alfanumrico en los nombres de los predicados. Los caracteres validos para nombrar
en Visual Prolog consisten de lo siguiente:
Letras maysculas
: A, B, ... , Z
Letras minsculas
: a, b, ... , z
Dgitos
: 0, 1, ... , 9
Subguin
: _
La seccin domains es donde usted declara cualquier dominio que est usando
y que no es un dominio estndar de Visual Prolog. (No necesita declarar los
dominios estndar.)
La seccin goal es donde usted pone la meta de inicio para un programa en
visual prolog.
red = 4
slash_fill
Las
Global
Sections:
Visualusted
Prolog
le permite
que declare
algunos
dominios,
La seccin
es donde
declara
los hechos
que sern
incluidos
en la
= 4Facts
ega
= 3 dinmica
predicados
y clausulas
en su programa
como
global
(en
vez de local);
esto se
seccin
de
hechos.
La
palabra
clave
facts
es
sinnimo
de
database
pi
= 3.141592653
hace
(base disponiendo
de
datos). de secciones global domains, global predicates, y global
hundred
= (10*(10-1)+10)
two
=
2
facts
al inicio
de su programa.
La seccin
Constants
es donde usted declara las constantes en su programa de
one = 1
zero
Las
directivas
de
compilador:
Visual Prolog prove varias directives de
Visual
Prolog
= 0
CONSTANTS
compilador que se pueden aadir al programa para decirle al compilador que
trate el cdigo de una manera especfica.
La directiva include se usa para incluir en su programa algunos
procedimientos que se usan repetidamente. Por ejemplo puede crear
un archivo llamado miscosas.pro en el que declara predicados que usa
frecuentemente e incluirlos con : include miscosas.pro

5.3 El lenguaje y programacin en PROLOG


PROgramando en LOGica
En Prolog, usted llega a las soluciones infiriendo lgicamente algo a partir de algo que ya
es conocido. Tpicamente, un programa de Prolog no es una secuencia de accioneses una
coleccin de hechos junto con reglas para llegar a una conclusin a partir de esos hechos. Por lo
tanto Prolog es lo que se conoce como un lenguaje declarativo .

Pgina 73 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Prolog se basa en clusulas de Horn, que son un subconjunto de un sistema formal llamado
Lgica de Predicados. Prolog usa una variacin de la sintaxis de la lgica de predicados porque
provee una sintaxis fcil de comprender similar a la del lenguaje natural.
Prolog incluye una mquina de inferencia, la que es un proceso para el razonamiento lgico de
la informacin. La mquina de inferencia incluye un unificador de patrones, el que recupera la
informacin almacenada (conocida) unificando las respuestas con las preguntas.
La lgica de predicado fue desarrollada para expresar ideas basadas en la lgica en una forma
escrita. En la lgica de predicado, se eliminan todas las palabras innecesarias de las oraciones.
Entonces transforma la oracin, colocando la relacin primero y agrupando los objetos despus
de la relacin. Los objetos son los argumentos sobre los que la relacin acta. Por ejemplo, las
siguientes oraciones son transformadas a la sintaxis de la lgica de predicado:

Lenguaje Natural:

Lgica de Predicado:

Un carro es divertido.

Divertido(carro).

Una rosa es roja.


A Bill le gusta un carro si el
carro es divertido.

roja(rosa).
Gusta(bill, Carro) if divertido(Carro).

En prolog, a una relacin entre objetos se le llama Predicado.


En Prolog tenemos hechos, reglas, y preguntas. Las preguntas en el programa se hacen en la
seccin de meta (goal).
Un hecho es aquello que es conocido: divertido(carro).
Una regla es aquella que nos permite inferir hechos a partir de otros hechos. En otras palabras
es una conclusin. Una conclusin que se conoce como verdadera si otros conclusiones o
hechos son verdaderos. Ejemplo de regla:
A Mara le gusta todo lo que le gusta a Pedro

En la sintaxis de prolog:
Legusta(maria, algo):- legusta(pedro, algo)
El smbolo :- se pronuncia if (si).
Una pregunta es la que se formula sobre los hechos. Por ejemplo:
Le gusta a Juan Mara?
Se traducira como:

Pgina 74 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Legusta(Juan, maria)
Que se escribiria en la seccin de meta y prolog podra responder dependiendo de los
hechos yes (si).
Veamos el primer programa:
En file haga clic en nuevo, y se abre una ventana. En la ventana escriba:
goal write(Hola mundo!!!!),nl.
No olvide el punto final. Haga clic en la G o en test goal. El programa se compilar y se
ejecutar.
Ahora cree un proyecto nuevo, use la estrategia easywin con Windows 32, el nombre
del proyecto que sea gusta. En la ventana donde est gusta.pro haga clic y escriba lo
siguiente:

predicates
legusta()
nondeterm gusta(symbol,symbol)
clauses
legusta():-!.
gusta(maria,cocina).
gusta(maria, natacin)
gusta(pedro,futball).
gusta(marcos,baseball).
gusta(ernesto,natacion).
gusta(rosa,tenis).
gusta(roberto,Actividad):-gusta(marcos,Actividad).
goal
legusta(),gusta(roberto,baseball).
Ejectelo haciendo clic en la G o en test goal y obtendr la respuesta SI (Yes). Nota no
use Run para ejecutarlo.
Sugerencia: Cambie la meta con

gusta(X,Y) (Prolog responde con todas las posibles combinaciones)


gusta(X, Actividad)
gusta(maria,X)

El guin bajo es una variable annima:


Pruebe algo como: gusta(_,X).

Pgina 75 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Veamos el siguiente ejemplo (nombre de proyecto: valioso)


domains
elemento = symbol
predicates
valioso()
nondeterm esvalioso(elemento)
clauses
valioso():-!.
esvalioso(oro).
esvalioso(plata).
esvalioso(bronce).
goal
valioso(),esvalioso(X),nl.
Ejectelo de la misma manera que el anterior. La respuesta ser:
X=oro
X=plata
X=bronce
3 Solutions
Como X es una variable, Prolog lista todas las posibles soluciones. Ahora pregunte lo
siguiente cambiando la meta:
esvalioso(oro)
esvalioso(plata)
esvalioso(bronce)
esvalioso(hierro)
En adelante solo propondremos el nombre del programa y el anlisis, ya usted sabe
como implementarlo.
Programa: valioso2
Domains
elemento = symbol
Predicates
nondeterm valioso(elemento)
Clauses
valioso(X):-X=oro.
valioso(plata).
valioso(bronce).
Goal

Pgina 76 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Valioso2(),valioso(oro),nl.
La respuesta es Yes, pero trate ahora algo como valioso(plata) y el resultado ser No.
Esto es porque hay una regla que establece que algo es valioso si es oro (valioso(X):X=oro.)
Programa: juegan
domains
nio = symbol
predicates
juegan()
nondeterm nio(symbol)
juegan(nio,nio)

clauses
juegan():-!.
nio(a).
nio(b).
nio(c).
juegan(X,Y):-nio(X),nio(Y),X<>Y,write(X," juega vs. ",Y),nl,fail.
goal
juegan(),juegan(S,T).
Dentro de una declaracin como la anterior a X y a Y se les conocen como parmetros
formales. El punto y coma (;) representa un OR lgico. La coma (,) representa un AND
lgico. "nl" representa un cdigo de "nueva linea". "fail" es un predicado que siempre
falla. Con esto se obliga a Prolog a buscar una nueva meta. Con ello se evita el tener que
poner un punto y coma (;) para pedir que se busque una nueva meta.
Programa: barbero
domains
persona = symbol
predicates
barbero()
persona(symbol)
nondeterm rasura(persona,persona)
clauses
barbero():-!.
persona(barbero).
rasura(juan,juan).

Pgina 77 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


rasura(barbero,X):-not(rasura(X,X)).
goal
barbero(),rasura(X,juan).
El resultado es:
X=juan
1 Solution
Pruebe algo como: rasura(X,barbero). Ojo, quizs se quede sin memoria.
Recuerde: Prolog distingue entre maysculas y minsculas.
Programa: densidad
domains
pais = symbol
ext = integer
pob = integer
predicates
densidad()
pop(pais,pob)
area(pais,ext)
density(pais,real)
clauses
densidad():-!.
density(X,Y):-pop(X,P),area(X,A),Y=P/A.
pop(usa,203).
pop(india,548).
pop(china,800).
pop(brasil,108).
area(usa,3).
area(india,1).
area(china,4).
area(brasil,3).
goal
densidad(),density(china,X).
El resultado es:
X=200
1 Solution
Programa: escribe
predicates

Pgina 78 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

escribe()
escribir
nondeterm repeat
clauses
escribe():-!.
repeat.
repeat:-repeat.
escribir:-repeat,write("hola"),nl,fail.
goal
escribe(),escribir.
Ojo: Este programa implementa un lazo (bucle) que no tiene salida, salve todo lo
que tiene abierto en la comp., puede perderlo. Este proceso se estudia en detalle en la
siguiente seccin.
Programa: miembro
Domains
elem=symbol
lis_elem=symbol*
predicates
miembro()
nondeterm member(elem,lis_elem)
clauses
miembro():-!.
member(X,[X|_]).
member(X,[_|Y]):-member(X,Y).
goal
miembro(),member(a,[a,b,c]).
Este programa implementa la nica estructura de datos en Prolog, las listas. En la meta
le suplimos la lista de elementos, y le pedimos que nos diga si el primer elemento (a)
pertenece a la lista. Pruebe a preguntar si z pertenece a la lista.
Note que se usa el subguin en el programa, esto es lo que se conoce como variable
annima, se usa cuando el valor que tenga ese elemento no nos intersa.
Programa: imprimelista
Domains
lis_elem=symbol*
predicates
imprimelista()

Pgina 79 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


imprim_lis(lis_elem)
clauses
imprimelista():-!.
imprim_lis([]).
imprim_lis([X|Y]):-write(X),nl,imprim_lis(Y).
goal
imprimelista(),imprim_lis([a,b,c]).
El resultado es la impresin en pantalla de la lista que le suplimos a Prolog.
a
b
c
yes
Programa: verbo
Domains
Lista=string*
predicates
verbo()
pide_verbo
nondeterm encuentra_sufijo(string,string,integer)
nondeterm encuentra_prefijo(integer,string,string)
toma_elemento(lista,string)
conjuga(symbol,string,string)
clauses
verbo():-!.
toma_elemento([],_):-nl,!.
toma_elemento([Head|Tail],Prefijo):write(Prefijo,Head),nl,toma_elemento(Tail,Prefijo).
pide_verbo:-write("Dame un verbo regular "),readln(Verbo),
str_len(Verbo,LongVerbo),encuentra_sufijo(Verbo,Sufijo2,2),
Numpref=LongVerbo-2,encuentra_prefijo(Numpref,Verbo,Prefijo),!,
conjuga(preterito,Prefijo,Sufijo2),readchar(_),!,nl,
conjuga(presente,Prefijo,Sufijo2),readchar(_),!,nl,
conjuga(futuro,Prefijo,Sufijo2),readchar(_),!,nl,
pide_verbo.
pide_verbo.
encuentra_prefijo(Numero,Palabra,Prefijo):-frontstr(Numero,Palabra,Prefijo,_).
encuentra_prefijo(_,_,"").
encuentra_sufijo(Palabra,Sufijo,Cuantos):-str_len(Palabra,Longitud),

Pgina 80 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Longitud>=(Cuantos+1),PosInicial=Longitud-Cuantos,
frontstr(PosInicial,Palabra,_,Sufijo).
encuentra_sufijo(_,"",_).
conjuga(preterito,Prefijo,"ar"):toma_elemento(["","astes","","amos","asteis","aron"],Prefijo).
conjuga(presente,Prefijo,"ar"):toma_elemento(["o","as","a","amos","as","an"],Prefijo).
conjuga(futuro,Prefijo,"er"):toma_elemento(["o","es","e","emos","es","en"],Prefijo).
goal
verbo(),pide_verbo.
Este programa implementa la conjugacin de verbos regulares. El profesor de la clase
puede suplirle otros ejemplos a su discrecin.

5.4 Repeticin y Recursin


La gran utilidad de las computadoras viene del hecho de que son buenas para hacer la misma
cosa una y otra ves. Prolog puede expresar repeticin ya sea en sus procedimientos y en sus
estructuras de datos. La idea de una estructura de datos repetitiva puede sonar extraa, pero
Prolog le permite crear estructuras de datos cuyo tamao final no es conocido en el momento
que usted las crea. En esta seccin, discutiremos los procesos repetitivos primero (como lazos y
procedimientos repetitivos), despus cubriremos las estructuras de datos recursivas.

Procesos Repetitivos
Los programadores en Pascal, BASIC, o C que comienzan a usar Visual Prolog, generalmente
se sienten acongojados al descubrir que el lenguaje no tiene sentencias FOR, WHILE, or
REPEAT. No hay una manera directa para expresar la iteracin. Prolog le permite solo dos tipos
de repeticin retroceso, en el que se busca soluciones mltiples en una pregunta sencilla, y
recursin, en la que un procedimiento se llama a s mismo.
Sucede que esta falta no restringe el poder del lenguaje Prolog. De hecho, Visual Prolog
reconoce un caso especial de recursin llamado recursin de cola y lo compila en un lazo
iterativo en lenguaje mquina. Esto significa que aunque la lgica se expresa recursivamente, el
cdigo compilado es tan eficiente como lo sera en Pascal o BASIC.
En esta seccin, exploramos el arte de escribir procesos repetitivos en Prolog. Como usted ver,
la recursin es en la mayora de los casosms clara, ms lgica, y con menos tendencia
a error que los lazos que usan los lenguajes convencionales. Antes de entrar en la recursin,
echemos otro vistazo al retroceso.

Retroceso Revisitado
Cuando un procedimiento ejecuta el retroceso, busca otra solucin a la meta que ya ha sido
satisfecha. Hace esto regresando a la ms reciente submeta que tiene una alternativa que no ha
sido probada, usando esa alternativa, y entonces contina hacia adelante de nuevo. Usted puede
explotar el retroceso para llevar a cabo los procesos repetitivos.
Ejemplo

Pgina 81 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


write(X),
fail.
/*elEscribe
el valor
de X */
El print_countries:programa
ch06e01.pro demuestra como usar
retroceso
para lnea
llevar
a cabo procesos
country("Germany").
country("Denmark").
print_countries.
country(X),
nl,
/* Comienza
una nueva
*/
country("France").
El
predicado
country
simplemente
lista
los
nombres
de
varios
pases,
as
que una meta como la
repetitivos imprime todas las soluciones a una pregunta.
country("England").
siguiente
CLAUSES
/* Program ch06e01.pro */
print_countries
country(X)
nondeterm country(symbol)
tiene
soluciones mltiples. Entonces el predicado
PREDICATES
Se define
de la siguiente manera:
print_countries.
country(X), write(X), nl, fail.

print_countries imprime todas las soluciones.

La primera clusula dice:


print_countries :-

"Para imprimir los pases, encuentra una solucin para


empieza una nueva lnea, entonces falla."

country(X),

entonces escribe X y

En este caso, "fail" significa:


"asume que una solucin a la meta original no se ha alcanzado, as que retrocede y busca otra
alternativa."
El predicado interno fail siempre falla, pero usted podra igualmente haber forzado el retroceso
usando cualquier otra meta que fallara siempre, tal como 5 = 2 + 2 o country(shangri_la).
En la primera pasada, X se liga con england, lo que es impreso. Entonces cuando encuentra fail,
la computadora retrocede. No hay caminos alternativos para satisfacer nl o write(X), asi que la
computadora busca una solucin diferente para country(X).
La ltima vez que se ejecut country(X), lig un valor a la variable X que estaba previamente
libre. As que antes de reprobar este paso de nuevo, la computadora desliga X (la libera).
Entonces puede buscar soluciones alternativas para country(X) y ligar X a un valor diferente. Si
tiene xito, el proceso contina hacia delante de nuevo y el nombre de otro pas es impreso.
Eventualmente, la primera clusula se quedar sin alternativas. La nica esperanza entonces
es probar
otra clusula para el mismo predicado. De seguro, la ejecucin cae dentro de la
yes
Si
la
segunda
clusula
estuviera
la metadeprint_countries
terminara
fracaso,
y el
segunda
clusula,
la que no
tiene
xito sinall,
necesidad
continuar adelante.
En esteencamino
la meta
denmark
germany
mensaje
final
sera
no.
Aparte
de
eso,
la
salida
sera
la
misma.
print_countries termina con xito. La salida completa es
france
england

Ejercicio

Modifique ch06e01.pro de tal manera que


country tenga dos argumentos, name y population, y
solamente aquellos pases con poblaciones mayores que 10 millones (1e+7) sean impresos
Acciones Pre- y PostTpicamente, un programa que encuentra todas las soluciones a una meta tambin querra hacer
algo ante y despus. Por ejemplo, su programa podra
Imprimir Algunos lugares deliciosos para vivir son.....
Imprimir todas las soluciones para country(X).
Cerrar imprimiendo y quizs otros.
Note que print_countries, as como est definido en el ejemplo anterior, ya incluye clusulas
para imprimir todas las soluciones para country(X) y cerrar imprimiendo (potencialmente) un
mensaje final.
La primera clusula para print_countries corresponde al paso 2 e imprime todas las soluciones:
la segunda clusula corresponde al paso 3 y simplemente termina la meta con xito (porque la
primera clusula siempre falla).
write("And maybe others."), nl.
El
failpodra
en la primera clusula es importante asegura que, despus de ejecutar la primera
print_countries
Usted
fail. cambiar:-la segunda clusula en ch06e01.pro con
clusula,
nl,la computadora retroceda y pruebe la segunda clusula. Es tambin importante que el
print_countries :- write("And maybe others."), nl.
predicado
write y nlelno
generen
alternativas;
estrictamente hablando, la primera clusula prueba
lo que write(X),
implementa
paso
3 a como
se especific.
country(X),
todas
las
posibles
soluciones
antes
de
fallar.
print_countries
Pero
que hay del :paso 1? No hay razn por la que print_countries deba tener solo dos
fail.
nl,
clusulas. Puede tener tres, como lo siguiene:
write("Some delightful places to live are"),
print_countries :-

Pgina 82 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


print_countries
write(X),
fail.
:- others."),
Esta
estructura
tri-clausular
esincorrecto
ms un truco
unaeste
tcnica
establecida
de programacin.
print_countries,
nl.
write("And
maybe
No hay
nada esencialmente
aqu,que
pero
fastidioso
programador
hipottico Un
ha
country(X),
nl,
nl,
programador
fastidioso
podra
tratar
de
hacer
las
cosas
de
esta
manera:
cometido un error.
write("Some delightful places to live are"),
print_countries_with_captions :-

Ejercicio
No te quedes mirando figura que es lo incorrecto en este programa y arrglalo!
Ests en lo correcto el problema es que, de la manera que est escrito en el ltimo ejemplo,
print_countries fallar siempre, y print_countries_with_captions nunca ejecutar ninguna de
las submetas que le siguen. Como resultado, and maybe others, nunca ser impreso.
Para arreglar esto, todo lo que necesitas hacer es reestablecer la segunda clusula original para
print_countries:
print_countries.

a su posicin original. Si quieres que la meta print_countries_with_captions tenga xito, debe


tener al menos una clusula que no contenga fail.

Implementando el Retroceso con Lazos


El retroceso es un buen camino para obtener todas las soluciones alternativa para una meta. Pero
'\r',!.
/* Is it a carriage
return?
failel if
not */ para introducir
aunprograma
si Ctu= meta
no tienecomo
soluciones
puedes
usar
retroceso
El
2 muestra
trabajamltiples,
repeat. Latodava
regla typewriter
:- ... describe
un procedimiento
write(C),
repeticin.
Simplemente
define
el predicado
readchar(C),
/*los
Lee
un bi-clausular
character,
liga Chasta
con el
mismo*/
que
acepta
caracteres
del
teclado
y
imprime
en
la
pantalla
que
el
usuario
presiona la
repeat :- repeat.
repeat,a las estructuras de control de Prolog hacindole pensar que tiene un nmero
Esto
engaa
repeat.
tecla
Enter (Return).
typewriter:repeat:-repeat.
infinito
de soluciones diferentes. (No importa como despus de leer sobre recursin de cola,
repeat.trabaja como sigue:
typewriter
vers
como
trabaja esto.) El propsito de repeat es el de permitir el retroceso ad infinitum.
CLAUSES
typewriter
Ejecuta repeat (lo que no hace /*
nada).
repeat
Program ch06e02.pro */
PREDICATES
hasta que el usuario presione Enter. */
Entonces
lee un
caracter
y lo asigna
a la variable
C. e imprimirlos
/*
Usa repeat
para
mantenerse
aceptando
caracteres

Entonces escribe C.
Entonces checa si C es un retorno de carro.
Si lo es, has terminado. Si no, retrocede y busca otras alternativas. Ninguno ya sea write
tampoco readchar generan soluciones alternativas, as que retrocede todo el camino hasta
repeat, lo que siempre tiene soluciones alternativas.
Ahora el procesamiento puede seguir hacia delante de nuevo, leyendo otro carcter,
imprimindolo y checando si es un retorno de carro.
Note que C pierde su liga cuando usted retrocede ms all de readchar(C), lo que la ligaba. Este
tipo de desligado es vital cuando usted usa el retroceso para obtener soluciones alternativas para
una meta, pero hace difcil el uso del retroceso para cualquier otro propsito. La razn es que,
aunque el proceso del retroceso pueda repetir operaciones cualquier nmero de veces, no puede
recordar nada de una repeticin a la prxima. Todas las variables pierden su valor cuando
la ejecucin retrocede sobre los pasos que establecieron esos valores. No hay una manera
sencilla para que un lazo de repeticin mantenga un contador, un total, o cualquier otro registro
de su progreso.
Ejercicios
Modifique 2 de tal manera que, si el usuario presiona letras minsculas, sean mostradas
como letras maysculas.
Si usted quisiera jugar con E/S de archivos ahora, busque los predicados de Prolog
apropiados y escriba un programa que use un bucle repeat para copiar un archivo caracter
por caracter. (Refirase al captulo 12.)

Procedimientos Recursivos

Pgina 83 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


La otra manera de expresar repeticin es a travs de la recursin. Un procedimiento recursivo
es uno que se llama a si mismo. Los procedimientos recursivos no tienen problemas al guardar
los registros de su progreso porque los contadores, totales, y resultados intermedios pueden ser
pasados de una iteracin a la prxima como argumentos.
La lgica de la recursin es fcil de seguir si usted olvida, por el momento, como trabajan
las computadoras. (Prolog es tan diferente del lenguaje mquina que la ignorancia sobre las
computadoras es a menudo una ventaja para el programador de Prolog.) Olvide por el momento
que la computadora esta caminando a travs de las direcciones de memoria una por una, e
imagine que una mquina puede seguir recetas como la siguiente:
De
otra
manera,
encuentra
el factorial de N-1, despus multiplquelo por N.
Si encontrar
N es
1, Para
el
elfactorial
factorial
nmerode
N: 3, debes encontrar el factorial de 2, y, para
EstaPara
receta
dice:
encontraresde
el1.un
factorial
encontrar el factorial de 2, debes encontrar el factorial de 1. Afortunadamente, puedes encontrar
el factorial de 1 sin referirse a cualquier otro factorial, de tal manera que la repeticin no
FactX = X*FactY.
contine
siempre. Cuando
tienes el Realmente
factorial de 1, lo multiplicas por 2 para obtener el
Lo
quefactorial(Y,FactY),
lapor
Computadora
est Haciendo
factorial
de
2,
entonces
multiplicas
eso
por
obtener elpara
factorial
de 3,factorial
y has terminado.
Y=X-1,
FactX un
= X*FactY.
Pero
espere
minuto, es
dices.
Cmo hace 3lapara
computadora
ejecutar
mientras est
Un factorial(1,1):-!.
programa
completo
el siguiente:
factorial(X,FactX):factorial(Y,
FactY),
en
medio
la ejecucin de factorial? Si llamas a factorial con X=3, factorial se va a llamar
En
Visual
Prolog:
Y = de
X-1,
CLAUSES
/* Program ch06e03.pro */
aPREDICATES
sfactorial(unsigned,real)
mismo
con
X=2.
X entonces
dos valores, o el segundo valor borrar al primero, o
factorial(X,
FactX)
:factorial(1,
1) :-Tendr
!.
Recursin ordinaria,
no de cola. */
qu?
/* Programa recursivo para calcular factoriales.
La respuesta es que la computadora crea una nueva copia de factorial de tal manera que
factorial puede llamarse a s mismo como si fuera un procedimiento completamente separado.
El cdigo ejecutable no tiene que ser duplicado, por supuesto, pero los argumentos y las
variables internas si se duplican.
Esta informacin se almacena en un rea llamada stack frame (marco de pila), el cual es creado
cada ves que una regla es llamada. Cuando la regla termina, la pila se regresa a su estado inicial
(a menos que fuera un retorno no-determinstico) y la ejecucin contina en el marco de pila
para el padre.
Ventajas de la Recursin
La recursin tiene tres ventajas principales:
Puede expresar algoritmos que no pueden ser expresados convenientemente de cualquier otra
manera.
Es lgicamente ms simple que la iteracin.
Es usado extensivamente en el procesamiento de listas.
La recursin es el camino natural para describir cualquier problema que contenga en s mismo
otro problema del mismo tipo. Ejemplos incluyen bsqueda de rboles (un rbol esta hecho de
pequeos rboles) y sorteo recursivo (para sortear una lista, particinela, sortee las partes, y
luego pngalas juntas).
Lgicamente, los algoritmos recursivos pueden tener la estructura de una prueba matemtica
inductiva. El algoritmo factorial precedente, en el programa 3, describe un nmero infinito de
clculos diferentes por medio de solo dos clusulas. Esto hace fcil ver que las clusulas estn
correctas. Ms adelante, la exactitud de cada clusula puede ser juzgada independientemente de
la otra.

Optimizacin de la Recursin de Cola


La recursin tiene un gran problema: Se come la memoria. Cada ves que un procedimiento
llama a otro, el estado de ejecucin del procedimiento que llama debe salvarse de tal
manera que (el procedimiento que llama) pueda resumir en donde qued despus de que el
procedimiento llamado ha terminado. Esto significa que, si un procedimiento se llama a s
mismo 100 veces, se deben de almacenar 100 estados de ejecucin diferentes a la misma ves.
(El estado de ejecucin salvado se conoce como un marco de pila.) El tamao mximo de

Pgina 84 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


la pila en plataformas de 16 bits, tales como la IBM PC ejecutando DOS, es de 64 K, lo que
acomodara, a lo ms, 3000 o 4000 marcos de pila. En plataformas de 32 bits, la pila puede en
teora crecer a varios GigaBytes; aqu, otras limitaciones del sistema se dispondrn antes que la
pila se desborde. De cualquier manera, qu se puede hacer para evitar el uso de tanto espacio?
Sucede que hay un caso especial en el que un procedimiento puede llamarse a s mismo sin
almacenar su estado de ejecucin. Qu tal si el procedimiento que llama no va a resumir
despus de que el procedimiento llamado termine?
Suponga que el procedimiento que llama, llama a un procedimiento como su ltimo paso.
Cuando el procedimiento llamado termina, El procedimiento que llam no tiene nada ms que
hacer. Esto significa que el procedimiento que llama no tiene que salvar su estado de ejecucin,
porque esa informacin no es necesaria nunca ms. Tan pronto como el procedimiento
llamado termina, el control puede ir directamente a cualquiera que pudiera haber ido cuando el
procedimiento llamado termine.
Por ejemplo, suponga que el procedimiento A llama al procedimiento B, y B llama al
procedimiento C como su ltimo paso. Cuando B llama a C, B no va a hacer nadas ms. As
que, en ves de almacenar el estado actual de ejecucin para C bajo B, usted puede reemplazar el
estado viejo almacenado de B (el cual no se necesita ms) con el estado actual de C, realizando
los cambios apropiados en la informacin almacenada. Cuando C termina, piensa que fue
llamado directamente por A.
Ahora suponga que, en ves de llamar a C, el procedimiento B se llama el mismo como su
ltimo paso. La receta dice que, cuando B llama a B, el marco de pila para el B que llama
deber ser reemplazado por un marco de pila para el B llamado. Esta es una operacin
particularmente simple; solamente los argumentos necesitan ser asignados con nuevos valores,
y entonces el procesamiento salta de regreso al principio del procedimiento. As que, desde un
punto de vista procedimental, lo que sucede es muy similar a la actualizacin de las variables de
control en un bucle.
Esto es llamado optimizacin de recursin de cola, u optimizacin de ltima-llamada. Note que
por razones tcnicas, las funciones recursivas (predicados que retornan un valor, descrito en el
captulo 11) no pueden ser recursivas de cola.
Haciendo que la Recursin de Cola Trabaje
Qu es lo que significa el decir que un procedimiento llama a otro como su ltimo paso? En
Prolog, esto significa que
La llamada es la ltima submeta de una clusula.
No hay puntos de retroceso anteriores en la clusula.
count(NewN).
Este
es recursivo
de cola;ambas
se puede
llamar el mismo sin alocar un nuevo marco de
NewN = N+1,
Aquprocedimiento
tenemos
un ejemplo
que satisface
condiciones:
pila, dewrite(N),
tal maneranl,
que nunca se le acaba la memoria. Tal como el programa 4 muestra, si le das
count(N) :count(0).
la
meta
Ejercicio

nl,
count(0)
GOAL
count(NewN).
count
imprimir
enteros modifique
comenzando
contal0 manera
y nuncaque
termina.
los errores
de
Sin mirar
ms adelante,
4 de
no seaEventualmente,
recursivo de cola.
Cuantas
NewN = N+1,
redondeo
lo
harn
imprimir
nmeros
inexactos,
pero
nunca
parar.
iteraciones
puede ejecutar antes de que se le acabe la memoria? Pruebe y vea. (En plataformas
write('\r',N),
de count(N):32bit, esto tomar un largo considerable
tiempo, y*/lo ms seguro es que al programa
/* Program de
ch06e04.pro
CLAUSES
count(ulong)

no se le acabar el espacio de pila; l, o el sistema, terminar sin memoria en general. En las


PREDICATES
/* Tail recursive
that
never de
runs
out of memory
*/
plataformas
de 16bit, program
el nmero
posible
iteraciones
est directamente
relacionado con el
tamao de la pila.

Como no hacer Recursin de Cola


Ahora que has visto como hacer recursin de cola de manera correcta, el programa 5 te muestra
tres maneras de hacerlo incorrecto.
nl. que badcount1 se llama l mismo, un marco de pila debe ser salvado para que
Cada ves
Si
la
llamada
recursiva
el ltimo paso,
el procedimiento
no estiene
recursivo
de cola.elPor
badcount1(NewX),
el control
pueda
regresarnoal es
procedimiento
llamante,
el que todava
que ejecutar
nl
NewX
=
X+1,
ejemplo:
write('\r',X),
badcount1(X) :-

Pgina 85 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


badcount2(X):badcount3(X):NewX
= que
X+1,
/* check(Z):badcount3:
Predicado
llamado
que
la
llamada
recursiva.
final.
unas
cuantas
miles
deenllamadas
Al badcount3(NewX).
X
momento
<As
0,
que
se antes
hace
recursiva.
*/
badcount2(X):write("X
issolamente
negative.").
Hay
Z
una
>=
<
0.
0.
alternativa
quela
nollamada
ha
sido
probada
un */ recursivas pueden realizarse antes
write('\r',X),
check(NewX),
badcount2(NewX).
Hay
una
clusula
ha sido
probada
Note
que
badcount2
y no
badcount3
son peores que badcount1 porque generan puntos de
que el programa seque
quede
sin
memoria.
/*
badcount2:
nl.
retroceso.

badcount1(NewX),
Otra
manera
de perder
la
una antes
alternativa
probar
en el
write("X
negative.").
Aqu,
la
de recursin
badcount2dese cola
llamaesa dejar
s misma
que la sin
segunda
clusula
NewX
=primera
X+1, isclusula
momento
que
se
hace
la
llamada
recursiva.
Entonces
un
marco
de
pila
debe
ser
salvado
X
<
0,
Cortes
al
Rescate
write('\r',X),
haya
sido probada.
De nuevo, el programa se queda sin memoria despus de un cierto
:- si la llamada recursiva falla, el procedimiento llamante pueda regresar y
debadcount2(X)
talbadcount2(NewX).
manera
que,
badcount1(X):La
llamada
recursiva
no es el
paso. garantizar
*/
nmero
de
llamadas.
Hasta
ahora,
usted
puede
pensar
queltimo
es imposible
que un procedimiento sea recursivo
NewX
= X+1,
probar
laque
alternativa.
Por ejemplo:
/* badcount1:
check(Z)
:Z
<
0.
Suponga
X
es
positiva,
como
normalmente
es.
Entonces,
cuando badcount3
se submeta
llama l
de
cola.
Despus
de
todo,
es
bastante
fcil
poner
la
llamada
recursiva
en laelltima
write('\r',X),
CLAUSES
Lacheck(Z)
alternativa
probada
no
necesita
estar
en una
clusula
separada
para
procedimiento
check(long)
:- no
Z:>=
0.
badcount2(X)
badcount3(NewX).
mismo,
la
primera
clusula
de
check
ha
tenido
xito,
pero
la
segunda
clusula
de
check
no
de badcount3(long)
larecursivo
ltima clusula,
pero cmo
garantizas
que noenhay
alternativas
en alguno
los otros
mismo.
Podra
bienque
ser
una alternativa
alguna
otra una
clusula
que
llamada.
Por
check(NewX),
ha
sido
probada
todava.
As
badcount3
tiene
que
preservar
copia
de
su
marco
de
badcount2(long)
procedimientos
llama?
NewX =que
X+1,
ejemplo:
badcount1(long)
pila enwrite('\r',X),
orden de regresar y probar la otra clusula de check si la llamada recursiva falla.
PREDICATES
Afortunadamente,
*/
badcount3(X)no
:-necesitas hacerlo. El corte !) te permite descartar cualquier alternativa
/* Program
*/ sistema significantemente.
de
memoria
y
posiblemente
reduciendo
el ch06e05.pro
desempeo
del
que pueda
existir. Necesitars usar
la directiva
del compilador
check_determ para guiarte en la
cutcount3(NewX).
se
ejecutarn
por
un
tiempo
considerable,
ocupando
grandes
cantidades
Dejando
como
estaba.
!, check
disposicin
de
los
cortes.
(Directivas
de
Compilador
son
descrita
en el captulo 17.)
/* En check(NewX),
arquitecturas de 32bit, como en UNIX '386, estos ejemplos
El
corte
significa
"quema aloscomo
puentes
de ti "suo,nombre
con ms
NewX
= X+1,
Puedes
arreglar
badcount3
siguedetrs
(cambiando
en precisin,
el proceso):"una vez que has
write('\r',X),
alcanzado
este punto, ignora clusulas alternativas para este predicado y soluciones alternas
:paracutcount3(X)
submetas anteriores
dentro de esta clusula." Precisamente eso es lo que necesitas. Porque
las alternativas son sacadas del juego, no se necesita marco de pila y la llamada recursiva puede
write("X
is negative.").
continuar
inexorablemente
hacia lo
adelante.
En un corte
se trata de decidir
que se quiere. Dispones un corte dondequiera que puedas
cutcount2(X)
:cutcount2(NewX).

ver
no-determinstico
y decir
Adelante!"
dondequiera
sea obvio
esas
Un cdigo
corte
igualmente
efectivo
en "!S!
badcount2,
al negar
y mover laque
prueba
de la que
segunda
NewXes=
X+1,
write('\r',X),
alternativas
no
son
de
inters.
En
la
versin
original
del
ejemplo
anterior,
que
trata
de
ilustrar
clusula a la primera:
X >= 0, !,
unacutcount2(X)
situacin
en :donde usted tiene que decidir algo sobre X (la prueba X < 0 en la segunda
clusula),
la
segunda
clusula tiene que retener una opcin debido a que el cdigo en la primera
check(Z):-Z < 0.
Desdichadamente,
los
cortes nolaayudaran
badcount1,
cuyay necesidad
de pila
clusula
no
prob
X.
Moviendo
prueba acon
la primera
clusula
negndola,de
se marcos
puede alcanzar
check(Z):-Z
>=
0.
cutcount3(NewX).
no
ver ycon
alternativas
no en
probadas.
El nico
modo
badcount1
seraXreunatiene
decisin
disponer
un corte
conformidad:
"Ahora
sde
quemejorar
no quiero
escribir que
es
!, que all
check(NewX),
arreglar
la computacin de tal manera que la llamada recursiva venga al final de la clusula.
negativa.".
NewX = X+1,

write('\r',X),
Lo mismo
aplica para cutcount3. El predicado check ilustra una situacin en donde quieres
cutcount3(X):Usando
Argumentos
como
Bucle
Clusula
llamada antes que
la llamada
recursiva.
*/
realizar
procesamiento
adicional
de Variables
X, basado
en de
su signo.
Sin embargo, el cdigo para check
Hay una alternativa no probada en una
es,
en
este
caso
para
ilustracin,
no-determinstico,
y
el
corte
de la llamada
l se tratay
/*
cutcount3:
Ahora
que ha dominado
la recursin de cola, Qu puededespus
hacer acerca
de las avariables
write("X
is negative.").
de
que
te
decidas.
Despus
de
la
llamada
a
check,
puedes
decir
"!S!
Adelante!".
Sin
embargo,
cutcount2(_):contadores?
Para responder esa pregunta, haremos un poco de traduccin de Pascal-a-Prolog,
cutcount2(NewX).
lo anterior
artificial con
probablemente
podra ser
correctode
para
check ser
NewX es
=que
Xligeramente
+estas
1, familiarizado
asumiendo
Pascal. En general,
losms
resultados
traducciones
write('\r',X),
determinstico:
directas
entre
lenguajes,
ya
sean
naturales
o
de
programacin,
son
pobres.
Lo
que
sigue no
X>=0,!,
check(Z)
:- Z < 0, ... %processing using Z
Y, como
la
prueba
en
la
segunda
clusula
de
check
es
la
negacin
perfecta
de
la
prueba
en la
est
tan
mal
y
sirve
como
una
ilustracin
razonable
de
programacin
estrictamente
imperativa
cutcount2(X)::- llamada
Z >= 0, recursiva.
!, ... % processing
using Z
al momento que check(Z)
se hace la
*/
primera,
check
puede
ser reescrito
como:
Hay
una
clusula
que
no
ha sido
probada
en
Prolog,
pero
no
debes
nunca
escribir
programas
Prolog
usando
traduccin
ciega
de
otro
check(Z) :- ... % processing using Z
/*
cutcount2:
Cuando
se
ejecuta
un
corte,
la
computadora
asume
que
no
hay
alternatives
sin
probart
y
no
crea
lenguaje.
Prolog es check(Z)
un lenguaje
y expresivo,using
y programas
escritos propiamente en
:- muy
Z >= poderoso
0, !, % processing
Z
CLAUSES
nondeterm
check(long)
un
marco
de pila.
El
programa
6 contiene versiones
modificadas
de badcount2
y badcount3:
Prolog
mostrarn
un
estilo
de
programacin
y
enfoque
del
problema
totalmente
diferente de lo
cutcount3(long)
quecutcount2(long)
programas en otros lenguajes hacen.
/* Program ch06e06.pro */
PREDICATES
descartar las clusulas no probadas. Estas versions son recursivas de cola. */
En
la seccin
"Recursin",
desarrollamos
unarreglados
procedimiento
recursivo
/* Muestra
como de
badcount2
y badcount3
pueden ser
aadiendo
cortespara
para calcular
FactN :=en
P;esta seccin desarrollaremos uno iterativo. En Pascal, as sera:
factoriales;
=
Si no
ests
familiarizado
conP*I;
Pascal, el :- es la asignacin, lee a como "llegue". Hay cuatro
forFactN
I :=
1 P.
to N a
doesto
P :=
Echemos
un
con ms detalles.
I >
N,vistazo
P :=
1;
variables
aqu.
N
es
el
nmero
cuyo
factorial ser calculado; FactN es el resultado del clculo;
factorial_aux(N,
FactN,
I, NewI,
P) :- NewP).
FactN,
factorial
tiene
como
argumentos
solemente
; sonensus
entradas
y salidas,
ILaesclusula
la factorial_aux(N,
variable
de
bucle,
contando
desde
1 hasta
N; y PNesy laFactN
variable
la que
el producto
se
NewI = I + 1,
desde
un Un
punto
vista e alguien
que loen
est
usando
paracombinar
un factorial.
Una
segunda
clusula,
acumula.
ms eficiente
Pascal
podra
FactN
y P,
pero en
Prolog
NewP
= programador
P *deI,
FactN
:=fastidiosamente
P;
/* Return
*/
<=
N,!,
factorial_aux(N,
FactN,
I,
P)
es la quederealiza
recursin;
susresult
cuatro
paga
elIend;
ser
ordenado.
El siguiente
programa
muestra
la ,traduccin
Prologlaconstruida
a partir
de esteargumentos
bucle whileson
en
factorial_aux(N,FactN,I,P):factorial_aux(N,FactN,1,1).
las
cuatro
variables
que
necesitan
ser
pasadas
de
cada
paso
al
siguiente.
As
que factorial
I := I+1
Pascal.
factorial(N,
El primer
paso P*I;
al FactN):traducir esto en Prolog es reemplazar el for
con unaPsimple
sentencia de bucle,
P :=invoca
/* Update
I */iniciales para I y
simplemente
factorial_aux, pasndole N y FactN, junto
con los and
valores
CLAUSES
/* factorial_aux(unsigned,long,unsigned,long)
Numbers
to become
large
declared
as longs.
/* are
Program
ch06e07.pro
*/ */
haciendo
lo likely
que le sucede
a I en
cada
paso
ms
explicito.
He
aqu el algoritmo refundido como
begin
P, de
esta Imanera:
while
<= N do
/* Loop test */
factorial(unsigned,long)
factorial_aux(N,
FactN, 1, 1).
un bucle
while:
De
manera
I y PFactN)
se inicializan.
Iesta
:=
1;
PREDICATES
factorial(N,
:P := 1;
/* Initialize P and I */

Cmo puede factorial "pasar" FactN? Ni siquiera tiene un valor todava! La respuesta
es que, conceptualmente, todo lo que Visual Prolog est haciendo es unificar una variable
llamada FactN en una clusula con una variable llamada FactN en otra clusula. La misma
cosa suceder dondequiera que factorial_aux pase FactN a l mismo como un argumento
en una llamada recursiva. Eventualmente, el ltimo FactN tendr un valor, y, cuando esto
suceda, todos los otros FactN's, que han sido unificados con el, tendrn el mismo valor.
Dijimos "conceptualmente" arriba, porque en realidad slo hay un FactN. Visual Prolog puede

Pgina 86 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


determinar a partir del cdigo fuente que FactN realmente nunca es usado antes de la segunda
clusula para factorial_aux, y justamente baraja el mismo FactN alrededor todo el tiempo.
Ahora para factorial_aux. Ordinariamente, este predicado checar que I es menor o igual a
Nla condicin para continuar el bucle y entonces se llamar l mismo recursivamente con
nuevos valores para I y P. Aqu otra peculiaridad de Prolog hace valer sus derechos. En Prolog
no hay una sentencia de asignacin tal como
P = P + 1

lo que es encontrado en la mayora de los otros lenguajes de programacin. No puedes cambiar


el valor de una variable en Prolog. En Prolog, lo anterior es un absurdo como lo es en lgebra,
y fallar.
En su lugar necesitas
unaNewP).
variable nueva y expresar algo como
factorial_aux(N,
FactN,crear
NewI,
Como NewI
en cutcount2,
el corte habilita que se lleve a efecto la optimizacin de la ltima-llamada,
= I+1,
NewP
= P= +P*I,
1
NewP
aunque
lala
clusula
est en el ltimo predicado.
He aqu
primera no
clusula:
I <= N, !,

factorial_aux(N,
FactN,
I,Cuando
P) :- lo haga, el procesamiento deber unificar el valor actual
Eventualmente
I exceder
a N.
de P con FactN y parar la recursin. Esto se hace en la segunda clusula, que sera alcanzada
FactN
= P. I <= N en la primera clusula falle:
cuando
la prueba
Pero no
I >hay
N, necesidad para FactN = P de estar en un paso separado; la unificacin se puede
factorial_aux(N,
FactN,
I, P) :llevar
a cabo en la lista
de argumentos.
Poniendo el mismo nombre de variable en la posicin
ocupada por FactN y P requiere que los argumentos en estas posiciones sean igualados uno
con el otro. An ms, la prueba I > N es redundante desde que se ha probado lo opuesto en la
factorial(N, FactN, NewI, NewP).
primera
clusula.
Esto nos da la clusula final:
Cargue
NewP y= ejecute
P*NewI,este programa. Cuidadosamente observe el cdigo en la segunda clusula
= I+1, Toma
de NewI
factorial/4.
ventaja
del hecho de que la primera vez que se llama la variable
factorial_aux(_,
FactN,
_, FactN).
Ejercicios
factorial(N,FactN,I,P):contador
I
siempre
tiene
el
valor
1. Esto permite que el paso de la multiplicacin sea
factorial(N,FactN,N,FactN):-!.
factorial(N,FactN,1,1).
acarriado
con
la
variable
contador
NewI
incrementada
Lo
siguiente
es
una
versin
ms
elegante
de factorial. en vez de I, salvando una recursin/
10
1024
factorial(N,FactN):Hgalo que
pare
en
10 como
selamuestra
aqu.
...
...
iteracin.
Esto
es
reflejado
en
primera
clusula.
CLAUSES
/* factorial(unsigned,real,unsigned,real)
Nmeros que pueden llegar a ser
grandes ch06e08.pro
se declaran */
como reales. */
/* Program
4
16
Escribe
un
programa
recursivo
de
cola
que
acepte
un
nmero
como2 entrada
pueda
terminar en
factorial(unsigned,real)
3
8
Escribe un programa recursivo de cola que se comporte como
pero queyno
use retroceso.
PREDICATES
4
cualquiera de2 las dos maneras.
Comenzar multiplicando el nmero por s mismo una y otra vez
1 programa2recursivo que imprima una tabla de potencias de 2, como esto:
hastaEscribe
que yaun
sea alcance
------81 o alcance un nmero mayor que 100. Si alcanza 81, imprimir yes;
si excede 100,
N imprimir
2^Nno.

Estructura de Datos Recursivas


No solo las reglas pueden ser recursivas; tambin las estructuras de datos. Prolog es el nico
programa ampliamente usado que permite definir tipos de datos recursivos. Un tipo de datos es
recursivo si permite que las estructuras contengan otra otras estructuras como ellas mismas.

El tipo de datos recursivo ms bsico es la lista, aunque no parezca construida de


manera recursiva inmediatamente. Un gran poder procesamiento de lista est incluido
en Prolog, pero no lo discutiremos aqu; las listas son una parte tan importante de
Prolog que hay un captulo entero dedicado a ellas, el captulo 7.
En este captulo, inventamos un tipo de datos recursivo, lo implementamos, y lo usamos para
escribir un programa de sorte (ordenamiento) muy rpido. La estructura de este tipo de datos
recursivo inventado es un rbol (Figura 6.1). Crucialmente, cada rama del rbol es un rbol
mismo; es por eso que la estructura es recursiva.

Figura 6.1: Parte de un rbol familiar

rboles como una Estructura de Datos

Pgina 87 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Los tipos recursivos fueron popularizado por Niklaus Wirth en Algorithms + Data Structures =
Programs. Wirth deriv Pascal de ALGOL60 y public este trabajo en al principio de los 70's.
El no implement
los tipos de datos recursivos en Pascal, pero discuti lo que sera tenerlos. Si
end;
Este
traducido
altree
lenguaje
natural,
significa
rbol
de un
nombre, que es
left,
right:
Pascalcdigo,
tuviera
tipos
recursivos,
podras
definir
un rbol"Un
como
algoconsiste
semejante
a esto:
string[80];izquierdo y derecho, que son rboles."
una cadena,name:
y
los
subrboles
end;
tree
= record
Notlacorrect
Pascal! */
Pero
note
una diferencia
sutil: Este cdigo trata /*con
representacin
en memoria de un
left,
right: treeptr
Lo
ms
cerca
de
esto
en
Pascal
es
usar
punteros
y
decir
name:
string[80];
rbol, no la estructura del rbol mismo. Trata el rbol como que consiste de celdas, cada una
tree
= record
treeptr
=algn
^tree;
conteniendo
dato mas punteros a dos o ms celdas.
Visual Prolog permite verdaderas definiciones de tipos recursivos en los que los punteros son
creados y mantenidos automticamente. Por ejemplo, puedes definir un rbol como sigue:
treetype = tree(string, treetype, treetype)
EstaDOMAINS
declaracin dice que un rbol ser escrito como el functor, tree, cuyos argumentos son una
cadena y dos rboles ms.
Pero esto no est completamente correcto; no provee una manera para finalizar la recursin,
y, en la vida real, el rbol no contina por siempre. Algunas celdas no tienen enlaces a ms
rboles. En Pascal, podras expresar esto disponiendo algunos punteros iguales al valor
especial nil, pero los punteros son un asunto de implementacin que ordinariamente no sale a
la superficie en el cdigo fuente en Prolog. Ms bien, en Prolog definimos dos tipos de rboles:
los ordinarios y los vacos. Esto se hace permitiendo que un rbol tenga cualquiera de los dos
functors: tree, con tres argumentos, o empty, sin argumentos.
treetype = tree(string, treetype, treetype) ; empty
Note
que lostree("Eleanor",
nombres tree (unempty,
functor
que toma tres argumentos) y empty (un functor que no
DOMAINS
empty)))
Se
haarguementos)
indentado
aqu
mejorar
la programador;
lectura, pero ninguno
Prolog no
indentacin,
tampoco
toma
sonpara
creados
por
el
derequiere
ellos tiene
un significado
pretree("Jim",
empty,
empty)
tree("Melody"
se
indentan
los rboles
cuando
los imprimes
normalente.
Otra manera de arreglar la misma
definido
en Prolog.
Podras
igualmente
haber usado
xxx y yyy.
empty, empty))
tree("Melody",
tree("Jim",
empty, empty), tree("Eleanor", empty, empty)))
estructura
detree("Hazel",
datos
Note
esta
eses:
una
clusula
Prolog;
es
solamente
estructuraendeProlog:
datos
compleja.
tree("Charles",
empty,
empty)
tree("Michael",
empty,
empty),
empty,
empty))
As esque
como
elno
rbol
de tree("Charles",
la
figura
6.1 pdra
aparecer
en una
un tree("Hazel",
programa
tree("Michael"
tree("Cathy"
tree("Cathy",

Recorriendo un Arbol
Antes de entrar en la discusin de cmo crear rboles, primero considera lo que haras con un
rbol una vez que lo tengas. Una de las operaciones de rbol ms frecuente es la de examinar
todas las celdas y procesarlas de alguna manera, ya sea buscando un valor particular o
colectando todos los valores. Esto es conocido como recorrido del rbol. Un algoritmo bsico
para hacerlo es el siguiente:
Si el rbol est vaco, no hagas nada.
De otra manera, procesa el nodo actual, entonces recorre el subrbol izquierdo, luego recorre
el subrbol derecho.
Como el rbol mismo, el algoritmo es recursivo: trata los subrboles izquierdo y derecho
traverse(Z).
tree("Eleanor",
empty, empty)))).
exactamente
como
el rbol
original.
lo expresa
con dosque
clusulas,
una para
rboles
La bsqueda
de
primera
profundidad
esProlog
muy similar
a la manera
Prolog busca
una base
de
traverse(Y),
tree("Jim",
empty, empty),
vacos
y
una
para
no
vacos:
do something
with X,
tree("Melody",
conocimiento,
arreglando
las
clusula
en
un
rbol
y
siguiendo
cada
rama
hasta
que
una
pregunta
...
:- propsito
tree("Hazel",
empty,
empty)),
traverse(empty).
nothing
*/clusulas
Estotraverse(tree(X,
es
preferible
si Y,
el Z))
nico
es el de
expresar
unaderelacin
entre
los
falle.
Si lo
quisieras,
podras
describie
un del
rbolrbol
por medio
de /*
un do
conjunto
Prolog
mother_of("Michael",
"Hazel").
tree("Charles",
empty,
empty), Profundidad del rbol de la figura 6.1
Figura
6.2:
Recorrido
de
Primera
father_of("Michael",
"Charles").
individuos.
Pero
este
tipo
de
descripcim
hace
imposible
tratar
el
rbol
completo
como
una
como estas: tree("Michael",
mother_of("Cathy",
"Melody").
traverse(tree("Cathy",
nica
estructura de datos
compleja; como veras, las estructuras de datos complejas son muy
father_of("Cathy", "Michael").
GOAL
traverse(Right).
tiles porque
simplifican las tareas computacionales difciles.
Este algoritmo
de recorrido de rbol se conoce como bsqueda de primera profundidad (orden
traverse(Left),
write(Name,'\n'),
Eleanor
previo)
porque
llega tanfcilmente
lejos comoadaptar
sea posible
hacia debajo
ramaalguna
antes de
y
Creando
un rbol
Portraverse(tree(Name,Left,Right)):supuesto,
podras
el programa
para de
quecada
realice
otraretroceder
operacin
Jim
traverse(empty).
probar
otra
rama
(Figura
6.2).
Para
verlo
en
accin,
mira
el
programa
9,
el
cual
recorre
un
rbol
Melody
sobre
los elementos,
en
dees
imprimirlos.
CLAUSES
Una
manera
de crear
unvez
rbo
la devaescribir
una estructura
de las
functors
traverse(treetype)
ePREDICATES
imprime
todos
los elementos
que
encontrando.
Dado elanidada
rbol en
figurasy argumentos,
6.1 y 6.2, 9
Hazel
treetype
= tree(string,
treetype,
treetype)
; empty()
/* Program
ch06e09.pro
*/ embargo, Prolog crea rboles por
com
en el ejemplo
anterior (Programa
9).
Ordinariamente,
sin
Charles
imprime
DOMAINS
Michael
e imprimiendo
elemento
se va
computacin.
En cadacada
paso,
un rbolque
vaco
es encontrando
reemplazado */
por un rbol no vaco a travs del
Cathy
/*
Recorriendo un rbol con la bsqueda de primera profundidad
proceso
de unificacin de Prolog (igualacin de argumentos).
La creacin de un rbol de una celda a partir de una tem de dato es trivial:
create_tree(N, tree(N, empty, empty)).

Esto dice: "Si N es un item de dato, entonces


que lo contiene."

tree(N, empty, empty)

Pgina 88 de 119

es un rbol de una celda

Inteligencia Artificial Compilado por Ing. Irving Gngora


write(Ca3,'\n').
/*
...then
link
them
up...
*/
create_tree("Cathy",Ca),
insert_left(Ch,
insert_left(J,
insert_left(Mi3,
Me,
Mi,
Ca,
Me2),
Mi2),
Ca2),
La
creacin
una
estructura
de
rbolelesvalor
casi de
igual
fcil. Elenprocedimiento
siguiente
/*
...and
print
the
result.
*/
create_tree("Melody",Me),
insert_right(H,
insert_right(E,
insert_right(Me3,
Mi2,
Me2,
Ca2,
Mi3),
Ca3),
Note
que
node
hay
manera
de Me3),
cambiar
unadevariable
Prolog una vez
que ha toma
sido
tres
argumentos.
Inserta
el
primer
rbol
como
el
subrbol
izquierdo
del
segundo
rbol,
dando
create_tree("Eleanor",E),
emparejada.
Es
por
eso
que
10
usa
tantos
nombres
de
variables;
cada
vez
que
creas
un
nuevo
create_tree("Jim",J),
como
rbol:
valor, resultado
necesitas el
unatercer
nueva
variable. El gran nmero de nombres de variables aqu no es usual; es
create_tree("Michael",Mi),

create_tree("Hazel",H),
insert_left(X,
tree(A, _, B),
tree(A,obtengan
X, B)).
ms
comn,
queregla
procedimiento
repetitivos
variables
invocndose
elloslomismos
Note
que
esta
no tiene
cuerpo
no hay*/pasos nuevas
explcitos
en la ejecucin.
Todo
que la
/* create_tree("Charles",Ch),
First create
some
one-cell
trees...
recursivamente,
ya
que
cada
invocacin
tiene
un
conjunto
distinto
de
variables.
computadora tiene que hacer es igualar los argumentos con cada otro en la posicin propia, y el

GOAL
insert_right(X,tree(A,B,_),tree(A,B,X)).
trabajo
est hecho.
insert_left(X,tree(A,_,B),tree(A,X,B)).
create_tree(A,tree(A,empty,empty)).
Suponga,
por ejemplo, que treetype,
quiere insertar
tree("Michael", empty, empty) como el subrbol
CLAUSES
insert_right(treetype,
treetype)
T)
Hasta
el
momento,
hemos
estado
usando
el hacer
rbol esto,
para solo
representar
entre sus
izaquierdo
de tree("Cathy",
empty). Para
ejecute larelaciones
meta
y Tinsert_left(treetype,treetype,treetype)
inmediatamente
toma los empty,
valores
tree("Cathy",
empty, empty),
create_tree(string,treetype)
elementos.
Por
supuesto,
esto
no
es
le
mejor
uso
de
los
rboles,
ya
que
la
clusulas
de
Prolog
insert_left(tree("Michael",
empty,
empty),
PREDICATES
tree("Cathy",
tree("Michael",
empty,
empty),
empty).
treetype
=eltree(string,treetype,treetype)
; empty()
pueden
hacer
mismo
trabajo.
Pero
los
rboles
tienen
otros
usos.
Esto
da un camino para construir rboles paso por paso. El programa 10 demuestra esta tcnica.
DOMAINS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

rboles de Bsqueda Binaria

En
larboles
vidaC real,
los itemes
que van
a serpara
insertados
en el
rbol
venirque
la entrada
* dando
*de puedan
Los
proveen
una buena
manera
almacenar
tems
de podran
datos para
ser
externa.
*
dando
C
insert_right(A,
B,
C)
inserta
A
como
as
rbol
derecho
de
B
*
encontrados rpidamente. Un rbol construido para este propsito es llamado un rbol de
* dando

B insert_left(A, B, C) inserta A como rbol izquierdo de B

Program
ch06e10.pro
*/ de
bsqueda;
desde B)
el pone
puntoA de
del
usuario,
ladeestructura
no acarrea
* crea tree(A,
en vista
el /*
campo
de dato
un rbol
de rbol
una celda
* informacin
*
Procedimiento
sencillo
de
construccin
de
rbol
*
el rbol es solo una alternativa ms rpida que una lista o un arreglo. Recuerda
que, para
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
recorrer un rbol ordinario, miras en la celda actual y entonces a ambos de sus subrboles. Para
encontrar un tem particular, podras tener que mirar en cada celda del rbol entero.

El tiempo que toma buscar un arbol ordinario con N elementos es, en promedio,
proporcional a N.

Un rbol de bsqueda binaria se construye de tal manera que puedas predecir, mirando en
cada celda, en cual de sus subrboles estar un dado tem. Esto se hace definiendo una relacin
de ordenamiento de los itemes de datos, tal como un orden alfabtico o numrico. Los itemes
en el subrbol izquierdo preceden el item en la celda actual, en el rbol derecho, le siguen. La
Figura 6.3 muestra un ejemplo. Note que los mismos nombres, aadidos en un orden diferente,
producirn un rbol de alguna manera diferente. Note tambin que, aunque hay diez nombres en
al rbol, puedes encontrar cualquiera de ellos ena lo mscinco pasos.

Figura 6.3: Arbopl de Bsqueda Binaria


Cada vez que miras en una celda en un rbol de bsqueda binaria durante una bsqueda,
eliminas de consideracin la mitad de las celdas restantes, y la bsqueda procede muy rpida.
Si el tamao del rbol fuera duplicado, entonces, tpicamente, solo un paso extra sera necesario
para buscarlo.
El tiempo que toma para encontrar un item en un arbol de bsqueda binaria es, en
promedio, proporcional a log2 N (o, de hecho, proporcional a log N con logaritmos de
cualquier base).
Para construir el rbol, comienzas con rbol vaco y aades itemes uno por uno. El
procedimiento para aadir itemes es el mismo que para encontrar uno: simplemente buscas por
el lugar donde debera estar, y lo insertas all. El algoritmo es como sigue:
Si el nodo actual es un rbol vaco, inserta el tem all.
De otra manera, compara el tem el que va a ser insertado y el tem almacenado en el nodo
actual. Inserta el tem en el subrbol izquierdo o el derecho, dependiendo del resultado de la
comparacin.
En Prolog, esto requiere tres clusulas, una por cada situacin. La primera clusula es
insert(NewItem, empty, tree(NewItem, empty, empty) :- !.

Pgina 89 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


read_input_aux(Tree,
and
calls
recursively
NewTree)
unless
at
EOF.
/*
write_output(tree(Item,Left,Right)):*
write(Item),
*
*writes
*al
inserts
*lenguaje
* it
*itself
*",Y,'\n'),
Element
nl,
* natural,
* elements
*
*may
into
*este
*
Tree
*of
*
*
giving
*
*
*NewTree.
*
*
*resultado
*fails
* *
* *
*order.
* *
*
* *
*Right)):** NewItem en empty es
it_is(mammal):it_is(ungulate):negative(X,Y):run:run
positive(does,chew_cud).
ask(X,Y,no).
write("\nYour
write("your
:animal
animal
is.\n\n"),
be
a
(an)
",X),
insert(New,tree(Element,Left,Right),tree(Element,Left,NewRight)):New<Element,!,
repeat.
it_is(carnivore):positive(X,Y):ask(X,Y,yes):ask(X,Y,no):clear_facts:positive(has,hooves).
ask(X,Y,yes).
frontchar(Reply,'y',_),
write(X,"
frontchar(Reply,'n',_),
retractall(_,dbasedom),readchar(_).
it_is(bird),positive(does,fly_well).
insert(NewItem,tree(Element,Left,Right),tree(Element,NewLeft,
/*
*
!,
*
*
*
*
*
*
out
*
*
the
*
*
*
*
*
*
*
*
Tree
*
*
in
*
*
alphabetical
*
*
*
*
*
*
*
read_input_aux(Tree,
Tree).
/*
The
first
clause
at
EOF.
*/
Traducido
cdigo
dice
"El
de
insertan
insert(S,
readln(S),
Tree,
Tree1),
insert(NewItem,tree(Element,Left,Right),tree(Element,Left,NewRight)):write_output(empty).
main,nl.
/*
Do
nothing
*/
it_is(carnivore):remember(X,Y,yes):remember(X,Y,no):positive(has,feathers).
positive(does,fly),
positive(has,
claws),
r
un.
write_Tree(tree(Item,Left,Right)):do(end).
write(Item,
"
"),
write_Tree(end).
w
rite("***************
write_Tree(Left),
write_Tree(Right).
Character
tree
sort
*******************"),nl,
it_is(bird):positive(does,lay_eggs).
positive(has,pointed_teeth),
positive(has,forward_eyes).
assertz(xpositive(X,Y)).
assertz(xnegative(X,Y)).
GOAL
insert(NewItem,
insert(NewItem,
Right,
tree(NewItem,empty,empty)):-!.
read_input_aux(Tree,
!,
read_input_aux(Tree1,
NewTree):NewTree).
*
NewItem
write_output(Tree)
*
*
*
Element,
*
*
*
Left,
*
*
*
NewLeft).
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
animal_is(albatross):positive(does,eat_meat).
xpositive(X,Y),!.
not(xnegative(X,Y)),
remember(X,Y,yes).
!,
readln(Reply),nl,
remember(X,Y,no).
write("\n\nPlease
press
the
space
bar
to
repeat:-repeat.
insert(New,tree(Element,Left,Right),tree(Element,NewLeft,Right)):insert(New,Left,NewLeft).
insert(New,Right,NewRight).
it_is(mammal),
xnegative(X,Y),!.
not(xpositive(X,Y)),
animal_is(X),!,
nl,nl,clear_facts.
write("\nUnable
clear_facts.
to
positive(has,hair).
positive(does,give_milk).
*estructuras
write_output(Left),
write_output(Right).
*yinsert(Element,
* *
* *
*es
*de
* datos
*empty,
*inserts
*recursivas
Tree,
*determine
*11
*NewRight).
NewTree)
*nmero
*
*what"),
*Tree
*
*atributos
*
* Visual
*exit\n"),
*NewTree,
* Prolog
* tiene
* *
* *
*realiza
* que
* hipertexto
* el
* sorteo
*/
reads
a<
line,
it
into
giving
/*
Use
para
implementar
hipertexto.
Un
esbasado
una
positive(has,black_and_white_color).
Cada
animal
descrito
por
un
de
que
(o
no
tiene).
Las estructura
preguntas
Carga
ejecuta
el
programa
y
observa
como
en xito,
rbol
read_input_aux(empty,Tree).
tree(NewItem,
empty, empty)
." El corte asegura que, si esta clusula puede
ser usada
con
insert(New,end,tree(New,end,end)):-!.
positive(does,swim),
create_Tree(Tree,
Tree).
read_input(Tree):en
la*eluna
cual
cada
entrada,
hecha
de
varias
lneas
de
texto,
es
acompaada
de
punteros
a
otras
que
usuario
tiene
que
responder
son
las
positive(X,Y)
y
negative(X,Y)
.
Por
lo
tanto,
el
sobre
secuencia
de
caracteres.
insert(NewItem,
Right,
NewRight).
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
negative(does,fly),
no NewItem
se
probarn
otras tree(Element,
clusulas.
create_Tree(TempTree,
NewTree).
Si
< Element,
lo entrada
insertas
en el estar
subrbol
izquierdo;
de otra
manera,
lo insertas
en el
insert(NewItem,
Left,
tree(Element,
Left,
:- ejemplo,
* it_is(bird),
therefrom
*NewRight)
entradas
varias.
Cualquier
conectada
a cualquier
otra
entrada;
por
insert(NewItem,
Left,
sistema,
podra
preguntar
algo NewLeft).
comopuede
estos:Right),
insert(C,
Tree, TempTree),
subrbol
derecho.
Note
que,to
athe
causa
de de
los
llegas
* !, instantiates
binary
search
tree
builtsolamente *a la tercera clusula si
write(C,
" "),
Lasanimal_is(penguin):clusulas
segunda
yTree
tercera
se
ocupan
lacortes,
insercin
endesde
rboles
no vacos:
Ejercicios
podras
llegar
alines
una
entrada
sobre
Abraham
Lincoln
yauntil
sea
o desde "Guerra
black_and_white_color).
Tiene
cabello?
* positive(has,
reads
fromprecedentes
the
current
input
device
EOF, "Presidentes"
then
*
NewItem
<clusulas
Element,
ninguno
de
las
ha
tenido
xito.
Note
tambin
cuanto
del
trabajo
es hecho
C<>'#',!,
Habiendo
recibido
una
respuesta
a
esa
pregunta,
quieres
aadir
la
respuesta
a
la
base de
datos,
positive(has,long_legs),
Civil."
*
read_input(Tree)
*
tree(Element,
Left,
Right),
tree(Element,
NewLeft,
Right)de:-sorteo para
readchar(C),
El
programa
12
es
similar
alen
11,
pero
ms
complejo.
Usa
la*misma
tcnica
positive(has,long_neck),
porinsert(NewItem,
laque
igualacin
de
argumentos
la
cabeza
de
la
regla.
/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
para
el
sistema
pueda
usar
la
informacin
recogida
anteriormente
al
momento
de
razonar.
closefile(outfile).
create_Tree(Tree,
negative(does,fly),
exit.
alfabetizar
cualquier
archivo de
estndar,
lnea
por(strings)
lnea.
es cada
cincouna
veces
Para
mantener
las cosaNewTree):sencillas,
usetexto
entradas
de
lnea
yreading
permita*/que
de
ask(X,Y,no).
closefile(infile),
/*
close
theuna
file
opened
forTpicamente
it_is(bird),
Note
que
la
Segunda
regla para
ambos
positive
y solo
negative
asegura
quey no
haya una
action('7',
_,
end):not(xpositive(X,Y)),
Por
simplicidad,
este
programa
de ejemplo
considerar
respuestas
positivas
negativas,
as
write_output(Tree),
ms
rpido
que
"SORT.EXE",
el
programa
de
sorteo
provisto
por
DOS
y
OS/2,
pero
es
ellas
contenga
un
puntero
a
solamente
una
otra
entrada.
Sorteo
Basado
en
rbol
animal_is(ostrich):readchar(_),nl.
negative(X,Y)
:-de/*preguntar
contradiccin
antes
alall
usuario.
xnegative(symbol,
symbol)
redirect
write
operations to the opened file */
que
usapositive(has,black_stripes).
una
base
de
datos
que
contiene
dos
predicados:
write("\nPress
a
key
to
continue"),
vencido
por
el
altamente
optimizado
"sort"
de
UNIX.
Sin
embargo,
el
sorteo
basado
en
rbol
El
hecho
que
el
animal
no
tiene
cabello
se
representa
por
/*
Clearing
Out
Old
Facts
*/
xnegative(X,Y),
!.
it_is(ungulate),
xpositive(symbol,
symbol)
Una
vez
que hasY,construido
el rbol, es fcil recuperar
writedevice(outfile),
remember(X,
no) :assertz(xnegative(X,
Y)). todos los temes en orden alfabtico. El
Ayuda:
Comienze
con
write_Tree(Tree),
negative(X,Y)
:animal_is(zebra):DATABASE
entrytype
=hace
empty()
;
entry(string,
entry)
El
predicado
askY,
la:pregunta
respuestas
la respuesta
inicia
es
extraordinariamente
eficiente.
Construya
una
estructura
ligada
eny organiza
la de
cualprimera
lalasmayora
de recordadas.
las entradasSitengan
un segundo
read_input(Tree),
retractall(_,dbasedom),
readchar(_).
remember(X,
yes)
assertz(xpositive(X,
Y)).
ask(X,Y,yes).
positive(has,
dark_spots).
xnegative(has,hair).
algoritmo
es
una
variante
de
la
bsqueda
profundidad:
remember(X,
Y,
no).
action('2',Tree,Tree):Como
prctica,
teclea
lanegative
mquinaluego
de press
inferencia
yrespuesta
las bar
clusulas
del
conocimiento
anteriores.
DOMAINS
Las
reglas
de
positive
y
checa
si
la
ya
se
conoce,
antes
de
preguntar
/*
redirect
all
read
operations
to
the
opened
file
*/
clear_facts
:write("\n\nPlease
the
space
to
exit\n"),
positive(has,long_legs),
con
la not(xnegative(X,Y)),
letra
y,
el
sistema
experto
asume
que
la
respuesta
es
Yes;
si
comienza
con
la
letra
n, al
la
argumento
no
vaco.
frontchar(Reply, 'n',
_),
create_Tree(Tree,
NewTree).
Enel
este
ejemplo
usamos
algunos
detolos
predicados
del sistema de archivos de Visual Prolog,
readdevice(infile),
positive(X,Y)
positive(has,long_neck),
Aade
las
declaraciones
apropiadas
hacer
usuario.
Si
rbol
esta :vaco,
no
hagas
readln(Reply),
write("Enter
characters
ornada.
# para
end:
"),un programa completo, y entonces prueba el
respuesta
es
No.
openwrite(outfile,
xpositive(X,Y),
!.
it_is(ungulate),
para
darte
una
probadita
de
la de
redireccin
de
archivos.
redirigir
la entrada
o salida
un
Ahora,
tome
su
hipertexto
rehgala Para
usando
clusulas
de Prolog.
Estoa es,
ask(X,
Y, sistema
no)implementacin
:-experto
!, Out),
write(X,
" it ", Y,
action('1',Tree,NewTree):resultado.
El
animal
completo
sey'\n'),
encuentra
en ch16e01.pro.
remember(X,
Y,
yes).
do(NewTree).
readln(Out),nl,
positive(X,Y)
:animal_is(giraffe):/*
Preguntando
ydatos
recordando
las
respuestas
*/
positive(has,
black_stripes).
De
otra
manera,
recupera
todos
los
temes
en
el
subrbol
izquierdo,
luego
el
elemento
actual,
frontchar(Reply,
'y',
_),
debes
decirle
al
sistema
sobre
el
archivo;
usas
openread
para
leer
desde
el
archivo
usearchivo,
clusulas
(en
vez
de
estructuras
de
recursivas)
para
registrar
cual
entrada
le
sigue
a
action(X,
Tree,
NewTree),
write("File
totawny_color),
write: "),
positive(has,
Un
ejemplo
delos
shell
deIn),
sistema
experto
(GENI.PRO)
sefile
provee
con puedes
Visual
Prolog enE/S
el
readln(Reply),
readchar(X),nl,
todos
temes
en
el
subrbol
derecho.
openread(infile,
/*
open
the
specified
for
reading
*/
uluego
openwrite
para
escribir
en
l.
Una
vez
que
el
archivo
est
abierto,
conmutar
cual.
retrieve_all(Right).
it_is(carnivore),
ask(X,
Y, yes)
!, write(X,
" it se
",
Y, '\n'),
write("Enter
number
- este
"),
Puedes
sortear
una :secuencia
de temes
insertndolos
un rbol y luego
recuperndoloseste
en
readln(In),nl,
directorio
PROGRAMS;
shell
en lasenmismas
do_something_to(Item),
it_is(mammal),
entre
undearchivo
abierto
y la
conbasa
writedevice,
y entre tcnicas
archivos introducidas
abiertos y el en
teclado
write("*****************************************************"),nl,
O,
en
Prolog:
write("File
to
read:
"),pantalla
retrieve_all(Left),
orden.
Para
N
temes,
esto
toma
un
tiempo
proporcional
a
N
log
N,
porque
la
insercin
y
la
animal_is(tiger):ejemplo,
con
la
caracterstica
aadida
de
permitirle
que
cambie
dinmicamente
las
reglas.
positive(has,dark_spots).
write("Enter
7 to predicados
exit\n"),
con
readdevice.Prolog
Estos
se discuten
el captulo 12.
write("PDC
Treesort"),nl,
retrieve_all(tree(Item,
Left, Right))
:- en detalle en
retrieve_all(empty).
/*
No
hagas
nada
*/
positive(has,tawny_color),
recuperacin
toma
un
tiempo
proporcional
a
log
N,
y
cada
uno
de
ellos
tiene
que
ser
hecho
N
write("Enter
2
to
show
tree\n"),
main :it_is(carnivore),
write("Enter
1
to
update
tree\n"),
CLAUSES
En
este
ejemplo,
mostramos
un
ejemplo
de
como
construir
un
pequeo
sistema
experto
que
Carga
y
ejecuta
el
programa
12.
Cuando
te
pida
File
to
read
teclea
el
nombre
de
un
archivo
veces.
Este es el algoritmo de sorteo ms rpido que se conoce.
write_output(treetype)
it_is(mammal),
write("*****************************************************"),nl,
insert(string,
treetype,
treetype)
resuelve
cual
de siete
(si
hay alguno)lnea
el usuario
del sistema tiene en mente. El
de
texto
existente;
el animales
programa
lo alfabetizar,
por lnea.
animal_is(cheetah):repeat,nl,
read_input_aux(treetype,
treetype)
Usted
debe
aprende
como
usar
un
paquete
de
software
que
disear y de
crear
si
CLAUSES
do(Tree):sistema
experto
calcular
cual es el animal haciendo preguntas le
y permita
luego deduciendo
las
Ejemplo
run
Su
animal
debe
ser
un
cheetah!
read_input(treetype)
tiene
manchas
oscuras?
CLAUSES
un
sistema
experto.
Muchos
paquetes
de
este
tipo
estn
disponibles
y
la
mayora
clear_facts
nondeterm
repeat Este ejemplo demuestra el retroceso usando hechos y como usar son
respuestas
obtenidas.
not
main
si
El
programa
11 Visual
usa estaProlog
tcnica
para alfabetizar
la entrada
de caracteres. En este ejemcplo
negative(symbol,symbol)
write_tree(chartree)
La
habilidad
de
para
hechos
y reglas
PREDICATES
/* chequear
Program
*/ proveer a su programa con la
tiene
color
deEn
cervato?
bastante
simples.
general,
debe: dech06e12.pro
efectivamente.
file
= infile
;
outfileusted
usamos
algunos
de
los
predicados
estndar
Visual
Prolog
que
no hemos introducido antes.
positive(symbol,symbol)
insert(char,
chartree,
chartree)
si
capacidad
de=razonar
afn achartree)
un
sistema experto.
El;primer
treetype
tree(string,
treetype,
treetype)
empty paso es proveer el conocimiento con
remember(symbol,symbol,symbol)
create_tree(chartree,
come
carne?
Estos
predicados
sern
discutidos
en
detalle
en
captulos
posteriores.
DOMAINS
Un
dialogo
tpicochartree,
del usuario
conesto
este se
sistema
experto
el
que
sistema
puede
conoce
como sera:
la experto
mquina de inferencia y se muestra en
ask(symbol,symbol,symbol)
action(char,
chartree)
S
elDecidir
sobre
larazonar;
funcin
y rango
del sistema
nondeterm
it_is(symbol)
do(chartree)
/* Program ch06e11.pro */
ch16e01.pro.
Tiene cabello?
Investigar
el conocimiento y las reglas que yacen bajo el sistema
nondeterm
PREDICATES
chartree =animal_is(symbol)
tree(char, chartree, chartree); end
PREDICATES
/* Program ch16e01.pro */
xnegative(symbol,symbol)
DOMAINS

5.5 Sistemas Expertos Programados con PROLOG


5.6 Introduccin a ESTA

Digitar el conocimiento y las reglas


de usuario
Probar y mejorar
Evaluar y documentar

xpositive(symbol,symbol)
Disear una interfase
DATABASE

En muchos casos, el sistema que usted configurar, sera un version regcortada de


un sistema experto completo, debido a restricciones de tiempo y capacidad de la
computadora. Lo que es importante es que:
Que usted aplique buenas tcnicas al analizar y estructurar el cuerpo del

conocimiento
Que usted use tcnicas apropiadas para implementer su estructura con el

software apropiado.
Pero deber reconocer tambin las limitaciones impuestas por el software que

use, y por lo tanto, estar preparado para escribir una nota aclaratoria.
Para desarrollar un sistema experto en esta unidad estaremos usando ESTA, el sistema
de concha experta que es provista como parte del ambiente de desarrollo de Visual
Prolog.

5.6.1 Usando un Sistema de Concha Experta


Un sistema experto es un sistema de computadora, que imita el comportamiento de un
humano experto en alguna rea de estudio especfico. La idea detrs de la cracin de un
sistema experto es que puede permitir a muchas personas beneficiarse del conocimiento
de un persona el experto. Y no solo har al especialista del conocimiento ms
disponible, sino que tambin puede liberar al experto para aquellos problemas realmente
difciles.

Pgina 90 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Al proveer una base del conocimiento para una rea de estudio, ESTA puede
ser usada para crear un sistema experto para dicha rea:
ESTA + Knowledge Base = Expert System
Cada base de conocimiento contiene reglas para un dominio especfico. Entonces,
para un sistema experto de diagnstico de una falla de carro, la base de conocimiento
contendr reglas relacionadas con los sntomas, tales como vibracin excesiva del motor
o falta de energa a alta velocidad como posibles causas. Similarmente, una base de
conocimiento para un sistema experto que aconseje sobre impuestos, puede contener
reglas relacionadas con el estado marital, plazos de hipoteca y la edad para la ganancia
(desde el punto de vista legal de pagar lo menos de impuesto posible) de tomar un
seguro de vida, ya que esto altera de manera beneficiosa la posicin en los impuestos
de una persona. Adems, dada una base de conocimiento sobre la clasificacin de las
plantas, un sistema experto podr ser construido para reconocer plantas.
ESTA tiene todos los recursos para escribir reglas que conformarn una base de
conocimiento. Adems, ESTA tiene una mquina de inferencia, que puede usar las
reglas en la base de conocimiento para determinar cual consejo se debe dar al usuario
del sistema experto o para iniciar otras acciones. ESTA tiene tambin la ventaja de
ofrecer al usuario del sistema experto la habilidad para obtener respuestas a preguntas
de como y porqu, etc.
La separacin de las partes de control e inferencia de la base de conocimiento es una
caracterstica fundamental de un sistema de concha experta:

ESTA es usada por el ingeniero del conocimiento para crear una base de conocimiento y
por el usuario del sistema experto para consultar una base de conocimiento.

5.6.2 Representacin del Conocimiento


La representacin del conocimiento en ESTA se basa en las siguientes partes:

Titulo
Secciones
Parmetros

Para hacer la representacin del conocimiento fcil de leer, los comentarios pueden
incluirse en cualquier parte.

5.6.2.1 Comentarios
Los comentarios deben comenzar con la secuencia /* y terminar con la secuencia */.
Los comentarios pueden ser de varias lneas.
Ejemplo
/* Estas dos lneas
Son mostradas de tal manera que los comentarios ms adelante son superfluos */
Pgina 91 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

5.6.2.2 Titulo
Para representar la base de conocimiento completa se puede usar un ttulo. El ttulo
puede ser ya sea texto o una figura.
Ejemplo

5.6.2.3 Secciones
El nivel ms alto de representacin del conocimiento en ESTA consiste de secciones.
La primera seccin en una base de conocimiento debe llamarse start. Una seccin
consiste de un nombre, una descripcin textual un nmero de prrafos. ESTA trata con
los prrafos en una seccin trabajando de arriba hacia abajo, un prrafo a la ves. Si un
prrafo contiene una expresin boleana entonces la expresin se evala primero. Si la
expresin es verdadera o el prrafo no contiene una expresin boleana del todo la
lista relevante de acciones son ejecutadas en el orden dado por el prrafo. Cuando una
consulta se inicia por va del comando Begin Consultation, ESTA comienza evaluando
la expresin boleana en los prrafos de la seccin de inicio (start).
Ejemplo
El siguiente ejemplo consiste de una base de conocimiento con una seccin y un
parmetro:

La Accin de Consejo (Advice Action)


La accin de consejo se ejecuta primero estableciendo los valores de todos
los parmetros envueltos en la expresin de texto y luego escribiendo el
texto resultante en una ventana de la pantalla. Las figuras se pueden incluir
en cualquier parte en el advice. En esta caso el hipervnculo "Show <picture
name>" aparecer en el texto del consejo. Puede despus mostrar esta figura
Pgina 92 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


hacienda doble click en este texto.
Ejemplo

La Accin Do
La accin do sencillamente transfiere control a la seccin nueva. La accin do habilita
que se lleve a cabo la bsqueda orientada por datos entre secciones. En la literatura de
IA a esto se le llama encadenamiento directo.
Ejemplo
section start 'La primera seccin a ser ejecutada'

if respuesta = 'yes' (do seccin positiva, do siguiente seccin)

if answer = 'no' do seccin negativa

Dependiendo del valor de la respuesta del parmetro, el control es transferido ya sea a


la seccin positive seguida de la siguiente seccin, si la respuesta fue yes; o la seccin
negativa si la respuesta fue no.

5.6.2.4 Parmetros
Los parmetros son como variables las que determinan el flujo de control entre
secciones. Cualquier parmetro consiste de un campo de declaracin y un campo de
tipo. Aun ms un nmero de campos adicionales, dependiendo del tipo de parmetro,
se puede usar para describir el parmetro. Un parmetro puede ser uno de los siguientes
cuatro parmetros:

Parmetro boleano
Parmetro de texto
Parmetro numrico
Parmetro de categora

Cualquier parmetro puede obtener un valor en una de las siguientes formas:

De una respuesta a una pregunta


Como un resultado de seguir algunas reglas
Una asignacin resultante de una accin asignante
Ejemplo

Pgina 93 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Parmetro Boolean
Los parmetros Boolean o parmetros lgicos son usados cuando un parmetro se
restringe a uno de los valores verdadero, falso o desconocido por ejemplo cuando
la respuesta a una pregunta debe ser Si, No o Desconocido. Por defecto ESTA genera
automticamente una caja de lista (listbox) correspondiendo a los valores: verdadero,
falso y desconocido. Debido al uso especial del valor desconocido y porque en algunas
expresiones boleanas el valor desconocido no es apropiado, es posible declarar una
listbox donde el desconocido se omita. Este tipo de declaracin de caja de lista se puede
hacer en un campo de opcin adjunto a un parmetro de categora.
Ejemplo
parameter gasolina_ok : 'hay gasolina en su carro'

type boolean

explanation 'encienda la ignicin y mire el medidor de combustible'

question 'Hay gasolina en su carro?'

picture 'gasolina'
Pgina 94 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Parmetro Text
Los parmetros de Text se usan para objetos de texto tales como el nombre de una
persona, un color favorito, etc.
Si el parmetro text obtiene su valor de la respuesta a una pregunta, ESTA mostrar una
caja de dilogo, con la pregunta y una caja de edicin para la respuesta.
Ejemplo
parameter nombre 'el nombre del usuario'

type text

question 'Cual es su nombre?'

Parmetro Number
Los parmetros number pueden tomar valores enteros o reales ESTA convierte
todos los valores a reales automticamente. Los parmetros number se pueden usar
para representar tasas de impuestos, tasas de inters, o el nmero de partes de un
componente, etc. Es posible declarar un rango, que ESTA validar en respuesta a una
asignacin del valor del parmetro.
Si el parametro number obtiene su valor de una pregunta, ESTA mostrar una caja de
dilogo, con la pregunta y una caja de edicin para la respuesta. El valor digitado sera
checado automticamente por ser un nmero. Si se especifica un rango de campo, el
valor ser validado si est dentro del rango.
Ejemplo

Parmetro Category
Un parmetro category se usa, cuando se sabe que debe tomar un conjunto de valores
predefinidos. Por ejemplo, se puede decidir que el color debe ser rojo, verde, azul, o
Pgina 95 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


prpura. Las opciones disponibles son descritas en el campo de opciones. Despus
de dar las opciones claves, los miembros de la lista de opciones se dan separados
por comas y terminados por un punto. Una opcin es definida por un nombre y
opcionalmente por un texto explicatorio. Note que ESTA convierte todo a minsculas
antes de mostrar la caja de lista generada. Para evitar entradas no esperadas es una
buena idea usar letras minsculas para las entradas individuales en un campo de
opciones.
Si el parmetro category obtiene su valor de una respuesta a una pregunta, ESTA
mostrar la caja de dilogo, con la pregunta y una caja de lista con la opcin de los
nombres o los textos explicativos, si estos son dados. El usuario selecciona la respuesta
de una caja de lista. Como una alternativa, el usuario puede seleccionar una opcin
haciendo clic en un campo o una figura. Para hacer esto, el campo de la figura debe ser
definido y enlazado a las opciones usando el editor de hotspot, el que se accede va el
comando de men Pictures Database.
Ejemplo

5.6.2.5 Ejercicio: Identificacin de un Invertebrado


Hay muchos tipos de animales los cuales caen dentro de una categora, por ejemplo
vertebrado o invertebrado. Este ejercicio desarrolla un sistema experto que consiste
de preguntas, las que son usadas para determinar el tipo de animal que usted est
describiendo. Este ejercicio se concentra en los invertebrados.
A continuaci, est el rbol de decision, el que nos ayuda en el desarrollo del sistema
experto invertebrado.

Pgina 96 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Pgina 97 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Creando el Sistema Experto


Usando ESTA
Creando un Archivo y Ttulo Nuevo
1. Haga clic en Nuevo en el men

File, esto nos mostrar la caja de


dilogo como se muestra. Haga clic
en Knowledge Base y despus en
OK.

2. Clic en New Title en el men Title.

Esto mostrar una ventana como


se muestra.
3. Digite Animal, su nombre y la

fecha en la ventana.
4. Cierre la ventana, le preguntar si

quiere actualizar antes de cerrar,


clic en Yes.

Creando los Parmetros


1. Clic en New Parameter in el menu

Parameter. Esto mostrar la caja


de dilogo que se muestra.
2. Digite backbone en la caja de texto

etiquetada Name.
3. Clic Boolean y despus OK.
4. Esto mostrar una ventana de

parmetro.

Pgina 98 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


5. En esta ventana digite el texto

como se muestra abajo para el


parmetro backbone.
6. Repita los pasos 1 al 5

para exoskeleton y legs8.

parameter backbone : 'El animal tiene


columna vertebral '
type boolean
explanation ' '
/* rules field */
question 'Tiene al animal una
columna vertebral?'
picture ' '

parameter exoskeleton : 'El animal


tiene un exoesqueleto '
type boolean
explanation ' '
/* rules field */
question 'Tiene el animal un
exoesqueleto?'
picture ' '

parameter legs8 : 'El animal tiene 8


patas'
type boolean
explanation ' '
/* rules field */

Pgina 99 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

question 'Tiene el animal 8 patas? '


picture ' '

Creando las Secciones


1. Clic New Section en el men

Section. Esto mostrar la ventana


de dilogo mostrada.
2. Digite start en la caja de texto

etiquetada Name.
3. Esto mostrar una ventana de

seccin.
4. En esta ventana digite el texto

como se muestra abajo para la


seccin start.
5. Repita los pasos 1 al 4

para invertebrate y arthropod.

section start : 'Que tipo de animal'

if backbone = false
do invertebrate
if backbone = true
advice 'El animal es un
Vertebrado'

section invertebrate : 'El animal es un


invertebrado'

if exoskeleton = true

Pgina 100 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


do arthropod
if exoskeleton = false
advice 'El animal es un Molusco'

section arthropod : 'El animal es un


artrpodo'

if legs8 = false
advice 'El animal es un Insecto'
if legs8 = true
advice 'El animal es un
Crustceo'

El Sistema Experto Vertebrado


Title

Animal

Sections

section start : 'Que tipo de animal'

if backbone = false

do invertebrate

Pgina 101 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

if backbone = true

advice 'El animal es un Vertebrado'

section invertebrate : 'El animal es un invertebrado'

if exoskeleton = true

do arthropod

if exoskeleton = false

advice 'El animal es un molusco'

section arthropod : 'El animal es un artrpodo'

if legs8 = false

advice 'El animal es un Insecto'

if legs8 = true

advice 'El animal es un Arcnido o un Crustceo'

Pgina 102 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Parameters

parameter backbone : 'El animal tiene una columna vertebral '

type boolean

explanation ' '

/* rules field */

question 'Tiene el animal una columna vertebral?'

picture ' '

parameter exoskeleton : 'El animal tiene un exoesqueleto '

type boolean

explanation ' '

/* rules field */

question 'Tiene el animal un exoesqueleto?'

picture ' '

parameter legs8 : 'El animal tiene 8 patas'

type boolean

Pgina 103 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


explanation ' '

/* rules field */

question 'Tiene el animal 8 patas?'

picture' '

Consultando al Sistema Experto


El sistema experto vertebrado ya est completo, para ejecutar el sistema haa clic en
Begin Consultation en el men Consult. Mostrar la pantalla del ttulo seguido de
hasta tres preguntas. Una ves que usted responda cada respuesta, haga clic en el botn
OK.
Las respuestas a estas preguntas sern usadas para determiner el tipo de animal que
usted est describiendo y mostrar la respuesta en la pantalla. Haciendo clic en el botn
Why dar una explicacin completa de su razonar para las respuestas que ha dado.
Ejercicios adicionales
1. Aada comentarios a las ventanas de parmetro y secciones dentro del sistema
experto para describir su comprensin del sistema.
2. Pruebe todas las posibles rutas dentro del sistema experto y corrija cualquier
error que pueda encontrar.
3. El sistema experto hasta el momento busca a los invertebrados. Extienda
el sistema experto para que incluya diferentes tipos de invertebrados. Esto
requerir que busque informacin concerniente al rbol de la familia animal.
4. Invetigue otros sistemas expertos, que le gustara a usted implementer y probar.
Por ejemplo un sistema de diagnstico para carros, primeros auxilios y sistema
experto CPR.

Ejercicio con ESTA El Cine


Este ejercicio desarrolla un sistema experto sencillo que consiste de preguntas, las que
son usadas para determinar el mtodo de viaje a un cine.
Abajo se muestra el rbol de decisin, que nos ayuda en el desarrollo del sistema
experto.

Ilustracin 3 Mtodo de la IA para trabajo con el computador


MEMORIA

Pgina 104 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

E/S

CPU

Algoritmos para:
- Bsqueda.
- Reconocimiento de patrones.
Base de conocimiento (representacin simblica.)

Ilustracin 2 Concepto de IA en un computador


Salidas (Respuestas, soluciones, etc.)
Entradas (preguntas, problemas, etc.)
CAPACIDAD DE INFERENCIA

Algoritmos para:
Bsquedas y
Reconocimiento de patrones
Base de conocimiento

Representacin Simblica

Hombre
Algunos Animales
Computador IA
Computador Convencional
Circuitos Lgicos
Biestable

Ilustracin 1Fuentes del Conocimiento


Penetrar en la esencia de las cosas.
Relaciones entre ellas.

Pgina 105 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Descubrir la singular, comn, lo universal.

No son suficientes y profundos.


No podemos penetrar en la esencia de las cosas.

Conocimiento Sensorial
Reproduccin de la imagen en el cerebro del hombre en un momento dado.
Imagen ntegra de varios aspectos del objeto.
Reflejo inmediato de las caractersticas del objeto

CONOCIMIENTO RACIONAL

Conceptos
Juicios
Razonamientos
Representacin
Percepcin
Sensacin
Objeto

Ilustracin 6 Grafo en rbol para mostrar conocimiento jerrquico


3
2
1
c
b
a
c
b

Objetos (sujeto y predicado).


Adverbio

Verbos o una de las partes de un verbo.


En gramtica: nombres que sirven como sujeto u objeto de la sentencia.
Pgina 106 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Aciertos, hechos acerca de los mismos.


Individuos u objetos
Predicado o acierto
(Objeto, cierta informacin sobre el objeto)

Los argumentos u objetos


(Sujeto, caractersticas del sujeto)
1

Nivel 2
Nivel 1
Nivel 0
Nodo
Raz (inicio)
Meta
(Final)
10
9
8
7
6
5
4
3
Directivo
Empleado
Trabajador
Estudiante
Persona

camin
carro
bicicleta

Pgina 107 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

ciclomotor
bici
motor
4 ruedas
2 ruedas
transportacin
Instancia
Es-un
Es-un
Es-un
Es-un
Es-un

Jugador
De Liga Nacional
Jugador
de
Matagalpa
Jugador
de
Len

Entrenador
Right
Field

Pitcher
Jugador de Base Ball
Marco Especfico del Auto
Marco del Motor
Marco Carro General
Marco Modo de Transporte

Pgina 108 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Motor
Auto
Carro
2
1
Nodo AND
Nodo OR
Comprar una TV
Ganar dinero
Va legal
Robar una TV
Adquirir una TV

Hechos
(Descripcin de los hechos)

Representaciones Internas
(Representaciones formales de los hechos reales)

Programas que Razonan


Verdades del mundo real
Entidades que se manipulan

Hechos
Iniciales
Representacin interna de los hechos iniciales
Hechos
Finales
Representacin interna de los hechos finales
Correspondencia hacia adelante
Correspondencia hacia atrs
Funcionamiento del programa

Pgina 109 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Proceso Lgico
Premisas de entrada o hechos.
Prueba
Salidas de inferencias o conclusiones.
Ilustracin 4 Utilizar la lgica para razonar
a
3
2
1

A
Ilustracin 5 Utilizacin de una lista para representar el conocimiento

Subelemento c
Subelemento (1)

Subelemento (2)
Subelemento (3)

Elemento 3
Subelemento a
Subelemento b
Subelemento c

Elemento 2
Subelemento a
Subelemento b
Subelemento c

Pgina 110 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Lista A
Elemento 1
Elemento 2
Elemento 3
Escuela
Nio
Joey
MUJER
Ser Humano
Kay
Va a
Es-un
Tiene hijo
Es-un
Es-un
Es-un
HOMBRE
Sam
Es-un
Es-un
CARRO
Casado con
Tiene un
Vice Presidente
Es-un
Acme

Trabaja para
Ajax
Golf

Pgina 111 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Deporte

Mercedes Benz
Plateado

Alemania

Es-un
Es-un
Juega
Color
Hecho-en
Propietario
Sam
Reloj Rolex
Capital
VHS
Casa
Carro
2
8
11
3
5
9
12
14
13
4
6
7
10
15
16

Pgina 112 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Nodo
Raz (inicio)
Meta
(Final)
G
I
R
F
ll
A
S
C
S
D
S

Estado Inicial
E
H
A
B
S

Estado Inicial
Estado Inicial
Estado Inicial
Meta
B
C
C
B
A
A

Pgina 113 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

Listado Inicial
Listado Meta
A
CB
ACB
B
AC
B
AC
C
AB
CAB
A
CB
C
A
B
B
A
C
C
B
A
A
B
C
0
1
2
3
4
5
6
7
8
9
10
Estado

Pgina 114 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


Meta

j
k

10
3
7
5
9
4
8

5
3

3
3

5
5
4

4
4

3
5
2

2
3

1
4

B
C
B
C
D
E
F
G
H
G
F

Pgina 115 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

E
D
C
B
A
A
B
C
D
E
F
G
H
H
D
E
F
G
H
A
B
C
D
E
F

Pgina 116 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

G
H
A
a.valor 4
b.valor 4
c.valor 4

A
Estado anterior

parameter carro 'el tipo de carro'


type category
explanation
'Identifique su carro con uno de los tipos listados lo mejor que pueda'
option
ambulancia
carro policia
sedan - 'carro'
van.
question 'Cual tipo de carro tiene usted?'
picture 'carros'
parameter alto_cm 'su alto en cm'
type number
range 100 250
question 'Cual es su alto en cm?'
Pgina 117 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora

parameter name 'el nombre del usuario'


type text
question 'Cual es su nombre?'
parameter pc_color 'El color favorito de pantalla del usuario'
type category
options
rojo,
azul,
verde.
question 'Cual color de pantalla prefiere al usar un editor?'
picture 'figura de color de pantalla'
parameter color 'una palabra para describir el color'
type text
explanation
'Los humanos normalmente usan palabras para describir colores en ves de especificar la
frecuencia de las ondas de luz. Este parmetro representa colores como rojo, azul, etc.'
rules
'azul' if frequencia < 1000,
'rojo' if frequencia > 2000 and frequencia < 3000,
'invisible'.

advice
'Hay tres maneras posibles como iniciar su carro:
1) Remolcarlo o empujara para que arranque
2) Recargar la batera
3) Usar la batera de otro carro '
picture 'carros'

* carros * /* La figura de carros se mostrar como el ttulo */


Base de conocimiento de Carros /* El texto: Base de conocimiento de Carros ser
mostrado */
section start : 'the first section to be executed'
if car_color = 'red'
( advice 'Your car is red, try to sell it to the fire brigade ' ,
call sound(200,100)
)
if car_color <> 'red' and car_color <> 'blue'
advice 'Your car is not one of our favourite colors !'
advice 'That''s all folks!'

Pgina 118 de 119

Inteligencia Artificial Compilado por Ing. Irving Gngora


parameter car_color 'the color of the car'
type text
question 'What is the color of your car ?'
Metrocentro
Cinema1
Cual cine presenta la pelcula?

A
B
C
Estado final
Estado inicial

A
C
B

Pgina 119 de 119