Está en la página 1de 294

Tema 01.

Fundamentos de la Inteligencia
Artificial

Fuente: http://borrowbits.com/2012/03/inteligencia-artificial-mito-orealidad/

Bienvenida
Estimados estudiantes bienvenidos! a la primera semana del curso,
donde abordaremos los conceptos bsicos de la inteligencia artificial,
su historia y aplicaciones en sectores industriales y empresariales.
Trataremos el test de Turing que permite determinar en qu momento
una mquina adquiere la categora de comportamiento inteligente.
Alan Turing es considerado el padre de la inteligencia artificial.
Asimismo presentaremos la estructura de los sistemas basados en
conocimiento. Los contenidos se complementan con interesantes
lecturas, valiosos videos, pginas interactivas e importantes
actividades de evaluacin que conducen a la metacognicin y a la
comprobacin de los aprendizajes logrados.
Empecemos!

Introduccin al tema

Fuente: http://psmheuristica.webnode.com.ve/clasificacion-metodosheuristicos/sistema-basados-en-el-conocimiento-sbc/
El estudio de la inteligencia artificial se inicia formalmente en
la dcada de los aos 50, y desde entonces sus tcnicas han sido
utilizadas y aplicadas en diversas reas comunes al desempeo
cotidiano de las personas, ayudando, reemplazando, simulando las
acciones o decisiones tomadas por individuos con ciertas
caractersticas en particular.
La Inteligencia Artificial basada en las ciencias de la
computacin se complementa con la fisiologa y filosofa,
reuniendo varios campos (robtica, sistemas expertos,
sistemas inteligentes entre otros), todos los cuales tienen en
comn la creacin de mquinas que pueden en primer lugar
comportarse y posteriormente "pensar" tal y como lo hacen los
humanos. La idea de construir una mquina, que pueda ejecutar
tareas que parecen necesitar de la inteligencia humana para llevarse
a cabo es un atractivo. Las tareas que han sido estudiadas desde este
punto de vista incluyen juegos, traduccin de idiomas, diagnstico,
robtica, suministro de asesora experta en diversos temas.
Aunque no existe una definicin nica, se entiende sus reas de
aplicacin que las vamos conociendo a travs de su historia y los
legados dejados por los investigadores de la disciplina. Los temas de
la inteligencia artificial son relativamente nuevos y en permanente
evolucin por lo que es necesario ubicar el contexto en el que se
desarrollan las aplicaciones y la tecnologa utilizada, sin las
computadoras actuales no hubiera sido posible el avance de la
disciplina.
Por esta razn en esta sesin estudiamos los conceptos generales de
la inteligencia artificial, su historia, aplicaciones y tests para verificar
cuando una mquina tiene comportamiento inteligente. Es
fundamental
comprender
los
contenidos
propuestos
para

posteriormente enfrentar con xito los temas de las siguientes


sesiones.
Los sistemas basados en conocimiento intentan resolver
problemas complejos imitando el comportamiento de un
experto en el dominio del problema, por lo que se requiere de
una estructura que permita representar el conocimiento y su posterior
tratamiento en forma declarativa, tomando decisiones en funcin del
estado del entorno, ejerciendo control sobre el mismo. Por esta razn
en esta semana estudiamos la estructura de los sistemas basados en
conocimiento, haciendo nfasis en un esquema particular y muy
desarrollado a la fecha conocido como sistemas expertos.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este
primer tema:
Capacidades

Conoce la definicin de Inteligencia Artificial.

Diferencia entre sistemas operacionales y sistemas inteligentes.

Identifica las aplicaciones en la industria y en las empresas de


diversos sectores.

Aplica el Test de Turing para reconocer una mquina inteligente.

Conoce la definicin de los sistemas basados en conocimientos.

Identifica la Estructura de los sistemas basados en


conocimientos.

Actitudes

Demuestra tolerancia y respeto ante la opinin de sus


compaeros en el debate de un foro.

Asume responsabilidad en el cumplimiento de las actividades.

Reconoce los conceptos de la inteligencia artificial.

Valora la historia de la inteligencia artificial.

Reconoce la estructura de los sistemas basados en


conocimiento

Marco conceptual
Analiza el marco conceptual del tema
La inteligencia artificial es relativamente nueva (se inicia formalmente
a mediados del sigo pasado) sin embargo a la fecha no tenemos una
definicin precisa, los autores la definen en funcin de los diferentes
escenarios en los que se producen las soluciones. Se desarroll
gracias a la tecnologa computacional y actualmente se aplica
prcticamente en todos los campos del quehacer humano.
Observa detenidamente el siguiente esquema, en el encontrars de
un "vistazo" de manera sintetizada los principales concepto de la
temtica que abordaremos. Qu conceptos o categoras te llaman la
atencin?

1.1 Presentacin de la Inteligencia Artificial

Fuente: http://despiertaalfuturo.blogspot.com/2014/11/inteligenciaartificial-puede-extinguir.html
La historia del ser humano se ha visto rodeada de creaciones e
innovaciones tecnolgicas que van desde el invento de herramientas
para la agricultura y uso de la rueda que le permitan ahorro de
esfuerzo en la realizacin de tareas fsicas hasta el desarrollo de
herramientas computacionales que apoyan el procesamiento de
informacin, muy til en la gestin de las empresas. En este proceso
de innovaciones aparece la necesidad de procesar conocimiento
humano en un computador que apoye en la toma de decisiones que
requieran cierto grado de inteligencia.
La inteligencia artificial es una rama del conocimiento humano de
reciente aparicin (fue formalizada a mediados del siglo pasado) con
respecto a otras reas como la matemticas, la fsica y la qumica que
tiene varios siglos de tratamiento y estudio. La idea es convertir al
computador en una herramienta de procesamiento de conocimientos,
para ello se requieren realizar un conjunto de tareas, tales como, el
reconocimiento e interpretacin de imgenes, el reconocimiento e
interpretacin del lenguaje natural, el tratamiento de informacin
para elaborar diagnsticos y pronsticos, la deduccin de teoremas,
la participacin en juegos electrnicos, entre otras.
La aparicin de las modernas computadoras hace posible
tcnicamente la implementacin de tareas como la visin artificial,
tratamiento
del
lenguaje
natural
fundamentales
para
el

procesamiento del conocimiento, en este sentido presentamos en


nuestro curso la teora y prctica relacionada a la implementacin de
sistemas basados en conocimiento.

Enfoques de la inteligencia artificial


Los estudios en Inteligencia artificial se orientan bajo dos enfoques
diferentes.

Fuente: http://www-formal.stanford.edu/jmc/personal.html. McCarthy


El Enfoque Tecnolgico
McCarthy y Minsky, del MIT promueven un enfoque tecnolgico
que permita desarrollar una tecnologa capaz de suministrar al
ordenador capacidades de razonamiento o discernimiento
similares, o aparentemente similares a las de la inteligencia humana.
Este enfoque es eminentemente prctico y se centra en los resultados
obtenidos, en la utilidad, y no tanto en el mtodo. Este enfoque
incluye a los Sistemas Expertos.
Enfoque Orientado A La Investigacin
Mecanismos De Inteligencia Humana

Relativa

Los

Newell y Simon, de la Carnegie Mellon University proponen un


enfoque orientado a la investigacin relativa a los mecanismos de
inteligencia humana, que emplea el ordenador como herramienta de
simulacin para la validacin de teoras. En este sentido proponen la
creacin de un sistema artificial que sea capaz de realizar los
procesos cognitivos humanos. Desde este punto de vista no es tan
importante la utilidad del sistema creado (qu hace), como lo es
mtodo empleado (cmo lo hace) y se orientan a estudiar el
aprendizaje y la adaptabilidad en un sistema cognitivo artificial.

Definicin de inteligencia artificial

Fuente: http://baycarsubol2124.blogspot.com/2012/03/conferenciade-darmouth.html . Darmouth


El trmino inteligencia artificial fue propuesto en la conferencia de
Darthmouth en 1956, sin embargo es complicado encontrar una sola
definicin que satisfaga a todos los grupos de investigadores a nivel
mundial.
El problema se presenta cuando nos referimos a comportamiento
inteligente o razonamiento inteligente, por ejemplo, un programa
de computador que juega ajedrez frente a un maestro, podemos
afirmar que el programa acta inteligentemente pero razona
inteligentemente?, en realidad lo que hace es implementar algoritmos
de bsqueda de soluciones en un espacio determinado y selecciona la
propuesta ms cercana al objetivo, mientras que el maestro ademas
de actuar con inteligencia aplica razonamiento cuando selecciona la
mejor jugada en funcin de la viabilidad de unas cuantas
posibilidades optimizando la bsqueda de soluciones.
En este sentido podemos partir que la IA busca implementar
mquinas con comportamiento inteligente frente a un problema
determinado, por lo tanto no constituye un objetivo el mtodo o
forma de razonamiento.
En esta definicin no estn incluidos los problemas que se resuelven
de forma exacta con algoritmos bien definidos, pues en ellos no se
evidencia ningn comportamiento inteligente sino ms bien la
aplicacin mecnica de una secuencia de pasos o etapas.
Los problemas que estamos incluyendo en la definicin son aquellos
que enfrenta el ser humano para los que no existen algoritmos
conocidos y para su solucin se utilizan ms bien un conjunto de
reglas o criterios denominadas heursticas.

La diferencia entre los algoritmos y las heursticas es que los


algoritmos siempre llevan a la misma solucin, mientras que las
heursticas no garantiza que nos lleve a la solucin correcta, ademas
pueden existir muchas heursticas aplicables a determinado
problema, con lo que la seleccin de cualquiera de ellas afecta los
resultados.
Podemos entonces identificar un conjunto de problemas realmente
complejos que requieren inteligencia y originalidad para su solucin,
tales como descubrir nuevos teoremas matemticos, diagnosticar
enfermedades como lo hara un mdico, componer msica como lo
hara Beethoven o comprender una expresin en lenguaje natural
como el espaol o el ingls. Para realizar estas tareas no existen
algoritmos especficos sin embargo la gente tradicionalmente aplica
heursticas, incluso a veces, sin darse cuenta, y en muchos casos, las
realizan sin saber realmente cmo las hacen ni qu pasos siguen en
todos los casos, por mucha introspeccin a la que se sometan,
solamente las ejecutan.
Podemos entonces formular una definicin de IA para nuestro
curso:
La IA es la rama de la ciencia de la computacin que estudia la
resolucin de problemas no algortmicos mediante el uso de cualquier
tcnica de computacin disponible, sin tener en cuenta la forma de
razonamiento subyacente a los mtodos que se apliquen para lograr
esa resolucin.
Sin embargo aunque esta definicin sea aceptable para un curso
universitario presentamos un conjunto de alternativas:

El arte de crear mquinas con capacidad de realizar funciones


que realizadas por personas requieren de inteligencia.
(Kurzweil, 1990).

El estudio de cmo lograr que las computadoras realicen tareas


que, por el momento, los humanos hacen mejor. (Rich, Knight,
1991).

La rama de la ciencia de la computacin que se ocupa de la


automatizacin de la conducta inteligente (Luger y Stubblefield,
1993).

Un campo de estudio que se enfoca a la explicacin y


emulacin de la conducta inteligente en funcin de procesos
computacionales (Schalkoff, 1990).

Disciplina que se dedica a la construccin de programas


informticos capaces de realizar trabajos inteligentes. Sus

objetivos bsicos son dos: (1) estudiar el comportamiento


inteligente de las personas humanas, y (2) hacer programas de
ordenador inteligentes capaces de imitar el comportamiento
humano (Duda y Shortliffe).

El arte de construir mquinas capaces de hacer cosas que


requeriran inteligencia en el caso de que fueran hechas por
seres humanos (Marvin Minsky).

En vista de las diversas posiciones respecto a la definicin de la IA se


ha propuesto una clasificacin de las mismas:

Propuesta por

nfasis en

Criterio

Charial y McDermot

pensamiento

Inteligencia ideal,
racionalidad

Rich y Knight

comportamiento

Inteligencia humana

Estableciendo el siguiente cuadrante de relaciones:

Inteligencia humana

Racionalidad

Sistemas que piensan Sistemas


que
como humanos.
racionalmente.
Razonamient
o

Enfoque cognoscitivo.

Enfoque lgico.

Sistemas que actan Sistemas


que
como humanos.
racionalmente.
Comportamie
nto
Enfoque
Turing

test

piensan

de Enfoque
de
inteligentes.

actan
agentes

Es conveniente mencionar que en todos los casos asumimos que se


logra la inteligencia artificial con el uso de la ciencia de la
computacin apoyada en las tecnologas de la informacin y las
comunicaciones. En la prctica la IA se implementa con las
computadoras que son los dispositivos de procesamiento de
informacin ms complejos y potentes que ha desarrollado el ser
humano, y la actividad intelectual es en esencia un proceso de
manipulacin y anlisis de informacin.
La Inteligencia Artificial es multidisciplinaria y se apoya en los
conceptos y tcnicas de otras disciplinas, tales como: la Informtica,
la Ingeniera, la Sociologa, la Ciencia del Comportamiento, la
Psicologa Cognoscitiva, la Investigacin Operativa, la Economa, la
Teora General de Sistemas, etc.
Paradigmas de la inteligencia artificial.

Procesamiento

simblico:

problemas

de

naturaleza

no

numrica.

Bsqueda heurstica: hacer tratable la complejidad del proceso.

Sistemas expertos: visin conductista, funcional.

Sistemas

basados

en

conocimiento:

visin

cognoscitiva,

estructural.

Agentes

inteligentes:

personalidad

sociedades

de

componentes

con

reas de estudio de la inteligencia artificial

Fuente:
http://cio.com.mx/inteligencia-artificial-como-puede-serusada-por-las-empresas/
SOLUCION DE PROBLEMAS EN GENERAL. Estudia los sistemas
capaces de hallar mtodos para solucionar problemas de cierto grado
de complejidad.
PERCEPCION. Estudia sistemas capaces de reaccionar al entorno y
actuar sobre el, se usan sensores y para captar las variables del
mundo exterior y actuadores para modificar el entorno. Incluye
sistemas de visin artificial, reconocimiento de formas, etc.
COMPRENSION DE LENGUAJE NATURAL. Estudia sistemas que
interpretan el lenguaje natural y permiten la interaccin entre
humanos y mquinas mediante lenguajes no estructurados.
APRENDIZAJE, DEMOSTRACION DE TEOREMAS, JUEGOS. Estudia
tcnicas de aprendizaje que permitan a una mquina captar
informacin del mundo exterior y generar sus propios aprendizajes,
asimismo puede reconocer formas y smbolos matemticos con el
objetivo de demostrar teoremas. Tambin se trabaja con la teora de
juegos de manera que las mquinas se comporten inteligentemente,
por ejemplo en el juego de ajedrez. Tradicionalmente se han
estudiado escenarios que requieren deduccin como son los casos del
granjero, la gallina, el perro y el maz, los misioneros y los canbales,
etc.
SISTEMAS EXPERTOS. Son sistemas capaces de tomar decisiones
en base a informacin almacenada adecuadamente, la misma que es
tratada por un motor de inferencias. Ejemplos de estos sistemas son:
el diagnstico mdico, la ingeniera qumica, la exploracin geolgica,
el diseo de computadoras entre otros.
LENGUAJES DE LA INTELIGENCIA ARTIFICIAL. Para desarrollar
aplicaciones en Inteligencia artificial se usan lenguajes como Prolog
(basado en la lgica) y LISP (procesamiento de listas), en la

actualidad existen ambientes de desarrollo y frameworks que facilitan


tareas al programador.
HARDWARE PARA LA INTELIGENCIA ARTIFICIAL. Los programas
que implementan algoritmos y tcnicas de la inteligencia artificial
requieren procesadores veloces trabajando en paralelo, grandes
capacidades de memoria, aunque los computadores que usamos en la
actualidad han incrementado su capacidad de procesamiento, los
investigadores siguen buscando el computador ideal que
probablemente sea muy diferente a los que conocemos actualmente.
ROBOTICA. La ciencia de la robtica se apoya en diferentes tcnicas
de IA. El robot debe ser capaz de comunicarse en lenguaje natural y
debe poder realizar tareas que requieran iniciativa y originalidad, esto
implica que el robot debe aprender y llegar a realizar tareas para las
cuales no estaba inicialmente programado. Es necesario distinguir a
los robots con los autmatas programables.
CIBERNETICA. La ciberntica es una ciencia interdisciplinaria,
tratando con sistemas de comunicacin y control sobre organismos
vivos, mquinas u organizaciones. El trmino es una derivacin del
vocablo griego kybernetes que significa gobernador o piloto, y fue
aplicado por primera vez en 1948 a la teora del control de
mecanismos por el matemtico americano Norbet Wiener.
LA INGENIERIA DEL CONOCIMIENTO es una de las especialidades
que necesitan los modernos mtodos de la IA. Algunos aspectos
importantes del conocimiento son intangibles e inexplicables; el
trabajo de los ingenieros del conocimiento consiste en parte en
extraer este tipo de conocimiento de los expertos humanos y en parte
en codificar el conocimiento as obteniendo, de manera que pueda ser
procesada por un sistema de computador. El problema es que el
ingeniero del conocimiento no es un experto en el campo que intenta
programar, mientras que el experto en el tema no tiene experiencia
programando, y en cualquier otro caso este ultimo usa muchas partes
importantes de su conocimiento de manera subconsciente, por lo que
es incapaz de proporcionar la informacin de manera voluntaria
aunque as lo desee.
Actividad de anlisis y comprensin
Visualiza
este
video: https://www.youtube.com/watch?
v=Ut6gDw_Onwk
Despus de haber observado detenidamente el video responde a las
siguientes preguntas:
Pregunta de Eleccin Mltiple
La inteligencia artificial se evidencia en el comportamiento
de?

Las computadoras

El software

Los programas

La tecnologa

Los robots

En el vdeo se evidencia el comportamiento inteligente mostrado por


los robots.
Pregunta de Seleccin Mltiple
Alberto Sanfeliu precisa que los robots deben
Encontrar la solucin ptima a los problemas.

Aprender a resolver los problemas

Ser programados para resolver problemas especficos.

Adaptarse al entorno.

Trabajar en red de computadoras.

Segn Sanfeliu los robots deben aprender a resolver problemas,


adaptndose al entorno,
Pregunta de Eleccin Mltiple
1. Un robot capaz de conversar se denomina:
Interlocutor.

Conversacional.

Chateador.

Chatbot.

Chatting

El robot capaz de conversar se denomina chatbot

1.2 Evolucin histrica

Fuente:
http://www.rutherfordjournal.org/article040101.html. Rosenblatt

Los primeros investigadores realizaban sus trabajos basados en el


modelo de McCulloch y durante los aos 50 se logra el
Perceptrn de Rosenblatt, un sistema visual de reconocimiento de
patrones.
Durante los aos 60 Alan Newell y Herbert Simon trabajan la
demostracin de teoremas y el ajedrez con ayuda de computadoras
usan un programa denominado GPS (General Problem Solver:
solucionador general de problemas). ste era un sistema en el
que el usuario defina un entorno en funcin de una serie de objetos y
los operadores que se podan aplicar sobre ellos. Este programa era
capaz de trabajar con las torres de Hanoi, as como con
criptoaritmtica y otros problemas similares, operando, claro est,
con microcosmos formalizados que representaban los parmetros
dentro de los cuales se podan resolver problemas. Lo que no poda
hacer el GPS era resolver problemas ni del mundo real, ni
mdicos ni tomar decisiones importantes. El GPS manejaba
reglas
heursticas
(aprender
a
partir
de
sus
propios
descubrimientos) que la conducan hasta el destino deseado
mediante el mtodo del ensayo y el error.

Ya en los aos 70, un equipo de investigadores dirigido por


Edward Feigenbaum comenz a elaborar un proyecto para
resolver problemas de la vida cotidiana o que se centrara, al
menos, en problemas ms concretos. As es como naci el primer
sistema experto denominado Dendral, un intrprete de
espectrograma de masa construido en 1967, luego en 1974 aparece
Mycin capaz de diagnosticar trastornos en la sangre y recetar
la correspondiente medicacin, todo un logro en aquella poca
que incluso fueron utilizados en hospitales (como el Puff, variante de
Mycin de uso comn en el Pacific Medical Center de San Francisco,
EEUU).
Luego en los aos 80, se desarrollaron lenguajes especiales
para utilizar con la Inteligencia Artificial, tales como LISP y
PROLOG. Es en esta poca cuando se desarrollan sistemas expertos
ms refinados, como por el ejemplo el EURISKO. Este programa
perfecciona su propio cuerpo de reglas heursticas
automticamente, por induccin.

Segn Jackson

Jackson propone la historia de la IA en tres perodos


Perodo Ao
s

Hitos

Clsico

1950
1965

Romnt 1965
ico
1875

1975
Modern - a la
o
fech
a

Gestacin (McColluck y Pitts, Shannon, Turing).


Inicio - reunin de Darmouth College en 1956
(Minsky, McCarthy).
Redes neuronales, robtica (Shakey).
Bsqueda en un espacio de estados,
Heursticas, LISP.
Resolvedor general de problemas (GPS,
Newell, Simon).
Juegos, prueba de teoremas.
Limitaciones de pura bsqueda, explosin
combinatoria.

Representacin general del conocimiento.


Redes semnticas (Quillian).
Prototipos (frames) (Minsky).
Perceptrn (Minsky y Papert).
Lgica [Kowalski].
Mundo de bloques (SHDRLU) (Winograd).
Compresin de lenguaje, visin, robtica.
Dificultades de representacin
general,problemas de juguete.

Inteligencia especifica' vs general.


Representacin explcita del conocimiento
especfico del dominio.
Sistemas expertos, Sistemas basados en
conocimiento.
Regreso de redes neuronales (Hopfield,
Rumelhart, Hinton), algoritmos genticos

(Holland, Goldberg) Reconocimiento de voz


(HMM), incertidumbre (RB, Lgica difusa),
planeacin, aprendizaje Aplicaciones reales'
(medicina, finanzas, ingeniera, exploracin,
etc.).
Limitaciones: conocimiento superficial'

Segn Russell y Norvig

Russell y Norvig proponen los siguientes perodos


Perodo

Ao
s

Gestacin

1943
1956

Entusiasm
oy
1952
grandes
expectativ 1969
as

Hitos

McCullock y Pitts, Hebb, Shannon,


Turing,Minsky y Edmonds, Darmouth
College, McCarthy), Newell y Simon, The
Logic Theorist.

Samuel Checkers, McCarthy.


Lisp, time sharing, Programas con sentido
comn.
En 1963 McCarthy fue a Stanford SRI,
Shakey, etc.
Minsky, Evans, Student, Waltz, Winston,
Winograd, etc.
Trabajo en RN: Hebb, Widrow, Rosenblatt

Dosis de
realidad

1966
1974

Sistemas
basados
en
conocimie
nto

1969
1979

1986

Simon predeca que en 10 aos se tendra


una mquina inteligente. Predicciones
similares en traduccin automtica y
ajedrez. Teora de NP-completness.
Experimentos en machine evolution (ahora
algoritmos genticos) estaban bien
fundados pero no produjeron nada.
En 1969 Minsky y Papert proponen
Perceptrons, el mismo ao se descubri
backpropagation (Bryson y Ho)
Dendral, Mycin, HPP, Prospector, Winograd
SHDRLU Shank (no hay sintaxis), frames,
Prolog, Planner
IA como industria (1980-1988): R1/XCON,
proyecto de la quinta generacin, shells y
mquinas de Lisp ...
Hopfield, Rumelhart y Hinton y descenso

Regreso de a la
redes
fech
neuronales a

de los SE.
Cambio gradual hacia los tcnicos y lejos
de los rudos (implica cierto grado de
madurez y estabilidad) e.g.,
reconocimiento de voz (HMM),
incertidumbre (Bayes), planeacin (Tweak),
robtica, aprendizaje (PAC), etc...

Biografas

Alan Newell
Hijo de profesor de radiologa de la universidad de
Stanford se cri en San Francisco y se gradu en
Stanford, despus de graduarse pas un ao en
Princeton, pero decidi que no era un matemtico y opt
por trabajar para la RAND Corporation en un proyecto
sobre el modelado de un centro regional de defensa
area. Newell conoci a Simon, con el que comparti su
afinidad acerca de la I.A. (Fuente: Aircenter.net)
El problema cientfico le elige, usted no lo elige. Mi estilo
es ocuparse de un solo problema, a saber, la naturaleza
de la mente humana. se es el problema que he cuidado
a travs de mi carrera cientfica, y ser de esta manera
hasta el final."
Alan
Allen Newell condujo una vida muy productiva y exitosa
Newell
como informtico. Aqu est algo de la "heurstica" que
(1927,199 utiliz:
2)
"Haga lo que usted ame, quiera a lo qu usted hace."
Persona de gran energa y entusiasmo increbles que
sola decir esto.
"Ayude a otros a encontrar un estado similar, no importa
cmo de diferente puedan ser sus opciones" . Puesto
que l era feliz y seguro en lo que l haca, Allen se
imbua sobre lo que haca la gente, y podra ayudarle a

menudo a l hacer buenas opciones.


"No se preocupe de lo intrnseco o lo elegante que usted
es o cualquier persona es". Nunca le vi sentirse
amenazado por la brillantez de otra persona u ofendido
por su carencia de ella. l juzg solamente el
funcionamiento.
"Sea intelectualmente fuerte, uniformemente para todo
el mundo". Allen era intelectual incluso al crtico ms
resistente que tena siempre. Al principio, no pens que
se ajustara con su actitud de apoyo. Pero entonces
reconoc algo que no era personal; l aplic estndares
resistentes as mismo.
"Sea cuidadoso sobre lo que usted vaya a hacer, y
despus realmente hgalo". l acord hacer solamente
algunas de las cosas de las que le pregunt, ya que le
ayudara siempre con algo que crea que era importante.
Cuando hacia algo, no haba duda sobre su nivel del
esfuerzo.
1912 (el 23 de de junio): Nacimiento, Paddington,
Londres
1926-31: Escuela de Sherborne
1930: Muerte de su amigo Christopher Morcom
1931-34: Estudiante en King's College, universidad de
Cambridge.
1932-35: Mecnicos del quntum de los estudios,
probabilidad, lgica
1935: Elegido"Compaero" de King's College, Cambridge
1936: La mquina de Turing: En nmeros computables...
1936-38: En La Universidad De Princeton. Ph.D. Lgica,
lgebra, teora del nmero
1938-39: Vuelta a Cambridge. Investiga el problema
alemn de la cifra.
1939-40: Idea el Bombe, mquina para el
desciframiento de Enigma.
1939-42: Descifra el cdigo alemn Enigma
1943-45: Principal consultor de Anglo-Americano.
Alan Turing Introduccin al elemento electrnico
1945: Laboratorio Fsico Nacional, Londres
1946: Diseo del ordenador validado formalmente
1947-48: Programacin, redes neuronales y perspectivas
de la inteligencia artificial
1948: Universidad de Manchester
1949 Trabajo sobre la programacin y el primer uso
serio en el mundo de un ordenador
1950: Documento filosfico sobre inteligencia de la
mquina: el test de Turing
1951:FRS. elegido Paper en la teora no lineal del
morphogenesis
1952: Arrestado como homosexual, prdida de la

habilitacin
1953-54: Trabajo inacabado en biologa y fsica
1954 (el 7 de de junio): Muerte por el envenenamiento
de cianuro, Wilmslow, Cheshire.
Alan Turing demostr que una serie de instrucciones
sencillas podan resolver cualquier problema complejo.
l y su equipo desarrollaron el Colossus, uno de los
primeros ordenadores. Esta enorme mquina empleaba
1500 vlvulas, que se quemaban a razn de una cada
pocos minutos. El Colossus poda procesar 5000
caracteres por segundo y tena la misin de descifrar el
cdigo alemn Enigma.
Es considerado por muchos como el padre de la
inteligencia artificial.
1903 El 28 de diciembre nace en Budapest (Hungra)
Janos Louis Neumann
1921 Primer escrito matemtico publicado junto con su
tutor.
John Von 1933 Es nombrado profesor en la Universidad de
Neunman Princeton (Nueva Jersey, EEUU), refugio de Einstein y de
(1903,
otros matemticos emigrados de Europa
1957)
1942 Publica un libro sobre la aplicacin de la teora de
juegos a la economa
1944 Tiene noticias sobre el proyecto secreto ENIAC
1945 Asiste a las primeras pruebas de la bomba atmica
1947 Informe sobre el ENIAC y el bosquejo del diseo de
un nuevo ordenador, que recibir el nombre de EDVAC
(Electronic Discrete Variable Computer) y ser
construido segn sus ideas
1951 JOHNIAC, el ordenador diseado personalmente
por Neumann, entra en funcionamiento en la
Universidad de Princeton
1951-1953 Presidente de la American Mathematical
Society. Trabaja en la teora de autmatas
1955 El presidente Eisenhower le nombre comisionado
de la US Atomic Energy
1957 El 8 de febrero muere de cncer en Washington
D.C (U.S.A). Como un honor especial se dedica un
volumen completo del Bulletin of the American
Mathematical Society a su vida y obra.
Hasta 1945 la arquitectura fsica de todo ordenador
servan a la par de programa en el plano ms estricto, y
por lo tanto los cometidos de estas mquinas eran
inamovibles, a menos que los ingenieros se atreviesen a
cambiar las conexiones, esto adems de ser una tarea
ardua y en ocasiones casi imposible, era sumamente
costoso. John Von Neumann sugiri en 1945 una
alternativa hacia una arquitectura ms verstil. Nacido
en Budapest en 1903, Neumann a ofrecido a la

humanidad muchas y muy variadas aportaciones


cientficas, como la teora de los juegos, teora de los
autmatas, clculo de la propagacin de las ondas de
choque, ensayo sobre la matemtica de la teora
cuntica, etc. La arquitectura de "Von Neumann" fue
adoptada por todos los ordenadores desde la Segunda
Guerra Mundial, dicha arquitectura hace una
diferenciacin del ordenador en dos partes, que son las
siguientes: CPU (Unidad Central de Procesamiento): que
opera sobre los datos que hay que manipular. MEMORIA:
es aqu donde estn guardados los datos.
Las mquinas con arquitectura Von Neumann operan al
comps de ciclos definidos con precisin:
- Toma de la memoria la 1 instruccin.
- Toma de otra parte de la memoria el dato sobre el que
hay que operar.
- Ejecuta la operacin.
- Toma de la memoria la siguiente instruccin (en este
caso la segunda)
- etc...
El primer ordenador que adopt esta nueva arquitectura
fue el Electronic Discrete Variable Computer [Ordenador
Electrnico de Variable Discreta] (EDVAD). Ms tarde se
le uni el JOHNNIAC (de la RAND Corporation) y el
MANIAC [Maniaco], el Mathematical Analyzer, Numerical
Integrator and Calculator [Calculador, Integrador
Numrico y Analizador Matemtico.

Herbert
Simon
(1916 2001)

Herbert Simon que por aquel entonces (1955) tena 36


aos, se form como poltico cientfico, comenz
investigando sobre la administracin municipal. En 1948
particip en la administracin pblica en el Plan
Marshall, despus de la segunda guerra mundial. Poco
despus trabaj en la fundacin de la Graduate School
of Industrial Administration [Escuela de Administracin
Industrial para Postgraduados], organizacin
perteneciente a la Canegie Mellon. A Herbert Simon le
fascinaba la forma con la que las personas toman
decisiones, y sus ideas prosperaron hacia el estudio del
funcionamiento de la mente humana, hasta el punto de
desarrollar una teora que trataba de explicar cmo las
personas e instituciones toman decisiones, tesis a la que
llam Teora de la racionalidad limitada.
Investigador en Psicologa humana que empez
utilizando los smbolos para la resolucin de problemas,
hablados y escritos, aprender e inventar. Los ltimos 45
aos, la psicologa cognitiva ha construido y testeado
modelos empricos de esos procesos como los que ellos
utilizaron para resolver desde simples tareas a las ms
complicadas. Los modelos toman su forma de los

programas computarizados que simulan el


comportamiento humano.
Profesor de instituto; profesor de lingstica, teora
lingstica, sintaxis, semntica, filosofa del lenguaje y
que recientemente ha publicado el libro "El archivo de
Noam Chomsky"
Publicaciones y libros:
Linguistic Inquiry Monograph 13, Cambridge: MIT Press,
1986.
Knowledge of Language: Its Nature, Origin, and Use.
New York: Praeger Publishers, 1986.
Language and Problems of Knowledge: The Managua
Lectures, Cambridge: MIT Press, 1987.
Language in a Psychological Setting. Sophia Linguistica
Working Papers in Linguistics, No. 22, Sophia University,
Tokyo, 1987.
Generative Grammar: Its Basis, Development and
Prospects. Studies in English Linguistics and Literature,
Special Issue, Kyoto University of Foreign Studies, 1988.
"Some Notes on Economy of Derivation and
Representation." In I. Laka and A. Mahajan (eds)
Noam
Functional Heads and Clause Structure. MIT Working
Chomsky( Papers in Linguistics, 10, 43-74, 1989. Reprinted in
1928-)
Robert Freidin (ed) Principles and Parameters in
Comparative Grammar, Current Studies in Linguistics
Series No. 20, 417-454, Cambridge: MIT Press, 1991.
"On the Nature, Use and Acquisition of Language." W.
Lycan (ed) Mind and Cognition: A Reader, 627-646,
Oxford: Blackwell, 1990.
"Linguistics and Adjacent Fields: A Personal View." In A.
Kasher (ed) The Chomskyan Turn. 3-25, Oxford and
Cambridge, MA: Basil Blackwell, 1991.
"Linguistics and Cognitive Science: Problems and
Mysteries." In A. Kasher (ed) The Chomskyan Turn. 2653, Oxford and Cambridge, MA: Basil Blackwell, 1991.
"Explaining Language Use." Philosophical Topics, 20(1),
Spring 1992.
"Language and Interpretation: Philosophical Reflections
and Empirical Inquiry." In John Earman (ed) Inference,
Explanation, and Other Philosophical Frustrations:
Essays in the Philosophy of Science. Berkeley: University
of California Press, 1992.
"A Minimalist Program for Linguistic Theory." In K. Hale
and S.J. Keyser (eds) The View from Building 20: Essays
in Linguistics in Honor of Sylvain Bromberger. 1-52,
Cambridge MA: MIT Press, 1993.
Language and Thought. Wakefield, RI: Moyer Bell, 1993.
(with Howard Lasnik) "The Theory of Principles and
Parameters." In J. Jacbos, A. von Stechow, W. Sternefeld

and T. Vennemann (eds) Syntax: An International


Handbook of Contemporary Research. 506-569, Berline
and New York: Walter de Gruyter, 1993.
"Bare Phrase Structure." Cambridge: MITWPL, January
1994. Reprinted in Otero Festschrift. Georgetown
University Press (in press). "Naturalism and Dualism in
the Study of Language and Mind." International Journal
of Philosophical Studies, 2, September 1994 (in press).
Naturalism and Dualism in the Study of Language and
Mind." International Journal of Philosophical Studies, 2,
September 1994 (in press).

Claude
Elwood
Shannon
(19162001)

Clause Shannon se gradu en Michigan y fue a MIT


donde escribi una tesis sobre el uso del Algebra de
Boole para analizar y optimizar el intercambio en los
circuitos. Estuvo en Telfonos Bell en 1941 como
matemtico investigador y permaneci all hasta 1972.
Public "A Mathematical Theory of Communication" en
el diario de Bell System Technical Journal (1948). Su
trabajo fund el sujeto de la teora de informacin y
propuso un modelo esquemtico lineal de sistemas de
comunicaciones. Cre un mtodo para el anlisis de
secuencias de trminos de error en una seal para
encontrar su variedad heredada, llegando a disear una
variedad de sistemas de control. En 1952 gener un
experimento que ilustraba las capacidades de los rels
telefnicos. Shannon fue premiado con la Medalla
Nacional de Ciencias en 1966.

Marvin Minsky ha hecho multitud de contribuciones a la


Inteligencia Artificial, psicologa cognitiva, matemticas,
lingstica computacional, robtica y ptica. En aos
recientes ha trabajado como jefe en la capacidad de las
mquinas para el raciocinio. Sus concepcin de la
estructura humana intelectual y las funciones fueron
presentadas en la The Society of Mind (1987), el cual es
tambin el ttulo de uno de los cursos en el MIT. Recibi
el BA y PhD en matemticas por Harvard y Princeton. En
1951 construy el SNARC, el primero simulador de redes
neuronales. Sus otras invenciones incluyen manos
mecnicas y otros perifricos de robots, el "confocal
scanning microscope", el "Muse", sintetizador para
variaciones de msica (con E.Fredkin) y la primera LOGO
"tortuga" (con S.Papert). Miembro del NAS, NAE y NAS
Marvin
Argentina, ha recibido el premio Turing ACM, el Killiam
Minsky (1 MIT, el Prize japons, el IJCAI Research Excellent y el
927-)
Rank Prize.
Publicaciones y libros:
Alien Intelligence (enlace)
Causal Diversity (enlace)

Why People Think Computers Can't (enlace)


Music Interview with Otto Laske (enlace)
Matter, Mind and Models (enlace)
Music, Mind, and Meaning (enlace)
Symbolic vs. Connectionist (enlace)
Alienable Rights (enlace)
Afterword to True Names (enlace)
Inventing the Confocal Microscope (enlace)
Negative Expertise (enlace)
Jokes and Cognition (enlace)
Introduction to LogoWorks (enlace)
More Turing Option chapters (enlace)
Will Robots Inherit the Earth? (enlace)
The Society of Mind (henlace)
Hijo de padre catlico Irlands y madre juda lituana,
John McCarthy abraz el marxismo. En un principio fue
expulsado de la Cal Tech (Instituto Tecnolgico de
California) por negarse a seguir las clases de educacin
fsica, pero aos despus fue admitido de nuevo como
veterano de guerra, pues form parte del. Se licenci en
matemticas en 1948, despus march a Princeton para
llevar a cabo sus estudios de postgrado. Fue desde all
donde estudi a Von Neumann, sobretodo su teora de
los autmatas, y trabaj con Claude Shannon editando
una coleccin de artculos sobre el tema. El verano de
John
1955, lo pas en IBM fue all donde comprendi que las
McCarthy computadoras digitales ofrecan la maravillosa
(1927posibilidad de construir inteligencias artificiales, yendo
2011)
ms lejos que los meros estudios abstractos que le
exponan las Mquinas de Turing y la Teora de los
Autmatas de Von Neumann. Hasta los 60 trabaj en la
investigacin de temas relacionados con la I.A. arropado
por el ttulo de "profesor ayudante". Fue a partir de 1960
cuando se dej el pelo largo y se movi en movimientos
contraculturales. Luch contra el posible mal uso de la
informacin de los bancos de datos, y en los 70 busco a
su " verdadero yo" practicando con su segunda mujer
paracaidismo y escalada. Mas en 1980, despus de la
muerte de su mujer (en accidente de escalada),
McCarthy adopt una nueva imagen y personalidad,
ms conservadora, empez a vestir con trajes clsicos,
desdijo sus opiniones de los 60 acerca de la intimidad de
datos informticos, apoyo un reparto menos equitativo
de los fondos para investigacin, y se opuso al proyecto
de Edward Fredkin de crear un laboratorio mundial de
I.A.
Hurbert Dreyfus fue posiblemente el primer GRAN
detractor con el que se top la Inteligencia Artificial

Hurbert
Dreyfus
(1929-)

desde su creacin. El y su hermano Stuart asistieron en


1961 a una conferencia de Herbert Simon acerca de un
modelo psicolgico de memoria a corto plazo ideado por
este. Despus de una mesa redonda, los hermanos
Dreyfus aadieron en el libro de actas una nota de
discusin digna del mejor lenguaje diplomtico "A los
implacables profetas del ordenador omnipresente les
falta un atributo fundamental del cerebro humano: unas
cuantas neuronas no comprometidas". Tres aos
despus, en 1964 Hurbert Dreyfus fue contratado por la
RAND Corporation para evaluar la viabilidad de la I.A.
desde el punto de vista filosfico. Como confes ms
tarde Paul Armer, que fue quien contrat a Hurbert "si
hubiera sabido de sus anteriores publicaciones en contra
de la I.A. no lo habra contratado". El informe escrito por
Hurbert result una provocacin para la comunidad
cientfica de la I.A., empezando por el ttulo "La alquimia
y la inteligencia artificial". Los partidarios de la I.A. que
la defendan desde la RAND intentaron impedir su
publicacin, porqueel hecho de que Dreyfus fuese
consultor de la RAND le conceda credibilidad!. En el
informe de Dreyfus (La alquimia de la I.A.), este recurre
a argumentos filosficos para negar la viabilidad de la
I.A., todo ello formulado con la diplomacia que le
caracteriza en asuntos de esta ndole. Dicho artculo fue
el ms vendido de todos los difundidos por la RAND,
cosa que a esta misma no le hizo nada de gracia.
Seymour Paper, a su vez, respondi a La alquimia y la
inteligencia artificial con un informe titulado La
inteligencia de Hurbert L. Dreyfus: un manojo de
falacias. Pero no solo eso, sino que Paper ret a Dreyfus
a jugar una partida de ajedrez contra MacHack
(programa de ajedrez desarrollado por el MIT) y
Herbert Dreyfus perdi.
En 1972, Dreyfus extendi sus argumentaciones de La
alquimia y la inteligencia artificial hasta convertirlo todo
en un libro, titulado What Computers Can' t Do [Lo
que los ordenadores no pueden hacer]. La lucha estaba
abierta y esta continu cerca de seis aos ms.
Pero, todas estas dificultades que tuvo la I.A. en sus
"inicios" nos parecen hoy en da an ms tristes, pues
podemos comprobar que los comentarios de Dreyfus
eran acertados y precisos, pero dado que su posicin fue
la "guerra a la I.A.", y sus medidas diplomticas fueron
inexistentes todo lo que dijo Dreyfus no sirvi para
nada. Qu habra sido de la I.A. si Dreyfus hubiera
expuesto todas sus teoras de una forma ms
constructiva?, posiblemente estaramos igual (ms o
menos), pero habra colaborado a levantar un poquito

esta joven ciencia, que aunque jovenpromete.


Frank Rosenblatt, nacido en Nueva York, en 1928 se
licenci en Psicologa Social en la Universidad de Cornell
en 1950 y en 1956 obtuvo el doctorado en
Psicopatologa Experimental por la misma universidad.
El Perceptrn se cre por primera vez como una
simulacin en un IBM 704, y en 1958, Rosenblatt
entreg su proyecto a la prensa, este hecho encendi la
ira de la comunidad cientfica de I.A., otro investigador
que haba cometido el grave error de dejarse llevar por
Frank
los flashes de las cmaras.
Rosenblat En un artculo publicado por Rosenblatt en la mismsima
t (1928Science, solo el ttulo hace prever el disgusto de los
1971)
cientficos << Perceptrn: Un sustituto de los cerebros
humanos? >> La verdad es que el Perceptrn fue una
buena idea, y es posible que los problemas que obtuvo
fuesen provocados ms que nada por el exagerado
entusiasmo de su creador. El Perceptrn supona la
unin entre el Pandemonium de Selfridge y las neuronas
de McCulloch y Pitts.
Ms tarde, en 1969, Marvin Minsky y Seymour Paper
escribieron un libro llamado "Perceptrones", en donde
definan a estros como caminos sin salida. Tambin es
verdad que ahondaron en ellos y sacaron conclusiones
muy curiosas e interesantes, pero dado que ambos son
dos personalidades de peso en el mundo de la I.A., en
cuanto se public el libro, todas las investigaciones
acerca de Perceptrones se paralizaron y anularon. Frank
Rosenblatt, que segn se rumoreaba estaba ya algo
cansado de los Perceptrones sufri un accidente y se
ahog navegando.

Sistemas desarrollados

Fuente: http://www.monografias.com/trabajos64/inteligencia-artificialinvestigacion-sistemas-computo/inteligencia-artificial-investigacionsistemas-computo2.shtml

GPS - Newell, Shaw y Simon

Perceptron - Minsky y Papert Chekers - A. Samuel

MACSYMA AM - D. Lenat

ELIZA - Weisenbaum

Shakey - SRI

SHDRLU - Winogard

MYCIN - E. Shortliffe

Prospector - Duda, Hart

Hearsay II - Erman, Hayes-Roth, Lesser, Reddy

CYC - D. Lenat, R. Guha

PEGASUS - hace reservas de transporte por telfono [Zue et al.


94]

MARVEL - sistema experto en tiempo real que maneja la


informacin de Voyager y ayuda a diagnosticar fallas
[Schwuttke 92]

Sistema de diagnstico de medicina interna con capacidad de


explicar sus razones a los expertos [Heckerman 91]

NAVLAB - vehculo autnomo que viaje en forma automtica de


un extremo a otro de EUA [Pomerlau 93]

Sistema de visin que monitorea el trfico en Paris y reconoce


accidentes con los cuales llama a servicios de emergencia
[Koller 94]

DEEP BLUE - mquina paralela que juega ajedrez y primera en


derrotar al campen mundial [IBM 97]

Sistemas desarrollados (detalles)

ELIZA

MYCIN

Casi cada publicacin famosa en la IA menciona el


programa ELIZA que fue escrito a finales de los sesenta
por el profesor Joseph Weizenbaum de Massachusetts
Institute of Technology (MIT). El programa fue diseado
como una ayuda al anlisis del lenguaje y el profesor J. W.
Lo llamo as en honor a la muchacha que aparece en la
obra de G. B. Shaw, que comenz como una vendedora
callejera de flores y su vida se transform cuando el
profesor de diccin le enseo a hablar un correcto ingls,
quien asumi esta tarea como parte de una apuesta. Un
elemento muy importante del mensaje de Shaw era que
aunque Eliza continuaba siendo la misma persona, con las
misma virtudes y defectos antes y despus de su
transformacin, la gente la vea de un manera deferente,
como una seorita bien vestida y con un acento culto, en
contraste con la desastrada vendedora de flores que
hablaba de una forma vulgar. Podemos obtener la moraleja
de esta historia y observar que aunque un programa sea
muy complejo la computadora sigue siendo una
acumulacin inanimada de dispositivos electrnicos y que,
aunque algunos de los resultados puedan ser
sorprendentes la maquina es capaz de ejecutar
nicamente las tareas para las cuales fue exactamente
programada y nada ms.

La especializacin de en cualquier actividad requiere un


gran conocimiento de asociado. El proceso para poder
practicar una cierta actividad depende de la asimilacin de
este conocimiento. Un conjunto de hechos constituyen una
gran parte del conocimiento bsico sobre un tema, pero
son igualmente importantes la destreza que se puede
adquirir con la experiencia, las ideas generales en algunos
casos acerca de lo que es una buena prctica y el arte de
tomar un decisin acertada basndose en informacin
incompleta. Esto resulta tan importante para el
aprendizaje de cualquier materia o para que el estudiante
de cualquier ciencia adquiera los aspectos sutiles del
tema, como aprender las premisas bsicas. En la creacin
de un sistema experto hay una parte bastante inmediata
de codificacin de los hechos conocidos sobre un tema; la
parte ms difcil, conocida como modelizacin de la
maestra, consiste en la formulacin y aplicacin de reglas

extradas de la experiencia que se posee en el tema. En


cualquiera de los casos el sistema est constituido por una
base de conocimientos que proporcionan los hechos y un
motor de inferencia para desarrollar las deducciones
lgicas y tomar decisiones (algunas veces acompaadas
de un porcentaje de probabilidad acerca de la correccin
de las deducciones), basadas en los hechos y reglas
conocidas.
El programa MYCIN publicado por E. Schortcliffe en 1976
es un sistema que diagnostica enfermedades infecciosas,
en particular infecciones sanguneas. MYCIN lo usan
mdicos en prcticas para obtener ayuda en sus
diagnsticos, a su vez el sistema se actualiza con los
hechos y reglas de inferencia que proporcionan los
especialistas.

DENDRAL es un programa experto de anlisis qumico y se


ha aplicado con mucho xito en muchos lugares del
mundo. DENDRAL soluciona un problema de ingeniera
qumica en tres fases. En primer lugar, el programa infiere
cualquier posible restriccin sobre la solucin basndose
en el conocimiento que posee en su base de datos. A
continuacin permite a los usuarios aadir cualquier otro
tipo de restriccin y finalmente genera y comprueba una
DENDR lista de posibles soluciones, que imprime en orden de
AL
preferencia. DENDRAL se escribi originalmente en LIPS,
pero ha sido reprogramado para ser usado en varias
mquinas diferentes de entre las que se destaca la
implementacin realizada sobre un PDP-10 en Edimburgo.
Este programa basado en la estrategia de "planificar,
generar y comprobar" se usa en las universidades y en las
industrias de Estados Unidos y en Europa y representa una
de las aplicaciones prcticas de la IA que ms xito ha
conseguido de entre las desarrolladas hasta la fecha.

1.3 Sistemas computacionales y sistemas


inteligentes
La evolucin de millones de aos ha permitido que los seres humanos
logren realizar tareas consideradas como inteligentes. Posteriormente
el hombre crea las computadoras que permiten el procesamiento de
datos en base al modelo Von Neuman,, posteriormente se crean las
redes de computadoras para el tratamiento secuencial de la
informacin, a estos sistemas los denominamos sistemas
computacionales, cuando estos sistemas pueden realizar tareas tal
como si tuvieran comportamiento humano, las denominamos
sistemas inteligentes.
Los sistemas computacionales han variado desde el tratamiento de
archivos (sistemas computacionales) hasta el procesamiento del
conocimiento (Sistemas inteligentes).

Fuente: Elaboracin propia


El objetivo de los sistemas inteligentes (aunque ambicioso an) es
construir artefactos que puedan crear su propio conocimiento y
razonar sobre l, que planifique su aprendizaje y modifique su
entorno con toma de decisiones y autonoma, sin intervencin del ser
humano.
Basados en estos conceptos se han desarrollado los sistemas
expertos que pueden imitar la capacidad mental del ser humano
relacionando reglas de cierto lenguaje (hablado o escrito) y sobre su
propia experiencia pueda hacer juicios sobre cierto tema o
problemtica, estos sistemas simulan el proceso de aprendizaje,

memorizacin, razonamiento y comunicacin de sus decisiones tal


como lo hara un experto en cualquier disciplina del quehacer
humano.

1.4 Aplicaciones en las industrias y en las


empresas
Las lineas tradicionales de investigacin en IA incluyen el
razonamiento lgico, la traduccin automtica y comprensin del
lenguaje natural, la robtica y automatizacin, la visin artificial y,
especialmente, las tcnicas de aprendizaje y de ingeniera del
conocimiento. Estas dos ltimas ramas son las ms directamente
aplicables al campo de la industria y las finanzas pues, desde el punto
de vista de los negocios, lo que interesa es construir sistemas que
incorporen conocimiento y, de esta manera, sirvan de ayuda a los
procesos de toma de decisiones en el mbito de la gestin
empresarial.
Desde un punto de vista amplio las aplicaciones de la IA actualmente
se dirigen a resolver problemas en empresas industriales, disciplinas
mdicas, diseo de ingeniera, etc.
En el mbito especfico del Anlisis Contable, segn Bonsn Ponte y
Sierra Molina la Inteligencia Artificial constituye una de las lneas de
actuacin futura ms prometedoras, con posibilidades de aplicacin
tanto en el mbito de la investigacin como en el diseo de sistemas
de informacin inteligentes, que no solamente proporcionen datos al
decisor sino que recomienden el mejor curso de actuacin a seguir.
Existe un gran nmero de aplicaciones exitosas de sistemas expertos.
Algunos ejemplos de empresas que los utilizan son: American
Express, Citibank, Manufacturers Hanover Trust, Yamaichi Securities y
National Westminister Bank, que los han empleado para efectuar
evaluacin de prstamos personales, manejo de inversiones, y para
predicciones de mercados financieros.
La empresa californiana Countrywide Funding usa un gigantesco
sistema experto para evaluar sus hipotecas. El objetivo de la empresa
era desarrollar un sistema inteligente capaz de evaluar hasta 50,000
aplicaciones mensuales de una forma ms eficiente que la utilizada
tradicionalmente. Aunque inicialmente se evaluaron otras tcnicas,
tales como las redes neuronales, se opt por los sistemas expertos
debido a su capacidad de explicar la forma en que se llega a una
cierta decisin. Tradicionalmente, el proceso de evaluacin de
hipotecas es efectuado por personal altamente calificado que analiza
hasta unos 150 elementos para tomar su decisin, incluyendo la
solvencia del cliente y el valor de la propiedad. En promedio, el
proceso de evaluacin manual toma unos 50 minutos. El sistema
experto que Countrywide Funding usa ahora, llamado CLUES, tiene
unas 1,000 reglas y requiere de entre 1 y 2 minutos para procesar
una aplicacin. El sistema aprueba automticamente el 55% de las
aplicaciones y desaprueba todas aquellas que un humano rechazara.
Si el sistema recomienda que se rechace una aplicacin, la decisin

final la debe tomar un evaluador humano, quien verifica el proceso


que sigui el programa para tomar esa decisin.
La empresa aseguradora Continental Canada ha desarrollado un
sistema experto para evaluar aplicaciones de seguros para
automviles de una forma eficiente. Este sistema contiene cientos de
reglas derivadas de expertos humanos en plizas de seguros. Por
ejemplo, hay reglas especficas para asignar un riesgo ms alto a
aquellos casos en que el cliente sea joven (y por tanto inexperto) y
cuando se tengan vehculos ms viejos (y por ende ms propensos a
fallas mecnicas). El sistema procesa todas las aplicaciones y activa
ciertas alertas cuando se detectan posibles problemas. En estos
casos, la decisin final queda a cargo nuevamente de un experto
humano. Continental Canada afirma que este sistema experto redujo
los gastos administrativos de la empresa en un 55%, incrementado
las ganancias en un 30%.
Presentamos a continuacin una lista no excluyente de aplicaciones
en el campo empresarial y financiero:
AFIN (Anlisis Financiero de Balances): Realiza un anlisis de los
estados financieros. Estudia, para dos aos consecutivos, los Balances
y Cuentas de Resultados, la Memoria, el Estado de Origen y Aplicacin
de Fondos, confecciona cuadros y calcula ratios de tesorera,
endeudamiento, rentabilidad econmica y financiera, etc. Tambin
presenta un informe del diagnstico de la situacin de la empresa,
indicando una serie de recomendaciones para su mejora.
AIDE (Assistance Informatise au Diagnostic dEntreprise). Ayuda en
el diagnstico de empresas realizado por la Central de Balances del
Banco de Francia. La base de reglas est formada por dos bloques: un
bloque financiero, calculado sobre la estructura del anlisis de las
empresas por la Central de Balances, y un bloque econmico,
centrado en la competitividad, crecimiento y estrategia. El sistema
elabora un informe estudiando la posicin de la empresa, sus
potencialidades, sus resultados y su estrategia.
SEF (Systeme Expert Fiben). Proporciona a los bancos privados un
anlisis de solvencia de las compaas que stos soliciten. El
diagnstico incluye una lista de debilidades y de materias sobre las
que se requiere una investigacin ms profunda. Este sistema est
pensado para ser utilizado cuando se necesita informacin rpida
sobre una empresa en concreto, pues se puede acceder on line (va
tele texto), pero tambin proporciona informacin detallada si se trata
de operaciones importantes, como por ejemplo prstamos de gran
cuanta.
ALFEX (Alvey Financial Community Club, Helix Software Consultants y
Expert Systems International). Es un proyecto de construccin de
sistemas expertos patrocinado por el Alvey Financial Community Club.

El objetivo de este proyecto es crear sistemas expertos capaces de


asesorar sobre la salud financiera de una compaa, as como
desarrollar bases de conocimiento y herramientas apropiadas para la
construccin de estos sistemas. Proporciona un informe sobre la salud
financiera de la compaa, apoyado con grficos, previsiones de
ventas, ratios, anlisis de sensibilidad, etc.
ANALYSIS CERG Finance. Clasifica funcionalmente el Balance y la
Cuenta de Prdidas y Ganancias, calcula los flujos econmico
financieros,la rentabilidad, el potencial de crecimiento, la gestin del
activo econmico, la solvencia, la estructura financiera, etc.

ANIBAL (Anlisis Inteligente de Balances)


ERITEL Ayuda a los analistas financieros a evaluar la gestin
comercial y financiera de la empresa. Realiza un anlisis patrimonial,
financiero y econmico de la situacin de la empresa, tanto desde un
punto de vista esttico como dinmico. Consta de dos mdulos: el
primero realiza el clculo de ratios, grficos, etc. y el segundo
establece las conclusiones y presenta un informe de la compaa,
resaltando los puntos fuertes y dbiles.
FINEX Kerschberg y Dickinson Asesora en el anlisis de
financieros de las empresas pertenecientes a la industria
por mayor de petrleo. El sistema calcula los ratios
partiendo de los datos obtenidos de la Cuenta de
Ganancias y del Balance.

los estados
de venta al
financieros
Prdidas y

FINEXPERT / FINEXPRO EXPERTEAM Sirve de apoyo en el anlisis


de estados contables y en la produccin de informes financieros. El
sistema utiliza los ms recientes avances en el anlisis de estados
financieros desarrollados por el Departamento de Finanzas del Centre
dEnseignement Suprieur des Affaires (CESA) de Francia y realiza un
triple trabajo: anlisis de la rentabilidad de la empresa, anlisis de su
estrategia financiera y anlisis de los riesgos inherentes a su
explotacin. Posteriormente emite un informe sobre la gestin
financiera de la empresa, indicando los puntos fuertes y dbiles y las
sugerencias para su mejora.
FSA (Financial Statement Analyzer) Arthur Andersen & Co. Realiza la
revisin analtica de los estados financieros de una empresa. El
sistema efecta un anlisis de ratios usando las cuentas e informes
anuales que las sociedades americanas tienen que presentar a la SEC
(Securities and Exchange Commision - Comisin del Mercado de
Valores). Adems se incorporan tcnicas de procesamiento del
lenguaje natural para analizar los textos de los documentos
contables.
PRFACEEXPERT (Progiciel dExpertise Financire en dAnalyse pour
la Cration dEntreprises)
ORDIMEGA Es un sistema experto de previsin financiera. Partiendo
de los datos generados por un mdulo anterior (elPrface-Tableur),
tales como ratios, umbral de rentabilidad, fondo de rotacin,
estructura de los costes y otros, analiza la estructura y la rentabilidad
de la explotacin, las tendencias de tesorera, la rentabilidad de los
capitales, la estructura de la financiacin, las cuentas previsionales,
etc. Posteriormente se le han aadido dos mdulos ms, el PrfaceEao, que presenta definiciones comentadas y grficos y el PrfaceSynthse, que produce un informe detallado de aproximadamente 20

pginas con los datos, apreciaciones y sugerencias del sistema


experto en tres captulos: explotacin, balance y tesorera.

SAGE Banco Bilbao Vizcaya y Sema Group System. Realiza el anlisis


financiero y de gestin de empresas. Analiza los estados financieros y
los datos cualitativos de las empresas y emite un informe sobre la
calidad financiera y de gestin.
SYMEDE Fredouet Es un sistema de diagnstico de empresa
multidisciplinar compuesto por tres mdulos: jurdico, econmico y
financiero. El mdulo de diagnstico jurdico analiza la poltica
patrimonial, contractual y social de la empresa, el mdulo econmico
trata de los aspectos estratgicos de la situacin de la empresa, y el
mdulo financiero analiza la actividad de las ventas y del sector
productivo, la rentabilidad y la estructura financiera a largo y a corto
plazo.
VENTURE EXPERT EXPERTEAM Efecta un diagnstico financiero
de la empresa. Realiza el anlisis de la rentabilidad, de las estrategias
financieras y del riesgo. Emite un informe sobre la gestin de la
empresa y los planes de accin a emprender por parte de la direccin.
COMPASS Bank of Scotland Asesora sobre la concesin de
prstamos. Adems de un mdulo convencional que analiza las
cuentas de las empresas solicitantes, incorpora otros tres destinados
a tratar informacin de tipo cualitativo sobre la viabilidad, seguridad y
credenciales de la empresa solicitante, respectivamente.
KABAL Troms Sparebank (Noruega) Realiza un anlisis de los
estados financieros de una empresa. Considera aspectos relacionados
con las garantas, el mercado en el que opera la empresa, la gerencia
y la organizacin interna.
PARMENIDE Banco di Napoli Analiza los estados financieros de una
empresa, produciendo estados financieros previsionales. Tambin
incorpora informacin cualitativa y del mercado, en orden a corregir
las valoraciones de las distintas partidas de los estados financieros.

1.5 El test de Turing


Alan Turing postul en 1960 que una mquina presenta
comportamiento inteligente si un observador es incapaz de distinguir,
para un problema determinado,entre las sucesivas respuestas
proporcionadas por la mquina y un ser humano, la propuesta fue
publicada en el artculo Computing machine and intelligence.
Una persona (X) se encuentra en una habitacin mientras que en otra
habitacin se encuentra otra persona (y) y una mquina (M) que se
supone inteligente, la persona X tiene comunicacin tanto la persona
Y y la mquina M a travs de una interface. La persona X formula
preguntas que son contestadas por la persona Y y la mquina M. En el
momento que la persona X no puede distinguir las respuestas de la
persona Y y de la mquina M, se dice que la mquina M tiene un
comportamiento inteligente.

Fuente: Elaboracin propia


En Junio del 2005 cuando se realiza un concurso organizado por la
Real Society recordando el 60 aniversario de la muerte de Turing,
una mquina conocida como bot conversacional Eugene Goostman
pasa con xito el test de Turing logrando convencer al 33% de un
jurado que tena el comportamiento de un adolescente de 13 aos.

Problemas clsicos

Fuente: https://deista.wordpress.com/2010/05/09/juego-matematicolas-torres-de-hanoi/
En los cursos universitarios se han propuesto un conjunto de
problemas denominados clsicos tales como: Las N reinas, Las torres
de Hanoi, Los misioneros y los canbales., El problema de los baldes,
El problema del agente viajero, El problema del granjero, etc.
Planteamos resolver el Problema de los baldes (todo un reto para
inteligentes)
Tenemos 2 baldes de agua vacos, uno con capacidad de 6 galones y
otro con capacidad de 8 galones. Teniendo en cuenta que podemos
llenar cada uno de los baldes como queramos, Cmo podramos
llenar el balde de 8 galones exactamente hasta la mitad?
(Supongamos que no existe ninguna marca de medidas en los
baldes).
En la siguiente tabla se observan acciones que conducen a una
solucin:

Nmero

Accin

Condiciones para su aplicacin

Llenar el balde de 8 El balde de 8 gal. no est lleno


gal.

Llenar el balde de 6 El balde de 6 gal. no est lleno


gal.

Descargue el balde de El balde de 8 gal. no est vaco


8 gal.

Descargue el balde de El balde de 6 gal. no est vaco


6 gal

Vace el balde de 8 gal. El balde de 6 gal. no est lleno y el de 8


en el de 6 gal.
gal. no est vaco. El contenido
conjunto es <= 6 gal.

Vace el balde de 6 gal. El balde de 8 gal. no est lleno y el de 6


en el de 8 gal.
gal. no est vaco. El contenido
conjunto es <= 8 gal

Llene el balde de 8 gal. El balde de 8 gal. no est lleno y el de 6


con el de 6 gal.
gal. no est vaco. El contenido
conjunto es >= 8 gal

Llene el balde de 6 gal. El balde de 6 gal. no est lleno y el de 8


con el de 8 gal.
gal. no est vaco. El contenido
conjunto es >= 8 gal

1.6 Introduccin a los sistemas basados en


conociminento
Normalmente cuando se presenta un tema lo primero que hacemos
es definirlo y luego realizamos ampliaciones, proponemos esquemas,
ejemplos, etc. para enriquecer las definiciones, sin embargo en este
caso iniciamos proponiendo un conjunto de trminos que en conjunto
dan forma a los sistemas basados en conocimiento.
Las personas tenemos dominio sobre ciertos aspectos del
conocimiento que nos permite resolver problemas en un determinado
campo o disciplina. Por ejemplo, el profesional mdico resuelve
problemas de salud, el profesor trata el problema de aprendizaje, en
este sentido, a la persona que demuestra los conocimientos para
resolver determinado tipo de problemas la denominamos experto.
Este experto proporciona el conocimiento inicial necesario al sistema
artificial para tomar decisiones.
Cuando se desarrollan los sistemas tradicionales, se escriben
programas que son una secuencia de instrucciones de procesamiento
a travs de los cuales determinado usuario representa el
conocimiento y adems define cmo interacciona con el conocimiento
previo para realizar actividades de toma de decisiones. Sin embargo
en los sistemas basados en conocimientos, el usuario a quien
denominamos experto define el conocimiento y el sistema lo integra
directamente en la explicacin pertinente, la programacin no se
hace directamente sobre el conocimiento, sino ms bien se
programan algoritmos de inferencia a los que denominamos motor de
inferencias que permiten tratar el conocimiento desde una base de
datos.
A partir de la dcada del 70 se inicia el estudio de la ingeniera del
conocimiento, que comprende el diseo y construccin de sistemas
basados en conocimiento. Normalmente la programacin tradicional
se ha desarrollado a travs de la ingeniera de software. Para tratar
temas del conocimiento usando tecnologas computacionales se
requiere un nuevo enfoque por cuanto:
1. El conocimiento humano es
impreciso, incierto, tolerante.

incompleto,

inconsistente,

2. El razonamiento y respuesta proporcionado por las personas no


siempre es el mismo y muchas veces no se puede precisar.
3. El conocimiento es evolutivo por lo que implica procesos de
retroalimentacin y de aprendizaje.

4. Los mtodos tradicionales de desarrollo de software no son


aplicables al tratamiento del conocimiento.
5. Los proyectos de desarrollo requieren la participacin del
experto en los proyectos de desarrollo.
Podemos plantear dos paradigmas que orienten el estudio en nuestro
curso, el primero proporciona una orientacin estructural-cognoscitiva
y el segundo formula una orientacin funcional-conductista.
Los sistemas basados en conocimiento se desarrollan con una
orientacin cognoscitiva y se caracterizan por la capacidad
de saber o conocer sobre un tipo de problemas, ms que
capacidades intelectivas generales. Separa el conocimiento
codificado en la mquina (base de conocimientos) de los mecanismos
deductivos (motor de inferencia).

A partir del segundo paradigma (orientacin funcional-conductista)


podemos definir otro tipo de sistemas que denominamos sistemas
expertos, que se caracterizan por emular la actividad de un experto
humano cuando resuelve un problema en una rea muy concreta, es
capaz de adquirir experiencia y puede conversar con los usuarios
explicando su razonamiento.

En la siguiente figura se muestran las relaciones entre los paradigmas


planteados.

Aplicaciones de los sistemas basados en


conocimiento

Sistemas de diagnstico de fallos y sugerencia de medidas


correctoras.

Monitorizacin y control de procesos fsicos para la deteccin


temprana de anomalas en tiempo real.

Sistemas
de
apoyo
en
la
planificacin
articulando
coherentemente objetivos complejos e interrelacionados y las
acciones que optimicen el logro de los mismos teniendo en
cuenta las dependencias y restricciones existentes.

Sistemas de configuracin de mquinas, seleccionando


componentes de un conjunto en funcin de funcionalidades y
restricciones de operacin y compatibilidad.

Sistema de apoyo a la gestin del conocimiento poniendo a


disponibilidad de los usuarios el conocimiento requerido en
funcin de sus intereses con acciones de recomendacin y de
ayuda.

1.7 Estructura de los sistemas basados en


conocimiento
En la siguiente figura presentamos una primera versin de un sistema
basado en conocimiento

La interfaz de usuario permite la interaccin entre el sistema y el


usuario, en la actualidad se implementan interfaces grficas,
reconocimientos de patrones, interpretacin de lenguaje natural. De
igual manera laadquisicin del conocimiento permite interactuar
al experto con el ingeniero del conocimiento y el sistema usando
tambin interfaces emulando comportamiento humano.
El sistema contiene un conjunto de tcnicas y algoritmos para
implementar el motor de inferencias que da tratamiento a la
informacin contenida en la base de conocimientos para formular
soluciones y elgenerador de explicaciones que presenta en forma
ordenada la justificacin de las respuestas en base a los
conocimientos analizados, los mismos que se implementan
en reglas, macros y hechos.
En la memoria de trabajo se almacenan variables que permiten la
implementacin de los algoritmos y mdulos del sistema.
Planteamos ahora una segunda versin de sistema basado en
conocimientos definiendo sus requisitos:

Resolucin de problemas a partir de informacin simblica.

Resolucin mediante razonamiento y mtodos heursticos.

Capacidad de explicar sus conclusiones.

Sistema interactivo (Hombre/mquina).

Capacidad de adaptacin al entorno.

Para desarrollar un sistema basado en conocimientos con los


requisitos anteriormente planteados proponemos los siguientes
mdulos:

Mdulo de razonamiento.
o

Almacenamiento del conocimiento.

Uso e interpretacin del conocimiento.

Almacenamiento del estado del conocimiento.

Mdulo de justificacin e inspeccin de la solucin.

Interfaz de interaccin.

Mdulo de Aprendizaje

Actividades de anlisis y comprensin


Cmo hemos comentado no existe una definicin universal de la
inteligencia artificial, sin embargo podemos expresar un concepto que
nos permita definir los objetivos y metodologas usadas durante
nuestro curso, asimismo te invitamos a responder algunas preguntas
sobre la estructura de un sistema basado en conocimientos.

1. Puedes proponer un concepto de la inteligencia artificial?


2. Qu objetivos crees que debe tener la inteligencia artificial?
3. A quin se denomina el padre de la inteligencia artificial?
4. Cul es el componente que trata la informacin contenida en
una base de conocimientos?
5. Existe algn nivel de interaccin entre un sistema basado en
conocimientos y el hombre?
6. Cules son los componentes de una base de conocimientos?

Te invitamos a visualizar los siguientes videos

Historia
de
la
inteligencia
https://www.youtube.com/watch?v=ivW6zUse6h0

El
test
de
v=Y90a6Xwwh3w

Mquina
logra
aprobar
el
test
www.youtube.com/watch?v=TQuszZQKQTc

artificial:

turing: https://www.youtube.com/watch?

de

Turing:

Despus de haber observado detenidamente los videos responde a


las siguientes preguntas:

Una neuroma de McCullock-Pitts tiene:


Axn.

Sangre.

Leucocitos.

Dendritas.

Clulas madre.

Cuerpo.

Sinapsis.

La neurona artificial propuesta por McCullock-Pitts contiene Axn,


dendritas, cuerpo y sinapsis.

El test de Turing permite medir:


La capacidad de razonamiento de una mquina.

La capacidad de comportamiento humano de una mquina.

La posibilidad de una mquina para convertirse en ser humano

La capacidad de programacin que tenga una mquina.

La capacidad evolutiva de una mquina.

El test de Turing permite conocer la


comportamiento humano de una mquina.

capacidad

Cmo se llama el primer robot que supera el test de Turing?


Arturito.

Robocop.

Boris.

Eugenne.

de

Asimo.

En Junio del 2015 cuando se realiza un concurso organizado por la


Real Society recordando el 60 aniversario de la muerte de Turing,
una mquina conocida como bot conversacional Eugene
Goostman logra pasar el test de Turing.

Bibliografa
1. Bourcier, D. Inteligencia artificial y derecho. Disponible en la
Biblioteca de la USS.
2. Russell y Norving (2004). Inteligencia artificial: Un enfoque
moderno. Pearson Education S.A. 2da edicin. Espaa.
Disponible en la Biblioteca de la USS.
3. Delgado, A. Inteligencia artificial y minirobots. Disponible en la
Biblioteca de la USS.
4. Escolano, F. Inteligencia artificial, modelos,tcnicas y reas de
aplicacin.. Disponible en la Biblioteca de la USS.
5. Nilsson, N. Inteligencia artificial: Una nueva sntesis. Disponible
en la Biblioteca de la USS.
6. Pajarez, M. Inteligencia artificial e ingeniera del conocimiento.
Disponible en la Biblioteca de la USS.
7. Palma, J. Inteligencia artificial. Disponible en la Biblioteca de la
USS.
8. Ponce, P. Inteligencia artificial con aplicaciones en ingeniera.
Disponible en la Biblioteca de la USS.
9. Sistemas basados en
conocimientos. http://www.wolnm.org/apa/articulos/Sistemas_Ba
sados_Conocimiento.pdf?target=

Lecturas recomendadas
Para saber ms
Ponemos a tu disposicin y te invitamos a revisar dos interesantes
documentos que te ayudaran a reforzar y ampliar los temas que
hemos estudiado.

Documento 1: La inteligencia artificial, Hacia donde nos


lleva?

URL: http://www.comoves.unam.mx/numeros/articulo/2/lainteligencia-artificial-hacia-donde-nos-lleva
Breve descripcin:
El documento presenta un anlisis sobre la capacidad de inteligencia
artificial que pueden adquirir las mquinas, incluye una entrevista al
Dr. Ismael Espinoza del Laboratorio de Ciberntica de la UNAM quin
analiza la tendencia en la disciplina y el impacto en las personas.

...

Documento 2: El futuro de la inteligencia artificial y la


ciberntica

URL: https://www.bbvaopenmind.com/articulo/el-futuro-de-lainteligencia-artificial-y-la-cibernetica/?fullscreen=true
Breve descripcin:
El autor Kevin Warwick, Profesor de ciberntica de la Universidad de
Reading, analiza los cyborg que son seres humanos que han recibido
implantes de componentes electrnicos para realizar tareas propias
de los humanos, por ejemplo visin, audicin, locomocin, etc.

Conclusiones de la sesin
Durante esta semana de aprendizaje hemos comprendido que:

No existe una definicin nica de la inteligencia artificial.

Para nuestros fines de aprendizaje la IA busca realizar


programas de computador que evidencien un comportamiento
humano para resolver determinados problemas.

A partir de la dcada del 50 se inicia formalmente la historia de


la IA.

Existen varias posturas de diferentes autores para clasificar los


hitos histricos de la IA.

Se reconocen autores que han apoyado el desarrollo de la IA a


Turing, Minsky, McCarthy, Rossenblant, entre otros.

Despus de 60 aos una computadora logra pasar


satisfactoriamente el test de Turing.

Existen aplicaciones confiables de la IA en diversas empresas


para tomar decisiones.

Los sistemas basados en conocimientos presentan estructuras


bien definidas, por lo que pueden ser programados en
computadores.

Los sistemas expertos, generan soluciones y son capaces de


aprender, justificar sus resultados e interactuar con seres
humanos.

Metacognicin
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios
aprendizajes, es un ejercicio recomendado pata razonar e identificar
nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y
procesos mentales.
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los temas abordados?
Tuviste dificultad
solucionaste?

con

algn

tema

Qu acciones realizaste para aprender?

actividad?

Cmo

lo

Tema
02.
conocimiento

Representacin

del

Fuente: http://lanegavi.blogspot.com/
Bienvenida
Estimados estudiantes bienvenidos! a la segunda semana del curso,
donde abordaremos la representacin del conocimiento basado en
reglas, aplicaremos la lgica de predicados y conoceremos el lenguaje
Prolog para el tratamiento de reglas. Durante esta semana
trabajaremos con el IDE Turbo Prolog que nos permite trabajar en
forma sencilla introducindonos al mundo de la programacin
declarativa.. Los contenidos se complementan con interesantes
lecturas, valiosos vdeos, pginas interactivas e importantes
actividades de evaluacin que conducen a la metacognicin y a la
comprobacin de los aprendizajes logrados.
Continuemos!

Introduccin al tema

Fuente: http://psmheuristica.webnode.com.ve/clasificacion-metodosheuristicos/sistema-basados-en-el-conocimiento-sbc/
La representacin de conocimiento es el punto de partida cuando
tratamos de disear soluciones que requieren cierto grado de
inteligencia con el uso de computadoras. Los sistemas operativos
actuales permiten ejecutar programas basados en algoritmos y con
ellos podemos implementar aplicaciones informticas. El uso de la
lgica de predicados cambia el paradigma de la programacin
algortmica hacia la programacin declarativa, concentrndonos en
los datos y la definicin de reglas, sobre las cuales realizamos
inferencias para lograr soluciones relacionadas con el conocimiento
que podemos extraer de la informacin o datos.
Se ha diseado un lenguaje que nos permite implementar el
requerimiento del prrafo anterior conocido como Prolog
(Programacin lgica) y se basa en el paradigma de la programacin
declarativa que consiste precisamente declarar hechos o datos,
definir reglas que los relaciona y el motor de inferencias de Prolog
produce resultados.
Esta nueva forma de programar es sencilla, pero es necesario un
ambiente en el cual se asle los objetos computacionales para tratar
objetos de informacin durante el proceso de aprendizaje, por esta
razn presentaremos un IDE tradicional conocido como Turbo Prolog,
el cul no sirve para realizar soluciones profesionales en la actualidad,
sin embargo, nos permite ingresar al mundo de la programacin
declarativa, posteriormente presentaremos IDEs modernos y visuales.
Durante esta semana conoceremos la estructura bsica de un
programa Prolog y los conceptos de tratamiento de variables y el
procesamiento de reglas. La recursividad es un concepto

ampliamente utilizado en Prolog, por esta razn dedicamos un tem


especfico para desarrollar algunos predicados. Cuando terminemos
esta sesin de aprendizaje estaremos en condiciones de implementar
sistemas basados en conocimiento usando reglas de produccin.

Aprendizajes esperados
Ocultar
Conozcamos ahora las capacidades y actitudes a desarrollar en este
primer tema:
Capacidades
Ocultar

Conoce la lgica aplicable a la representacin del conocimiento

Identifica los patrones basados en reglas para representar


conocimiento.

Descarga e instala el IDE TURBO PROLOG para iniciar el estudio


del lenguaje PROLOG

Actitudes
Ocultar

Demuestra puntualidad y perseverancia en la asistencia de las


tutoras programadas.

Reconoce los
conocimientos.

Valora las opiniones de los dems y las recoge para fortalecer


sus conocimientos.

conceptos

de

los

sistemas

basados

en

Marco conceptual
Analiza el marco conceptual del tema
Estimado estudiante te invitamos a participar activamente de las
actividades de aprendizaje relacionadas con la representacin del
conocimiento que nos permitir conocer la lgica de predicados y su
tratamiento con el lenguaje Prolog, asimismo conoceremos un nuevo
paradigma conocido como programacin declarativa concentrando
nuestra atencin en los datos que son procesados con reglas bien
definidas, conoceremos el concepto de variables ligadas y
aprenderemos a usar la recursividad.
Observa detenidamente el siguiente esquema, en el encontrars de
un "vistazo" de manera sintetizada los principales concepto de la
temtica que abordaremos. Qu conceptos o categoras te llaman la
atencin?

2.1 Lgica

Fuente:
https://poiritem.wordpress.com/2009/11/16/6-4-2-agentesinteligentes-y-la-naturaleza-de-su-entorno/
El mundo que nos rodea est formado por un conjunto de objetos
con propiedades particulares que se relacionan entre s y que los
diferencian uno a otro, generando lo que llamamos conocimiento.
Estas relaciones se expresan en lenguaje natural hablado o escrito
utilizando oraciones que el ser humano interpreta de acuerdo a
formas de razonamiento que an son motivo de estudio por parte de
los especialistas en ramas como la psicologa, sociologa, etc.
La concepcin moderna de la IA permite definir al agente
inteligente como un ente que posee conocimiento y puede razonar
sobre las acciones a realizar frente a cierto impulso o cambio en el
mundo que lo rodea.
En trminos generales la Inteligencia Artificial (IA) busca que un
computador se comporte frente a determinadas situaciones como lo
hara un ser humano. En trminos especficos intentamos representar
el conocimiento humano en un computador y partir de ello generar
formas de razonamiento para resolver problemas que requieran cierto
grado de inteligencia.
Respecto al primer punto los lenguajes naturales estn orientados
fundamentalmente para cumplir fines de comunicacin entre seres
humanos por lo que utilizar stos para representar conocimiento en
un computador resulta una tarea muy complicada y probablemente
por el momento fuera de esquema. Por ello recurrimos a un

formalismo conocido como lgica computacional dividido en dos


partes: lgica proposicional y lgica de predicados.
Todo lenguaje tiene una sintaxis y una semntica. La sintaxis est
referida a la representacin de oraciones y define los patrones fsicos
de escritura de la oraciones, mientras que la semntica expresa el
significado de las oraciones buscando relaciones vlidas entre los
objetos en funcin del mundo que los rodea conocido como dominio.
La lgica proposicional, tambin conocida como lgica booleana,
representa sintcticamente oraciones atmicas con proposiciones
simples P, Q, R , etc, las cuales en determinado momento pueden
tener uno y solo uno de los valores verdadero o falso pero no ambos.
Se generan oraciones compuestas utilizando conectores lgicos:
conjuncin(y), disyuncin(o), negacin(no), implicacin(Si...entonces),
y otros. La semntica est representada en las tablas de verdad y
aplicando reglas se hacen inferencias lgicas o inferencias
formales. Sin embargo presenta una gran limitacin pues es
independiente de los datos.
La lgica de predicados ms compleja que la anterior presenta una
mejor alternativa para representar conocimiento. Permite tratar
proposiciones facilitando el uso de variables y funciones de variables.
Representa sintcticamente predicados y datos individuales. En forma
especfica predicado(dato1, dato2, ....) y en forma general
predicado(lista de argumentos). Esta forma sintctica constituye
una proposicin por lo tanto son aplicables las reglas de la lgica
proposicional. En un sentido general la lgica de predicados de
primer orden permite el tratamiento y cuantificacin de variables
individuales.
A manera de ejemplos:
+ Juan es hombre .....................se denota ............ hombre(Juan).
+ Pedro es padre
padre(Pedro,Juan).

de

Juan

..........se

denota

............

Desde el punto de vista de razonamiento, el computador debe


ejecutar un proceso de bsqueda de soluciones en base a oraciones
previas llamadas premisas. Al proceso de relacionar mediante la
implicacin a un conjunto de premisas para llegar a una conclusin se
le denomina deduccin o inferencia lgica.
La inferencia lgica se implementa mediante la demostracin de
teoremas, programacin lgica, lgica no monotnica, lgicas
multievaluadas y difusas.

2.2 Sistemas basados en reglas

Fuente: http://www.upf.edu/hipertextnet/numero-2/linguistica.html

Una regla es una proposicin lgica que relaciona dos o ms objetos y


que est formada por dos partes, la premisa (o premisas) y la
conclusin. La forma ms sencilla de una regla es Si (premisas
vlidas) entonces (conclusin).
El entorno que nos rodea y las circunstancias diarias en nuestras
vidas estn plagadas de reglas determinsticas:

Si el semforo est en rojo, detengo el coche.

Si tengo dinero suficiente podemos comprar la refrigeradora.

Si est lloviendo usamos el paraguas.

Un sistema basado en conocimientos, expresado en su forma ms


sencilla est formado por un conjunto de reglas, un conjunto de datos
aplicados a las reglas y un motor de inferencias que obtiene
conclusiones aplicando la lgica clsica Si ...(premisas)... entonces ...
(conclusin)... con operadores lgicos y (and, conjuncin), o (or,
disyuncin) o no (not, negacin).

2.3 Relaciones, hechos y reglas


Tomando como referencia lo comentado en el tem anterior
relacionamos los formalismos para representar conocimiento en
expresiones de lenguaje natural utilizando relaciones entre objetos:
Las siguientes expresiones representan relaciones:

Expresin

Juan es
Pedro

padre

Objetos

de Juan, Pedro

Relacin

padre

Luis est casado con Luis, Ana


Ana

est casado

Miguel
est Miguel, Fsica
matriculado en Fsica

matriculado

El profesor Garca Profesor


dicta Matemtica
Matemtica

Ana practica karate

Ana, karate

Garca, dicta

practica

Usando un lenguaje simblico podemos expresar estas relaciones de


la siguiente manera y representan hechos verdaderos o datos:
padre(Juan,Pedro).
matrimonio(Luis,Ana).
deporte_favorito(Karate, Ana).
Las formas de razonamiento en lgica estn constituidas por la
conjuncin de varias premisas y una conclusin, a manera de
ejemplo:
Si Juan est casado con Luisa y Juan es padre de Pedro entonces
Luisa es madre de Pedro.

Esta forma de razonamiento se conoce como regla de produccin y


la podemos expresar:
madre(M,H):- matrimonio(P,M), padre(P,H).
Las letras con mayscula representan variables y se lee:
M es madre de H si P est casado con M y P es padre de H.

2.4 El lenguaje Prolog

Fuente: http://sofialenguajesprogra.blogspot.com/

PROLOG trata las variables en forma muy particular, hagamos


algunas precisiones preliminares al respecto:

Existe un proceso que llamaremos emparejamiento de


expresiones que consiste en comparar biunvocamente los
componentes de dos expresiones en cada una de sus partes
componentes.

Una variable que no an no ha recibido valor alguno se llama


variable libre.

Una variable que ha recibido algn valor se llama variable


ligada. (En otros lenguajes se denomina asignar valor a una
variable)

Las variables reciben un valor cuando se pueden emparejar


biunvocamente dos expresiones.

Una variable libre puede ser ligada solamente una vez. Esto
difiere de la operacin de asignacin que existe en otros
lenguajes en los que una variable puede recibir varios valores
en forma sucesiva, en PROLOG sto ltimo no es posible por el
contexto mismo que las variables representan.

Analicemos desde la ptica de la lgica proposicional, supongamos


que tenemos las proposiciones C1, C2, C3, C4 y C5 a las que
denominaremos clusulas:
C1 :- C2, C3, C4, C5.
En trminos del lenguaje de la lgica se dice que:

C1 es una conclusin verdadera si se cumple que C2 y C3 y


C4 y C5 son premisas verdaderas.

C1 es una conclusin falsa si por lo menos una de las premisas


C2 o C3 o C4 o C5 es falsa.

Expresemos desde otro punto de vista lo mencionado anteriormente


relacionando las clusulas con predicados de lenguaje natural:
- C1 = Luis es hermano de Pedro.
- C2 = Juan es padre de Luis.
- C3 = Juan es padre de Pedro.
- C4 = Ana es madre de Pedro.
- C5 = Ana es madre de Luis.
Escribiendo expresiones en forma clausular tendremos:
Consideramos verdaderos los siguientes hechos:
Luis es hermano de Pedro.
Juan es padre de Luis.
Juan es padre de Pedro.
Ana es madre de Luis.
Ana es madre de Pedro.
Planteamos la forma de razonamiento:
A es hermano de B Si:
P es padre de A y

P es padre de B y
M es madre de A y
M es madre de B.
Formulamos la siguiente pregunta objetivo:
Luis es hermano de Pedro ?
Haciendo un anlisis de ejecucin decimos:
1. El objetivo es determinar si Luis es hermano de Pedro. Esto
equivale a decir A es hermano de B. A se liga con Luis y B
se liga con Pedro.
2. Con este objetivo entramos a la forma de razonamiento y
tomamos la primera premisa P es padre de Luis. Buscando en
los hechos encontramos Juan es Padre de Pedro por lo tanto
P se liga con Juan, decimos que sta premisa es verdadera y
continuamos con la segunda.
3. P es padre de B. En el objetivo B fue ligada con Pedro y en
la primera premisa P fue ligada con Juan, por lo tanto buscamos
el hecho Juan es padre de Pedro determinando que es
verdadera por lo que continuamos con la tercera premisa.
4. M es madre de A. En el objetivo A fue ligada con Luis, sin
embargo M an no ha sido ligada y se dice que M es una
variable libre. En ste caso buscamos en los hechos el primer
valor que pueda ligar con M. As tenemos que Ana es madre
de Luis permite ligar A con Ana hacindose verdadera por lo
que continuamos con la cuarta premisa.
5. M es madre de B. En el objetivo B fue ligada con Pedro y en
la tercera premisa M fue ligada con Ana, por lo tanto
buscamos el hecho Ana es madre de Pedro determinando
que es verdadera. As mismo no hay ms premisas que buscar.
6. Habiendo determinado que todas las premisas de la forma de
razonamiento son verdaderas concluimos que la objetivo Luis
es hermano de Pedro es verdadero
7. En el caso que una premisa hubiera sido falsa, no se contina
con la siguiente y se dice que el objetivo es falso.

8. Los hechos, el objetivo y las premisas reciben el nombre de


clusulas, Ud debe comprender que los hechos constituyen
clusulas atmicas mientras que un objetivo constituye una
clusula compuesta por otras clusulas las que a su vez pueden
ser atmicas o compuestas, as sucesivamente dando forma a
un programa completo.
9. En ste primer ejemplo podemos observar que PROLOG realiza
bsqueda de soluciones a preguntas objetivo que a partir de
ahora llamaremos goal.
Es muy importante entender este procedimiento pues representa la
forma de ejecucin de programas escritos en PROLOG, no existen
estructuras de control de flujo como IF, DO, FOR, WHILE,
REPEAT, etc.
Probemos ahora con la siguiente forma:
Consideramos verdaderos los siguientes hechos:
Juan es padre de Luis.
Juan es padre de Pedro.
Ana es madre de Luis.
Ana es madre de Pedro.
Planteamos la forma de razonamiento:
A es hermano de B Si P es padre de A y
P es padre de B y
M es madre de A y
M es madre de B.
Formulamos la siguiente pregunta objetivo:
Luis es hermano de Angel ?

Basados en el procedimiento de anlisis decimos:

1. El objetivo es determinar si Luis es hermano de Angel. Esto


equivale a decir A es hermano de B. A se liga con Luis y B
se liga con Angel.
2. Con este objetivo entramos a la forma de razonamiento y
tomamos la primera premisa P es padre de Luis. Buscando en
los hechos encontramos Juan es Padre de Pedro por lo tanto
P se liga con Juan, decimos que sta premisa es verdadera y
continuamos con la segunda.
3. P es padre de B. En el objetivo B fue ligada con Angel y en
la primera premisa P fue ligada con Juan, por lo tanto
buscamos el hecho Juan es padre de Angel determinando
que no existe por lo tanto es falso y no continuamos.
4. Habiendo determinado que una de las premisas de la forma de
razonamiento ha fallado (no es verdadera) concluimos que el
predicado objetivo Luis es hermano de Angel es falso.

2.5
Estructura
de
un
tratamiento de variables.

programa,

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html

Iniciamos el estudio del lenguaje PROLOG, para ello presentamos en


esta sesin un IDE sencillo conocido como TURBO PROLOG y
denominaremos TProlog.
Un programa en TProlog
predicates, clauses y goal.

tiene

tres

componentes

bsicos:

Predicates permite declarar las reglas y el tipo de variables que


procesan.
Clauses implementa la lgica de las reglas.
Goal conduce la ejecucin del programa.

Tipos de datos
En TProlog existen tipos de datos estndar predefinidos:

STRING...........Secuencia
comillas, incluye el espacio.

de

caracteres

encerrados

entre

SYMBOL.........Secuencia de caracteres, no incluye el espacio.


Se inicia con letra minscula. PROLOG acepta tipo symbol con el
mismo formato sintctico del tipo string.

CHAR..............Normalmente es un caracter encerrado entre


apstrofos. Sin embargo existen caracteres especiales:

\N.........donde N es un nmero que corresponde al caracter ASCII


\n..........Salto de linea
\t...........Tabulador

INTEGER........Nmero entero comprendido entre -23768 hasta


32767 inclusive

REAL...............Nmero real comprendido entre +/-1e-307 hasta +/1e+308

FILE.................Permite trabajar con datos almacenados en archivos


tanto de entrada como de salida.

Mostramos algunos ejemplos de tipos de datos:


STRING.................. hola, esta es una cadena, XYZ, 1123,
X1y2
SYMBOL................ hola, esta_es_una_cadena, esta es una cadena,
XYZ, 1123, X1y2
CHAR...................... a, 1, X
INTEGER................ 12, 134, -34, 0
REAL ......................12.34, 234.56, 234,
Observe que los tipo string y symbol son semejantes. La diferencia
radica en que los tipo de dato symbol son almacenados en una tabla

de smbolos de acceso rpido proporcionando ventaja de tiempo en


los procesos de bsqueda, sin embargo es lento al momento de
insertarlos en la tabla. La decisin de usar string o symbol depende
del programador. En nuestro caso usaremos frecuentemente el tipo
string.

Constantes
1. Las constantes en TProlog tienen la misma concepcin que en
otros lenguajes, y representan datos en s mismos.
2. Ejemplos de constantes:
Juan....... constante tipo string
234 ........... constante tipo integer

Estructura elemental de un programa


TProlog
En esta primera aproximacin a un programa TProlog indicaremos que
est formado por tres bloques: predicates, clauses y goal. En
realidad un programa PROLOG tiene ms componentes pero por el
momento trabajaremos con stos tres. Asimismo temporalmente
codificaremos dentro del programa fuente los bloques predicates y
clauses, mientras que el bloque goal lo haremos a travs de la
ventana de dialogo del ambiente TURBO PROLOG, a la cual
accederemos con la opcin RUN del men principal de TURBO
PROLOG.
Para codificar los bloques predicates y clauses que constituyen el
programa fuente utilizamos la ventana de edicin, despus de
seleccionar la opcin EDIT del men principal de TURBO PROLOG.
predicates
...
clauses
...
goal
...
El programa se inicia invocando la primera clusula del goal, luego la
segunda y as sucesivamente cada una de las clusulas que
constituyen el bloque goal. Estas a su vez invocan clusulas
implementadas en el bloque clauses. Mientras las clusulas sean
verdaderas la ejecucin del programa contina. Cuando alguna
clusula falla (es falsa), TPROLOG busca otra clusula del mismo
nombre para tratar de encintar alguna verdadera, de no encontrar
ningn verdadera, el programa termina (falla).
La codificacin de predicados tiene la sintaxis general:
predicado(lista de argumentos)
En forma especfica, a manera de ejemplo tenemos:
predicado(tipo_dato_1, tipo_dato_2, tipo_dato_3,........tipo_dato_n)

En sta declaracin de predicado los argumentos tienen un atributo


adicional que indica si contienen valores de entrada o de salida
exclusivamente o de entrada/salida a la vez segn el contexto.
Cuando se trata de predicados declarados por el usuario es
responsabilidad conocer si el argumento ser de entrada o de salida.
Cuando se trata de predicados predefinidos por PROLOG, se adjunta
en la documentacin de ayuda la clave de entrada/salida que
corresponde al predicado. Se utiliza un formato muy simple, por
ejemplo: (i,o,i,o) se interpreta como que el primer y tercer
argumentos son de entrada (input) y que el segundo y cuarto
argumentos son de salida (output).
Ejemplo:
predicates
edad(string, integer)
sexo(string, integer)
datos(string, string, string, string, string)
Observe:

El uso de los parntesis.

string significa tipo de dato cadena

integer significa tipo de dato entero

Los tipos de datos estn separados por el caracter coma ,

Al terminar la declaracin de cada predicado no se ha escrito


punto final.

Normalmente se espera que los predicados tengan que ver


directamente con la solucin de un problema, sin embargo, para
efectos de completar el programa de computador tales como
inicializar variables al inicio del programa o almacenar informacin en
disco al finalizar el mismo, o ejecutar procedimientos de control de
mens, etc, el usuario declara predicados (extra lgicos) con o sin
argumentos.
Ejemplo:
predicates

inicio,
men,
opcion(char),
programa,
fin.
Observe:

No se han usado los parntesis, ni se han declarado tipos de


datos en los predicados inicio, menu, programa y fin.

Se han usado los parntesis y ni se ha declarado tipo de datos


en el predicado opcion.

Se mantiene la regla que al terminar la declaracin de cada


predicado no se ha escrito punto final.

La codificacin de clusulas atmicas (hechos o datos) tiene la


siguiente sintaxis:
clusula(dato_1, dato_2, dato_3,........dato_n).
Ejemplo:
clauses
edad(Juan,20).
sexo(Pilar,femenino).
datos(auto,NISSAN,blanco,AG1526,1,987).
Observe:

El uso de los parntesis.

Los datos tipo string se codifican entre comillas.

Los datos tipo integer se codifican como tales.

Los datos estn separados por el caracter coma , y se


codifican de acuerdo al tipo declarado.

Al terminar la codificacin de cada clusula se ha escrito punto


final.

La codificacin de clusulas compuestas (reglas de produccin) tiene


la siguiente sintaxis:
CC :- C1, C2, C3, .......... , Cn.
Donde:

CC constituye la clusula objetivo y

C1, C2, C3 y Cn constituyen clusulas componentes.

Ejemplo:
clauses
hermano(A,B):- sexo(A,masculino),
padre(P,A),
padre(P,B),
madre(M,A),
madre(M,B),
A <> B.
Observe:

El uso de los parntesis

El uso de variables: A, B, P, M.

El uso de la constante masculino.

El uso del smbolo dos puntos guin :- que se lee SI.

El uso del smbolo coma , que se lee Y, despus de cada


clusula.

permite separar los datos entre s.

Los datos se codifican de acuerdo al tipo declarado y estn


separados por coma.

Al terminar la codificacin de la clusula compuesta se ha


escrito punto final.

Para efectos de programacin se pueden implementar clusulas


(extralgicas) con o sin argumentos.
Ejemplo:
clauses
opcion(1):- write(hola).
programa:- inicio,
menu.
fin.

Predicados extralgicos
TProlog define una serie de predicados estandard para complementar
las tareas propias del computador, tales como, limpiar pantalla, leer e
imprimir datos, etc. En ste captulo presentamos algunos de estos
predicados:
--------------------------------------------------------------------------------------------------------------------Predicado: WRITE
Sintaxis : write(Lista de argumentos) ............. (o,...............)
Donde: Lista de argumentos puede ser uno o ms argumentos
separados por comas.
Los argumentos pueden ser son constantes o variables ligadas.
Funcin: Escribe sobre el dispositivo de salida el valor de los
argumentos.
-----------------------------------------------------------------------------------------------------------------Predicado: READLN
Sintaxis: readln(X) ............. (o)
Donde: X es una variable libre cuando el predicado es invocado
X es de tipo string o symbol
Funcin : Lee desde el dispositivo de entrada una cadena hasta que
encuentra un salto de linea. En el caso del teclado, el salto de linea
corresponde a la tecla <enter>.
La cadena es ligada a la variable X.
Nota : Invocando el predicado readln(_) hace que el programa
detenga su ejecucin hasta que se presione <enter>.
En ste caso se dice que que el argumento corresponde a una
variable annima.

--------------------------------------------------------------------------------------------------------------------Predicado: READINT
Sintaxis : readint(X) ............. (o)
Donde: X es una variable libre cuando el predicado es invocado
X es de tipo integer
Funcin : Lee desde el dispositivo de entrada una cadena hasta que
encuentra un salto de linea. En el caso del teclado, el salto de linea
corresponde a la tecla <enter>.
La cadena es convertida internamente al tipo integer y ligada a la
variable X.
Si la cadena leda no corresponde con la sintaxis del tipo integer se
produce una falla.
--------------------------------------------------------------------------------------------------------------------Predicado: READREAL
Sintaxis : readreal(X) ............. (o)
Donde: X es una variable libre cuando el predicado es invocado
X es de tipo real
Funcin : Lee desde el dispositivo de entrada una cadena hasta que
encuentra un salto de linea. En el caso del teclado, el salto de linea
corresponde a la tecla <enter>.
La cadena es convertida internamente al tipo real y ligada a la
variable X.
Si la cadena leda no corresponde con la sintaxis del tipo real se
produce una falla.
---------------------------------------------------------------------------------------------------------------------

Predicado: READCHAR
Sintaxis : readchar(X) ............. (o)
Donde: X es una variable libre cuando el predicado es invocado
X es de tipo char
Funcin : Lee desde el dispositivo de entrada un caracter. (No
necesita salto de linea)
El caracter es ligado a la variable X.
--------------------------------------------------------------------------------------------------------------------Predicado: CLEARWINDOW
Sintaxis : clearwindow
Funcin : Limpia la ventana activa.
--------------------------------------------------------------------------------------------------------------------Predicado: MAKEWINDOW
Sintaxis : makewindow(NunVent, AtrPant, AtrMarco, TitVent, Fila, Col,
Prof, Ancho )
(i, i, i, i, i, i, i, i)
(o, o, o, o, o, o, o, o)
Donde: NumVent... integer ..... Nmero de Ventana
AtrPant...... integer ..... Atributo de Pantalla
AtrMarco.. integer ..... Atributo del Marco
TitVent ..... string ........ Ttulo de la Ventana
Fila ........... integer ...... Nmero de Fila, esquina superior izquierda
Col ........... integer ...... Nmero de Columna, esquina superior
derecha

Prof .......... integer ...... Nmero de filas de la Ventana


Ancho ....... integer ...... Nmero de columnas de la Ventana
Funcin 1 : Crea una ventana con los parmetros de entrada.
Funcin 2 : Liga los valores de la ventana activa con las variables
presentadas como argumentos.
A continuacin se presenta la tabla de atributos de color.
COLOR DE PANTALLA COLOR DEL CARACTER
Negro ................................ 0 Negro ................. 0
Azul ................................... 16 Azul .................... 1
Verde ................................ 32 Verde ................. 2
Cyan .................................. 48 Cyan ................... 3
Rojo .................................. 64 Rojo ................... 4
Magenta ............................ 80 Magenta ............. 5
Marrn ............................. 96 Marrn ............... 6
Blanco .............................. 112 Blanco ............... 7
Grey .................................. 8
Azul encendido ................ 24
Verde encendido .............. 40
Rojo encendido ............... 72
Magenta encendido ......... 88
Amarillo ........................... 104
Blanco alta intensidad ..... 120

Se pueden conseguir combinaciones de atributos sumando el


valor de atributo de caracter mas atributo de color de pantalla.

Para asignar atributo de encendido/apagado sucesivo agregue


128 al resultado anterior

--------------------------------------------------------------------------------------------------------------------Predicado: BEEP
Sintaxis : beep
Funcin : Genera la emisin de un sonido corto a travs del parlante
de computador.
--------------------------------------------------------------------------------------------------------------------Predicado: NL
Sintaxis : nl
Funcin : Genera un salto de linea, ubican el cursor al inicio de la
siguiente linea.

Tratamiento de variables en TProlog


1. Por el momento, es conveniente codificar un programa utilizando
letras minsculas, a menos que se indique lo contrario.
2. Los nombres de variables o identificadores en PROLOG se codifican
con por lo menos la primera letra en mayscula.
Ejemplos: Contador, Suma, Hijo, A, M, Respuesta, etc.
3. En TProlog no existe el concepto de asignacin de valor a una
variable, lo que en otros lenguajes de programacin se denomina
operacin de asignacin. En TProlog corresponde a un enunciado
lgico y en el caso que la variable de la izquierda no est ligada, se
resuelve la expresin de la derecha y se liga la variable de la
izquierda.
4. Se dice que una variable es libre (no ligada) cuando no se ha
logrado emparejar valor alguno
5. Se dice que una variable est ligada cuando se ha logrado
emparejar un valor de acuerdo al tipo de dato declarado.
6. Una variable ligada no se puede emparejar dos veces, dentro de la
misma clusula.
Ejercicio:
predicates
deporte(string, string)
clauses
deporte(Juan,basketball)
1. En el programa:
Se pueden presentar los siguientes objetivos (goal) a manera de
ejemplos:

deporte(A,B)................................. A ligado con Juan, B ligado


con basketball.

deporte(Juan,C)........................ C ligado con basketball.

deporte(D,basketball).............. D ligado con Juan.

deporte(Pedro,E)...................... E no ligado.

deporte(F,voleyball)................. F no ligado.

2. En los siguientes ejemplos se presenta otra forma de ligar variables


con su respectiva interpretacin:

X1 = 5 ............... X1 ligado con 5.......................... tipo integer

X2 = Carlos.... X2 ligado con Carlos............. tipo string

X3 = 3 .............. X3 ligado con 3....................... tipo char

X4 = 4.5 ............ X4 ligado con 4.5 .................... tipo real

VARIABLES ANONIMAS
Algunas veces no se requiere el valor de un argumento en cierta
clusula, PROLOG provee de un concepto de variable annima, que se
denota por el caracter subrayado _ y al momento de leer el
predicado se ignora el valor del argumento referenciado.
A manera de ejemplo, supongamos que tenemos el predicado
alumno: alumno(Nombre, Sexo, Talla, Peso)
y en cierta clusula solo interesa el nombre y el peso, podemos
invocar la siguiente clusula: alumno(Nombre, _, _, Peso)
que se lee: el alumno Nombre tiene un peso de Peso kilos.
ENTRADA / SALIDA ESTANDARD
Los predicados estandard para entrada/salida son read y write
descritos anteriormente. Veamos un ejemplo simple. Programa que
lee una cadena relacionada con cierto valor:

predicates
lee_c(string,string) /* lee_c(M, C): muestra el mensaje M y lee la
cadena C */
clauses
lee_c(M,C):- write(M),
beep,
readln(C).
goal
clearwindow,
lee_c(Entre un nombre: ,X),
write(Nombre ledo: ,X),
nl,
lee_c(Presiona <enter> para continuar ... ,_).

2.6 Recursividad

Fuente:
http://www.mundonet.es/control-de-flujo-estructurasiterativas-ejercicio-3.html?Pg=Entrega10.htm

La recursividad es una tcnica de programacin muy importante para


quienes trabajan en PROLOG. Si Ud. escucha por primera vez ste
trmino, le recomiendo leer detenidamente ste captulo, en caso
contrario, si Ud. ya conoce el concepto le recomiendo leer los
programas codificados en PROLOG y pasar al siguiente captulo.
Desde el punto de vista conceptual decimos que una definicin es
recursiva cuando se basa en ella misma, mientras que desde el
punto de vista de la programacin la forma ms conocida de
recursividad es cuando un procedimiento o funcin se invoca a s
mismo. Tambin existe recursividad cuando la declaracin de un
tipo de datos se hace en base a s misma. Cmo podemos definir
algo sobre s mismo?. Veamos un ejemplo. Imaginemos un profesor de
cierto curso de dibujo frente a una pizarra y decide dibujarse el
mismo y la pizarra en la pizarra del aula. Que ocurri? Dentro de la
pizarra real del aula aparece un rectngulo que es la pizarra recursiva
y en ella incluido el dibujo del profesor. Si repetimos la experiencia
varias veces tendremos cada vez una nueva pizarra dentro de otra.
Eso ocurre ms o menos en los procesos recursivos.
Cmo entendemos la recursividad ?
Recordemos en primera instancia como se conciben en implementan
los procesos no recursivos que en ste captulo denominaremos
iterativos.
El factorial de un nmero puede ser expresado en forma iterativa.
Por ejemplo:
factorial(0) = 1
factorial(1) = 1
factorial(2) = 1 * 2 = 2
factorial(3) = 1 * 2 * 3 = 6
factorial(4) = 1 * 2 * 3 * 4 = 24
factorial(5) = 1 * 2 * 3 * 4 * 5 = 120
Entonces como una consecuencia de estos resultados podemos
deducir que:
factorial(8) = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 = 40580

La implementacin de sta frmula en un lenguaje de computador


con FOR es muy simple. Por ejemplo para calcular el factorial de 8
tendremos:
n = 8,
factorial = 1,
FOR i = 2 to n DO
factorial = i * factorial .
Esta implementacin realmente lo que est desarrollando es una
secuencia del siguiente tipo:
factorial(0) = 1
factorial(1) = 1 * factorial(0)
factorial(2) = 2 * factorial(1) = 2
factorial(3) = 3 * factorial(2) = 6
factorial(4) = 4 * factorial(3) = 24
factorial(5) = 5 * factorial(4) = 120
Desde otro punto de vista cuando se trabaja con asignacin esttica
de memoria son muy convenientes las estructuras de control de flujo
iterativas. As implementar soluciones con arreglos (arrays) o
procesos repetitivos se facilita mucho si se tienen estructuras tales
como FOR, DO, CASE, WHILE, REPEAT ... UNTIL, etc.
Imprimir los primeros 20 elementos de un arreglo notas se consigue
con la implementacin del siguiente cdigo Pascal:

FOR i = 1 TO 20 DO writeln(notas(i));
El proceso repetitivo de la ejecucin de un menu se puede programar
de la siguiente manera:

opcion =
MIENTRAS
fin

opcion

<>

INICIO
{cuerpo del menu]
LEER(opcion)
proceso(opcion)
FIN
Muchos lenguajes como C y Pascal ejecutan procesos iterativos
basados en stas estructuras. Esto es propio de ellos porque han sido
diseados para implementar soluciones algortmicas.
Cambiemos de giro a nuestros comentarios.
La definicin recursiva del factorial de un nmero es:
factorial(0) = 1
factorial(n) = n * factorial(n-1), si N > 0
La aplicacin de sta frmula recursiva nos permite deducir que:
factorial(8) = 8 * factorial(7)
Observe que para calcular el factorial de 8 se requiere el factorial de
7, que en ste momento no conocemos. As para calcular el factorial
de 7 necesitamos conocer el factorial de 6. Para calcular el factorial
de 5 necesitamos conocer el factorial de 4 y as sucesivamente.
Cuando lleguemos al factorial de 0 podemos detener el proceso
recursivo y completar los factoriales que quedaron pendientes de
solucin.
Los lenguajes como C y Pascal tienen la capacidad de procesar
funciones recursivas, ademas tienen definida la operacin de
asignacin por lo que el siguiente cdigo implementa la funcin
factorial de un nmero en forma recursiva:

FUNCION factorial(n:integer)
INICIO
SI n = 0 ENTONCES factorial = 1.
SI n > 0 ENTONCES factorial = n * factorial(n-1).
FIN
Observamos que el cdigo comprendido entre el bloque INICIO ... FIN
es muy semejante a la definicin recursiva por lo que resulta una
codificacin ms natural que la usada con la estructura FOR.
La implementacin de un procedimiento menu desde un enfoque
recursivo podra ser:
menu()
INICIO
{cuerpo del menu}
LEER(opcion)
proceso(opcion)
SI opcion <> fin ENTONCES menu
FIN
Desde otro punto de vista cuando se trabaja con asignacin dinmica
de memoria es muy importante el tratamiento de punteros y las
implementaciones se basan en procesos recursivos. La definicin de
estructuras de datos tipo listas o rboles requiere declaraciones
recursivas
y
sus
procesos
son
implementados
tambin
recursivamente.
El siguiente cdigo declara recursivamente la estructura lista de
nmeros:
NUEVO_TIPO

lista_numeros = REGISTRO
INICIO
dato(ENTERO)
sig_dato(PUNTERO a lista_numeros)
FIN
Mientras que el siguiente cdigo implementa un procedimiento
recursivo para recorrer la lista (Intente implementarlo usando FOR):
recorre_lista()
INICIO
FIN

Que sucede cuando un procedimiento se invoca a s mismo?


Ocurre exactamente lo mismo que cuando un procedimiento invoca a
otro. Se interrumpe el procedimiento que hace la llamada, las
variables locales y la direccin de retorno se almacenan en una pila y
se pasa el control al procedimiento invocado, cuando ste ltimo
termina su ejecucin se retira de la pila la direccin de retorno y las
variables locales continuando normalmente el procedimiento inicial.
La situacin se complica cuando se invoca muchas veces un
procedimiento y es posible que se sobrecargue la pila ocasionando
problemas de memoria que de acuerdo al tipo de compilador y al
lenguaje tendr diferentes repercusiones.
En toda codificacin recursiva es importante distinguir dos partes. La
primera es aquella en la que el procedimiento se invoca a s mismo
(En el caso del factorial: SI n > 0 ENTONCES factorial = n * factorial(n1). En el caso del menu: SI opcion <> fin ENTONCES menu) y la
segunda es aquella en la que se indica el punto en el cual se termina
de auto invocar el procedimiento (En el caso del factorial ste punto
se da cuando n = 0 y en el caso del men se da cuando opcion =
fin). Esta segunda parte cumple un rol muy importante pues de otra
manera el proceso recursivo nunca terminara y se producira la
sobrecarga de la pila con la consecuente interrupcin del programa.

Porqu es importante la recursividad para los programadores en


PROLOG?
Recordemos que en PROLOG no es posible ligar una variable dos
veces dentro de la misma clusula por lo tanto estas expresiones son
erradas:
X = X +1
factorial = i *factorial
Para implementar en PROLOG estas expresiones es necesario utilizar
una variable libre que reciba el valor de la anterior incrementado:
X_N = X + 1 C
Factorial_N = I * Factorial
Desde otro punto de vista recordemos que PROLOG no tiene
predefinidas las estructuras de control de flujo FOR, DO, CASE, WHILE,
REPEAT ... UNTIL, etc. Esto es razonable por cuanto la concepcin de
PROLOG no es precisamente el procesamiento algortmico.
Cmo podemos escribir cdigo recursivo PROLOG a partir de una
frmula?
En verdad que escribir clusulas recursivas para un principiante
siempre resulta una tarea compleja, pero si ste es su caso no se
preocupe, le aseguro que luego de adquirir cierta pericia encontrar
en la recursividad un forma muy poderosa y elegante de resolver
problemas en cualquier lenguaje.
Para ello planteamos un mtodo de aproximaciones que nos permitir
a partir de la frmula llegar a los predicados y luego casi en forma
inmediata escribir el cdigo PROLOG.
Usaremos a manera de ejemplo la definicin matemtica recursiva
del factorial:
factorial(0) = 1
factorial(N) = N * factorial (N - 1)
1. Expresamos una primera aproximacin de predicados en base a la
definicin recursiva de factorial:
"factorial de 0 es 1."
"factorial de N es (N * factorial de (N-1)) Si N > 0."

2. La expresin factorial de (N-1) es inconsistente por lo que debe


ser reformulada como:
factorial de (N-1) es FACTN1
Donde FACTN1 es una variable que contendr el factorial de (N-1).
3. Tendremos entonces los siguientes predicados:
"factorial de 0 es 1."
"factorial de N es (N * FACTN1) Si N > 0 y
factorial de (N-1) es FACTN1."
4. Recuerde que en lgica de predicados de primer orden solo existen
variables individuales por lo que en la expresin factorial de N es
(N * FACTN1), la inclusin del producto (N * FACTN1) no es vlida.
La solucin es reemplazar este producto por una variable en ste
caso F.
5. Tendremos entonces los siguientes predicados:
"factorial de 0 es 1."
"factorial de N es F Si N > 0 y
factorial de (N-1) es FACTN1 y
F es N * FACTN1."
6. Asimismo la diferencia (N-1) debe ser reemplazada por una
variable, en ste caso N1. (por la razn mencionada en el tem 4).
7. Tendremos entonces los siguientes predicados:
"factorial de 0 es 1."
"factorial de N es F Si N > 0 y
N1 es N - 1 y
factorial de N1 es FACTN1 y
F es N * FACTN1."
8. Habiendo completado el planteamiento de los predicados,
reemplazamos la palabra Si por el smbolo :- y los conectores y
por comas , consiguiendo en forma inmediata la codificacin

PROLOG. El predicado "factorial de N es F" sugiere la forma


factorial(N,F)
9. De acuerdo con el predicado anterior tendremos el siguiente cdigo
PROLOG:
predicates
factorial(integer,
integer)
clauses
factorial(0,1).
factorial(N,F):- N>0,
N1=N-1,
factorial(N1,FACTN1),
F=N*FACTN1.
En conclusin:

Una clusula es recursiva cuando se invoca a ella misma.

Los procesos recursivos son contrarios a los procesos iterativos.

Los procesos recursivos requieren grandes cantidades de


memoria.

Actividades de anlisis y comprensin


Preguntas de reflexin.
Cmo hemos comentado no existe una definicin universal de la
inteligencia artificial, sin embargo podemos expresar un concepto que
nos permita definir los objetivos y metodologas usadas durante
nuestro curso, asimismo te invitamos a responder algunas preguntas
sobre la estructura de un sistema basado en conocimientos.
1. Puedes proponer un concepto de la inteligencia artificial?
2. Qu objetivos crees que debe tener la inteligencia artificial?
3. A quin se denomina el padre de la inteligencia artificial?
4. Cul es el componente que trata la informacin contenida en
una base de conocimientos?
5. Existe algn nivel de interaccin entre un sistema basado en
conocimientos y el hombre?
6. Cules son los componentes de una base de conocimientos?
Retroalimentacin
1. Una definicin fue presentada en el documento: la IA es la rama
de la ciencia de la computacin que estudia la resolucin de
problemas no algortmicos mediante el uso de cualquier tcnica de
computacin disponible, sin tener en cuenta la forma de
razonamiento subyacente a los mtodos que se apliquen para lograr
esa resolucin.
2. Se proponen los siguientes objetivos de la inteligencia artificial:
(a) estudiar el comportamiento inteligente de las personas humanas,
y
(b) hacer programas de ordenador inteligentes capaces de imitar el
comportamiento humano.
3. Alan Turing es considerado el padre de la Inteligencia artificial.
4. El motor de inferencias permite dar tratamiento a la informacin
contenida en una base de conocimientos.

5. Todo sistema basado en conocimiento tiene una interfaz (en la


actualidad con caractersticas grficas o visuales) para comunicar al
sistema con el ser humano.
6. Una base de conocimientos est formada por reglas y hechos.

Actividad de anlisis y comprensn.


Te invitamos a visualizar los siguientes videos

Historia
de
la
inteligencia
https://www.youtube.com/watch?v=ivW6zUse6h0

El
test
de
v=Y90a6Xwwh3w

Mquina
logra
aprobar
el
test
www.youtube.com/watch?v=TQuszZQKQTc

turing:

artificial:

https://www.youtube.com/watch?

de

Turing:

Despus de haber observado detenidamente los vdeos responde a


las siguientes preguntas:
Pregunta
Una neuroma de McCullock-Pitts tiene:
Axn.

Sangre.

Leucocitos.

Dendritas.

Cuerpo.

Clulas madre.

Sinapsis.

Retroalimentacin
La neurona artificial propuesta por McCullock-Pitts contiene Axn,
dendritas, cuerpo y sinapsis.
El test de Turing permite medir:
La capacidad de razonamiento de una mquina.

La capacidad de comportamiento humano de una mquina.

La posibilidad de una mquina para convertirse en ser humano

La capacidad de programacin que tenga una mquina.

La capacidad evolutiva de una mquina.

Retroalimentacin
El test de Turing permite conocer la
comportamiento humano de una mquina.

capacidad

de

Cmo se llama el primer robot que supera el test de Turing?


Arturito.

Robocop.

Boris.

Eugenne.

Asimo.

Retroalimentacin
En Junio del 2015 cuando se realiza un concurso organizado por la
Real Society recordando el 60 aniversario de la muerte de Turing,
una mquina conocida como bot conversacional Eugene
Goostman logra pasar el test de Turing.

Bibliografa
1. Bourcier, D. Inteligencia artificial y derecho. Disponible en la
Biblioteca de la USS.
2. Russell y Norving (2004). Inteligencia artificial: Un enfoque
moderno. Pearson Education S.A. 2da edicin. Espaa.
Disponible en la Biblioteca de la USS.
3. Delgado, A. Inteligencia artificial y minirobots. Disponible en la
Biblioteca de la USS.
4. Escolano, F. Inteligencia artificial, modelos,tcnicas y reas de
aplicacin.. Disponible en la Biblioteca de la USS.
5. Nilsson, N. Inteligencia artificial: Una nueva sntesis. Disponible
en la Biblioteca de la USS.
6. Pajarez, M. Inteligencia artificial e ingeniera del conocimiento.
Disponible en la Biblioteca de la USS.
7. Palma, J. Inteligencia artificial. Disponible en la Biblioteca de la
USS.
8. Ponce, P. Inteligencia artificial con aplicaciones en ingeniera.
Disponible en la Biblioteca de la USS.
9. Sistemas
basados
en
conocimientos.
http://www.wolnm.org/apa/articulos/Sistemas_Basados_Conocim
iento.pdf?target=

Lecturas recomendadas
Para saber ms
Ponemos a tu disposicin y te invitamos a revisar dos interesantes
documentos que te ayudaran a reforzar y ampliar los temas que
hemos estudiado.

Documento 1: La inteligencia artificial, Hacia donde nos


lleva?

URL:
http://www.comoves.unam.mx/numeros/articulo/2/lainteligencia-artificial-hacia-donde-nos-lleva
Breve descripcin:
El documento presenta un anlisis sobre la capacidad de inteligencia
artificial que pueden adquirir las mquinas, incluye una entrevista al
Dr. Ismael Espinoza del Laboratorio de Ciberntica de la UNAM quin
analiza la tendencia en la disciplina y el impacto en las personas.

...

Documento 2: El futuro de la inteligencia artificial y la


ciberntica

URL:
https://www.bbvaopenmind.com/articulo/el-futuro-de-lainteligencia-artificial-y-la-cibernetica/?fullscreen=true
Breve descripcin:
El autor Kevin Warwick, Profesor de ciberntica de la Universidad de
Reading, analiza los cyborg que son seres humanos que han recibido
implantes de componentes electrnicos para realizar tareas propias
de los humanos, por ejemplo visin, audicin, locomocin, etc.

Conclusiones de la sesin
Durante esta semana de aprendizaje hemos comprendido que:

No existe una definicin nica de la inteligencia artificial.

Para nuestros fines de aprendizaje la IA busca realizar


programas de computador que evidencien un comportamiento
humano para resolver determinados problemas.

A partir de la dcada del 50 se inicia formalmente la historia de


la IA.

Existen varias posturas de diferentes autores para clasificar los


hitos histricos de la IA.

Se reconocen autores que han apoyado el desarrollo de la IA a


Turing, Minsky, McCarthy, Rossenblant, entre otros.

Despus de 60 aos una computadora


satisfactoriamente el test de Turing.

Existen aplicaciones confiables de la IA en diversas empresas


para tomar decisiones.

Los sistemas basados en conocimientos presentan estructuras


bien definidas, por lo que pueden ser programados en
computadores.

Los sistemas expertos, generan soluciones y son capaces de


aprender, justificar sus resultados e interactuar con seres
humanos.

logra

pasar

Metacognicin
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios
aprendizajes, es un ejercicio recomendado pata razonar e identificar
nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y
procesos mentales.
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los temas abordados?
Tuviste dificultad
solucionaste?

con

algn

tema

Qu acciones realizaste para aprender?

actividad?

Cmo

lo

Tema 03. Continuando con Prolog

Fuente:http://www.desarrolloweb.com/articulos/1573.php
Bienvenida
Estimados estudiantes bienvenidos! a la tercera semana del curso,
donde continuaremos estudiando el lenguaje Prolog. Durante esta
semana trabajaremos con dos IDEs adicionales, usaremos SWI-Prolog
en sus dos versiones texto y grficos y el IDE Visual Prolog en su
versin comunitaria. Esta semana conoceremos las rutas para buscar,
descargar e instalar los IDEs e implementamos ejemplos de
programacin en Prolog que nos permitirn conocer el tratamiento de
variables y la recursividad. Los contenidos se complementan con
interesantes lecturas, valiosos videos, pginas interactivas e
importantes actividades de evaluacin que conducen a la
metacognicin y a la comprobacin de los aprendizajes logrados.
Avancemos en
conocimiento!

el

interesante

mundo

del

tratamiento

del

Introduccin al tema

Fuente: Fuente:http://www.swi-prolog.org/gtrace.html
La programacin en Prolog es conocida como declarativa porque solo
se requiere declarar hechos o datos considerados verdaderos y reglas
que relacionan estos, el motor de inferencias de Prolog permite
obtener conclusiones referidas a las reglas en forma automtica, no
se requiere programar algoritmos de bsqueda.
La sesin anterior tuvimos la oportunidad de escribir programas en
Turbo Prolog, durante esta semana trabajaremos con SWI-Prolog y con
Visual Prolog, dos IDEs de distribucin gratuita, sobre los cuales
podemos escribir nuestros programas en Prolog.
En Internet existen numerosas referencias a tutoriales y manuales
relacionados con la descarga, instalacin y ejecucin de los IDEs
mencionados. En nuestro caso mostraremos las rutas de descarga
desde las pginas oficiales y los mtodos de instalacin y ejecucin
del primer programa conocido como hola mundo. Luego
desarrollaremos programas que nos permitan comprender la
programacin Prolog que se diferencia de la programacin
algortmica.
En los programas que abordaremos intentaremos proporcionar las
bases para el procesamiento de la informacin convirtindola en
conocimiento. A manera de ejemplo proporcionaremos datos sobre los
miembros de cierta familia, luego incluiremos reglas que declaren las
relaciones entre ellos tales como padre, madre, hermano, abuelo, etc,
y consultaremos a Prolog sobre las relaciones familiares declaradas

anteriormente. Podemos seguir este esquema para tratar cualquier


sistema de conocimientos, por ejemplo, la familia de productos de un
almacn, informacin de enfermedades y sntomas para hacer
diagnstico mdico, los componentes de una computadora para
realizar configuraciones, los hbitos y costumbres de compra de
cierto grupo de personas para generar ofertas comerciales, los
perfiles de profesionales para cubrir puestos de trabajo, etc.
SWI-Prolog es un software de libre disposicin de la Universidad de
Amsterdam disponible en http://www.swi-prolog.org/ est basado en
la sintaxis de Edimburgo, tradicionalmente fue interpretado pero
ahora se puede compilar y tiene abundante informacin, tutoriales y
manuales de referencia. Corre sobre una variedad de mquinas con
S.O Windows, Linux.
Visual Prolog es un lenguaje de programacin potente que combina
las mejores caractersticas de los paradigmas de programacin lgica,
funcional y orientadas a objetos de una manera consistente y
elegante. Con Visual Prolog se pueden crear aplicaciones para las
plataformas Microsoft Windows 32/64. Es compatible con las
soluciones cliente-servidor y patrones MVC. Visual Prolog es
especialmente adecuado para tratar con conocimientos complejos.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este
tercer tema:
Capacidades

Conoce el procedimiento para descargar e instalar software de


programacin en PROLOG.

Conoce y utiliza el IDE SWI-Prolog para el procesamiento de


reglas combinando interfaces grficas.

Conoce y utiliza el IDE Visual Prolog para desarrollar


aplicaciones combinando el procesamiento del conocimiento
con interfaces visuales.

Actitudes

Valora la problemtica para representar conocimiento.

Reconoce un problema a travs de acciones y alternativas.

Asume responsabilidad en el cumplimiento de las actividades


programadas.

Asume una posicin pro activa respecto a las tcnicas de


representacin del conocimiento.

Valora la tecnologa visual para la implementacin de proyectos


basados en conocimiento.

Marco conceptual

Analiza el marco conceptual del tema


Observa detenidamente el siguiente esquema, en el encontrars de
un "vistazo" de manera sintetizada los principales concepto de la
temtica que abordaremos. Qu conceptos o categoras te llaman la
atencin?

3.1 Descarga
Prolog.

instalacin

de

SWI-

Fuente: http://www.swi-prolog.org/download/stable

SWI-Prolog es un IDE gratuito para desarrollar aplicaciones escritas en


lenguaje Prolog. Es utilizado ampliamente en la educacin,
investigacin y en el mundo empresarial. Desarrollado desde 1987.
Se
descarga
desde
su
pgina
inicial:
http://www.swiprolog.org/download/stable seleccionando el sistema operativo de
nuestra mquina. El archivo descargado tiene extensin .exe, luego
se ejecuta y se ingresa la siguiente informacin:
Ruta de instalacin: C:\Program Files\swipl
Extension for Prolog files: pl
Start menu program group: SWI-Prolog
Se sugiere descargar el manual de referencia original: http://www.swiprolog.org/download/stable/doc/SWI-Prolog-6.6.6.pdf

Ejecutando el primer programa


Ocultar
SWI-Prolog trae por defecto un programa denominado likes.pl
disponible en la carpeta C:\Program Files\swipl\demo con el
siguiente contenido:
%% Demo coming from http://clwww.essex.ac.uk/course/LG519/2facts/index_18.html
%%
%% Please load this file into SWI-Prolog
%%
%% Sam's likes and dislikes in food
%%
%% Considering the following will give some practice
%% in thinking about backtracking.
%% ?- likes(sam,dahl).
%% ?- likes(sam,chop_suey).
%% ?- likes(sam,pizza).
%% ?- likes(sam,chips).
%% ?- likes(sam,curry).
likes(sam,Food) :indian(Food),
mild(Food).
likes(sam,Food) :chinese(Food).

likes(sam,Food) :italian(Food).
likes(sam,chips).
indian(curry).
indian(dahl).
indian(tandoori).
indian(kurma).
mild(dahl).
mild(tandoori).
mild(kurma).
chinese(chow_mein).
chinese(chop_suey).
chinese(sweet_and_sour).
italian(pizza).
italian(spaghetti).
Observamos la declaracin de las clausulas likes(X, Y ) , indian(X),
mild(X), chinese(X), italian(X). las mismas que desde el punto de vista
de un sistema basado en reglas las podemos catalogar como reglas
de produccin (likes) y el resto como hechos o datos.
Observar tambin que las palabras que comienzan con minscula
dentro de los parntesis son constantes, mientras que las que
comienzan con mayscula son variables, sobre las que se aplica el
emparejamiento durante el procesamiento backtracking.
Sugerimos los siguientes pasos para ejecutar un programa con SWIProlog:
1. Crear una carpeta C:\programasPL

2. Dirigirse a la ruta del programa C:\Program Files\swipl\demo


y copiar el archivo likes.pl a la carpeta C:\programasPL
3. Hacer doble clic en el archivo copiado, aparece la ventana de
SWI-Prolog.
4. En el prompt 1 ?- digitamos likes(sam, X).
Prolog responde: X = dah
5. Presionamos Shift + ; y Prolog sigue respondiendo.
6. El proceso termina cuando aparece el prompt 2 ? Continuamos realizando individualmente las siguientes consultas en
forma sucesiva:
?- likes(sam,dahl).
?- likes(sam,chop_suey).
?- likes(sam,pizza).
?- likes(sam,chips).
?- likes(sam,curry).
Actividad de anlisis y comprensin
Ocultar
Se sugiere analizar el comportamiento de las reglas cuando se realiza
el backtracking de las reglas y emparejamiento de las variables.
De lo expuesto hasta el momento podemos deducir.
1. Los programas fuente para WSI-Prolog tienen extensin .pl
2. El cdigo fuente se puede escribir en cualquier procesador de
textos (notepad o wordpad).
3. Haciendo doble clic sobre el archivo fuente se invoca SWIProlog.
4. Es necesario conocer los conceptos de backtracking y
emparejamiento.

Escribiendo programas con SWI-Prolog.


Para escribir programas presentamos un primer mtodo que consiste
en usar un procesador de textos (Block de notas, WordPad) y luego
ejecutarlos con SWI-Prolog.
Creamos un archivo texto denominado p01.pl en la carpeta
C:\programasPL con el siguiente contenido:

%%
Declaracin
hechos

de

===============
=======
hombre(pedro).
hombre(alberto).
hombre(jorge).
hombre(carlos).
hombre(juan).

Hacemos doble clic sobre


automticamente SWI-Prolog.

el

archivo

creado

se

invoca

En el prompt 1 ?- podemos realizar consultas digitando por ejemplo:


hombre(alberto). SWI-Prolog contesta con true indicando que es un
dato verdadero. Si digitamos hombre(luis). SWI-Prolog responde
false indicando que no es vlido segn los datos proporcionados al
programa.
Creamos ahora un segundo programa al que denominaremos p02.pl
con el siguiente contenido:

hombre(alberto).
hombre(jorge).
hombre(carlos).

hombre(angel).
mujer(flor).
mujer(manuela).
mujer(ana).
mujer(rosario).
padre(alberto,carlos).
padre(alberto,jorge).
padre(alberto,manuela).
padre(alberto,ana).
padre(juan,alberto).
padre(juan,angel).
matrimonio(alberto,flor).
matrimonio(juan,rosario).
madre(M,H):- padre(P,H),
matrimonio(P,M).
hermano(H,X):padre(P,H), padre(P,X),
hombre(X), H<>X.
hermana(H,X):padre(P,H), padre(P,X),
mujer(X), H<>X.
abuelo(A,N):- padre(A,P),
padre(P,N).
abuela(AA,N):abuelo(AO,N),

matrimonio(AO,AA).

Realizamos las consultas y analizamos las respuestas proporcionadas


por SWI-Prolog:

matrimonio(juan, X).

abuelo(X,Y).

madre(A,B).

hermana(P, Q).

3.2 Grficos en SWI-Prolog.

Fuente:http://www.swi-prolog.org/packages/xpce/UserGuide/sec4.1.html
SWI-Prolog permite la declaracin de clausulas que representan datos
o hechos (informacin) y reglas de produccin que relacionan los
hechos generacin cierto conocimiento. Esta forma de trabajar es
interesante, sin embargo debido al avance de la tecnologa y de las
pantallas que permiten trabajar con objetos visuales, es necesario
disponer de herramientas que combinen el tratamiento lgico de la
informacin con diferentes formas de presentar la informacin.
En este sentido SWI-Prolog permite disear interfaces grficas para
nuestros programas usando la librera XPCE. Proponemos el siguiente
procedimiento, a manera de ejemplo:
1. Ejecutamos SWI-Prolog, aparece el prompt 1 ?2. Invocamos la librera pce: use_module(library(pce)).
3. Creamos un objeto: new(@demo, dialog('Demo Window')).
4. Agregamos
atributos
al
append(text_item(name))).

objeto:

send(@demo,

5. Mostramos el objeto: send(@demo, open). (Se observa la


ventana del dilogo).
6. Leemos los valores del display y los mostramos:
get(@demo, display, D).

get(@display, size, Size),


get(Size, width, W),
get(Size, height, H).
7. Leemos y mostramos el valor digitado:
get(@demo, member(name), TextItem),
get(TextItem, selection, Text).
Hemos logrado generar objetos grficos para combinarlos con las
reglas implementadas en nuestros programas, a partir de ahora
sugerimos seguir la documentacin oficial de SWI-Prolog realizando
las siguientes actividades:
1. Descargar
la
gua
de
usuario
oficial: http://www.swiprolog.org/download/xpce/doc/userguide/userguide.pdf
2. Implementar
los
ejemplos: http://www.swiprolog.org/packages/xpce/examples.html
3. Resolvamos
los
siguientes
ejercicios: http://www.swiprolog.org/download/xpce/doc/coursenotes/coursenotes.pdf
Proponemos implementar un programa que genere una interfaz
mostrando un texto y dos botones, uno de Aceptar y otro de Cancelar,
luego se indica el botn que el usuario pulsar.
Presentamos un segundo mtodo de escribir programas esta vez
usando el editor de SWI-Prolog.
1. Ejecutamos SWI-Prolog, aparece el prompt 1 ?2. Invocamos el editor: emacs.
3. Aparece la ventana del editor y escribimos el siguiente
programa.
pregunta(Preg,Resp) :new(D, dialog('Pregunta')),

send(D, append,
label(pr,Preg,font('times','roman',16))),
send(D,
append,
button(si,message(D,return,'si'))),
send(D,
append,
button(no,message(D,return,'no'))),
send(D, default_button, si),
get(D, confirm, Rval),
free(D),
Resp = Rval.
4. Usando el men del editor grabamos el programa p03.pl en la
carpeta C:\programasPL
File / Saves as
5. Compilamos el programa: Compile / Compile buffer
6. Observar los mensajes el SWI-Prolog.
7. Realizamos consultas. En el prompt
pregunta(estas_de_acuerdo, Y).

?-

digitamos:

8. Observar los mensajes en SWI-Prolog.


Actividad de anlisis y comprensin
Se solicita analizar e interpretar el significado de las clausulas de
programa y comentar su funcionamiento.
Retroalimentacin
1. pregunta(Preg,Resp) :- ..... Declaracin de la clausula pregunta.
2. new(D, dialog('Pregunta')), ..... Creamos un objeto de tipo
dilogo, diferenciado como D y ttulo Pregunta
3. send(D,
append,
label(pr,Preg,font('times','roman',16))),
.....Agregamos un objeto label al dilogo

4. send(D,
append,
button(si,message(D,return,'si'))),
.....Agregamos un objeto botn al dilogo.
5. send(D,
append,
button(no,message(D,return,'no'))),
.....Agregamos un objeto botn al dilogo.
6. send(D, default_button, si), ..... Activamos por defecto al botn
si.
7. get(D, confirm, Rval), Confirmamos los eventos de los botones
sobre el dilogo y almacenamos el valor en Rval.
8. free(D), ..... liberamos memoria.
9. Resp = Rval. ..... Ligamos la variable Resp con el valor de Rval.

3.3 Descarga e instalacin de Visual


Prolog.

Fuente: Fuente: http://1.bp.blogspot.com/DK5ZOfbf2NI/TaTA_zznIgI/AAAAAAAAApU/wBSDzozyVnw/s1600/PDC_V


isualProlog.png
Visual Prolog puede ser descargado desde un enlace en su pgina
oficial: http://www.visual-prolog.com/ descargamos la ltima versin
de Visual Prolog Personal Edition.
El archivo descargado tiene extensin .msi, simplemente hacemos
doble clic y se inicia el proceso de instalacin.

3.4 Desarrollo de aplicaciones con Visual


Prolog.
Iniciamos el trabajo con Visual realizando el tradicional Hello word,
para ello te invitamos a seguir este enlace: http://www.visualprolog.com/video/HelloWorld/ aunque la explicacin est en ingles, la
descripcin en pantalla es suficientemente clara para comprender el
procedimiento.
Ahora que conocemos el ambiente de Visual Prolog procederemos a
escribir un programa. El objetivo es consultar datos relacionados con
el parentesco estableciendo relaciones de hijo, padre y abuelo.
Proponemos el siguiente procedimiento:
1. Ingresamos a Visual Prolog.
2. Creamos un proyecto: Project / New, ingresamos:
1. Project Name: Proy01
2. Project Kind: Console application
3. Hacemos doble clic en main.pro y reemplazamos el cdigo por
el siguiente:
implement main
open core
domains
sexo = femenino(); masculino().
class facts
persona : (string Nombre, sexo Sexo).
hijo : (string Persona, string Hijo).
clauses
persona("Ana",femenino).
persona("Pedro",masculino).
persona("Juan",masculino).
persona("Flor",femenino).

hijo("Pedro","Judith").
hijo("Juan","Pedro").
hijo("Flor","Juan").
class predicates
father : (string Persona, string Padre) nondeterm anyflo
w.
clauses
father(Persona, Padre) :hijo(Persona, Padre),
persona(Padre, masculino()).
class predicates
abuelo : (string Persona, string Abuelo) nondeterm (o,o).
clauses
abuelo(Persona, Abuelo) :hijo(Persona, Hijo),
father(Hijo, Abuelo).
clauses
run():console::init(),
stdIO::write("\nPADRE:\n"),
father(X, Y),
stdIO::writef("% es padre de %\n", Y, X),
fail.
run():stdIO::write("\nABUELO:\n"),
abuelo(X, Y),
stdIO::writef("% es abuelo de %\n", Y, X),
fail.
run():stdIO::write("\nFin del proceso\n").
end implement main
goal
mainExe::run(main::run).
4. Reconstruimos el proyecto: build / build.
5. Ejecutamos: build / Run in Window.
6. Observar el resultado.

Actividad de anlisis y comprensin


Se solicita analizar e interpretar el significado de las clausulas de
programa y comentar su funcionamiento.

Implementando el concepto de recursividad.

Fuente:
http://www.latrinchera.org/foros/content.php?417-HistoriasMatem%C3%A1ticas-IV-Matem%C3%A1ticas-apocal%C3%ADpticas

La tcnica del backtracking se implementa en Visual Prolog a travs


de la recursividad, mostramos la aplicacin con un ejemplo tradicional
relacionado con el juego de las torres de Hanoi.

Se dispone de tres torres con determinado nmero de discos de


diferentes dimetros. El punto inicial del juego consiste en colocar
sobre una torre todos los discos, los de mayor dimetro abajo y sobre
ellos los de menor tamao, no est permitido colocar un disco de
mayor tamao sobre otro de menor tamao. El objetivo es pasar
todos los discos a otra torres y queden como el estado inicial,
utilizando la tercera torre como temporal.

La solucin en Prolog usando recursividad resulta una tarea sencilla y


con cdigo reducido. Presentamos a continuacin un ejemplo.

Hanoi(0,_,_,_).
hanoi(N,Origen,Temporal,Destino):N1 = N-1,

hanoi(N1,Origen,Destino,Temporal),
movimientos(Origen,Destino),
hanoi(N1,Auxiliar,Origen,Destino).
movimientos(Origen,Destino):write(' desde '),
write(Origen),
write(' hasta '),
write(Destino),
write('\n').
Toda definicin recursiva necesita dos componentes la funcin
recursiva (se invoca as misma) y el lmite de la recursin. La funcin
recursiva es hanoi(N,Origen,Temporal,Destino):- y el lmite es
Hanoi(0,_,_,_).
Implementamos este programa en Visual Prolog siguiendo el proceso
del ejemplo anterior. Creamos un proyecto, cambiamos el cdigo de
main.pro por el siguiente cdigo, construimos el proyecto y lo
ejecutamos.
class h1
predicates
hanoi : (unsigned N).
end class h1
implement h1
domains
torre = string.
clauses
hanoi(N) :- mover(N, "izquierdo", "central", "derecho").
class predicates
mover : (unsigned N, torre A, torre B, torre C).
clauses
mover(0, _, _, _) :- !.

mover(N, A, B, C) :mover(N-1, A, C, B),


stdio::writef("mover disco desde el eje % al eje %\n",
A, C),
mover(N-1, B, A, C).
end implement h1
goal
console::init(),
h1::hanoi(4).
Actividad de anlisis y comprensin
Se solicita analizar e interpretar el significado de las clausulas de
programa y comentar su funcionamiento. Probar cambiando el
nmero de discos h1::hanoi(5).

Aplicaciones en entornos visuales.


Implementaremos ahora un proyecto en modo grfico (con objetos
visuales). Este es un proceso secuencial y orientado a la versin del
software disponible en el momento que se realiza la descarga, por lo
que realizaremos una descripcin del procedimiento dejando los
detalles para explicaciones en lnea.
Las aplicaciones visuales de Prolog combinan el procesamiento de
reglas de produccin con entornos de objetos grficos tales como
formularios, botones, cajas de textos, etiquetas, cajas de listas, etc.
En este sentido debemos ser capaces de distinguir los momentos en
que programamos funcionalidades netamente computacionales con
aquellas referidas a la programacin lgica.
Desarrollamos una aplicacin muy sencilla que muestra rutas
tursticas en funcin del tipo de clima y el tipo de lugar que se desea
visitar, el inters por ahora no es mostrar el desarrollo de un sistema
experto, lo que buscamos es mostrar el uso combinado de Prolog con
funcionalidades requeridas por usuarios en modos grficos.
Atendiendo a lo mencionado en los prrafos anteriores sugerimos el
siguiente procedimiento, se espera que el estudiante tenga
experiencia con herramientas de desarrollo visual. Recomendamos
que se realice permanentemente build o Rebuild de nuestro
proyecto a medida que avanzamos con el desarrollo.

1. Ejecutamos el IDE Visual Prolog.


2. Creamos un proyecto, asignando un nombre y un mbito (kind),
en este caso seleccionamos MDI, en versiones anteriores se
selecciona GUI.
3. Diseamos el formulario.
1. Creamos un formulario, para ello creamos un nuevo
paquete asignndole un nombre y relacionndolo con un
objeto form (Clic derecho en el proyecto / ).
2. El formulario default proporcionado por Visual Prolog
contiene botones (OK, Cancel y Help).

3. Eliminamos los botones y nos quedamos solamente de


Cancel a quien cambiamos el nombre por Salir.
4. Agregamos objetos al formulario:
1. Etiqueta: Climas.
2. Etiqueta: Lugares.
3. Etiqueta: Rutas.
4. Caja de lista: lbclimas.
5. Caja de lista: lblugares.
6. Botn: Consultar, btconsultar.

7. Nuestro formulario queda de la siguiente manera.

5. Cuando se ejecuta el programa Visual Prolog proporciona


opciones de men. (build / Execute)

6. Eliminamos las opciones de menu y creamos una nueva


denominada Consulta. (Archivo TaskMenu.nmu)
7. Despus de eliminar la opciones de menu en el formulario
debemos eliminar su cdigo correspondiente en el archivo
taskwindow.pro.

8. El formulario default tambin presenta un menu


denominado Window, para ocultarlo debemos modificar la
linea mdiProperty : boolean= true. por esta
mdiProperty : boolean = false. en el archivo
taskwindow.pro
9. Nuestro

formulario

queda

de

la

siguiente

manera.

4. Implementamos la funcionalidad de la aplicacin (Eventos de


las opciones del menu y del formulario).
1. Relacionamos la opcin Consultar con el formulario.
1. En el archivo TaskWindow.pro agregamos el cdigo.
predicates
onConsultar : window::menuItemListe
ner.
clauses
onConsultar(W, _MenuTag):Formulario = formulario ::new(W),
Formulario: show().

2. Activamos el evento onShow del formulario dentro de


ShowListener (en la ventana eventos)
3. En el archivo formulario.pro encontrars una clausula
para onShow que debes modificar
predicates

onShow : window::showListener.
clauses
onShow(_Dource, _Data):lbclimas:add("Frio"),
lbclimas:add("Templado"),
lbclimas:add("Clido"),
lblugares:add("Museos"),
lblugares:add("Playas"),
lblugares:add("Ruinas").

4. Agregamos el evento clic sobre el objeto botn Consultar.


(doble clic en el formato del formulario y aparece su
cdigo en el archivo formulario.pro). Aqu combinamos
cdigo de tratamiento visual con cdigo Prolog para el
tratamiento de reglas
5. Modificamos el siguiente cdigo
predicates
onBconsultarClick : button::clickRespo
nder.
clauses
onBconsultarClick(_Source) = button::
defaultAction:lbrutas_ctl:clearAll(),
lbclimas_ctl:getAllSelected(Climas, _
),
lblugares_ctl:getAllSelected(Lugares
, _),
[Clima | _ ]=Climas,
[Lugar | _ ]=Lugares,
codigo(Clima, Lugar, Codruta),
ruta(Codruta, Ciudades),
imprimir(Ciudades),
!.
onBconsultarClick(_Source) = button::
defaultAction:vpiCommonDialogs::note("Mensaje",
"No hayresultados"),
!.

5. Implementamos la lgica Prolog. Este cdigo lo agregamos en el


archivo formulario.pro a continuacin de la codificacin del
evento onBconsultaCkick.
domains
ciudades=string*.
facts
codigo : (string, string, integer).
ruta : (integer, ciudades).
clauses
codigo("Frio","Ruinas",1).
ruta(1,["Trujillo","Cuzco","Puno"]).
predicates
imprimir : (ciudades).
clauses
imprimir([H | C]) :lbrutas:add(H),
imprimir(C),
!.
imprimir([]):lbrutas:add("--------------------------------"),
!.

1. En el cdigo encontramos:
1. la declaracin de hechos (facts) codigo y ruta.
2. La declaracin de la regla imprimir (procesa lista).

6. Nuestra

aplicacin

queda

finalmente.

7. Se selecciona un tipo de clima, luego un tipo de lugar,


presionamos CONSULTAR y la aplicacin nos muestra una ruta
adecuada. Como comentamos al inicio, el propsito no es
desarrollar un sistema experto, sino mas bien es mostrar la
programacin combinada de Prolog con objetos visuales.
Mencionamos que la referencia para este ejemplo se ha tomado
de https://www.youtube.com/watch?v=lqGMBr4GhSo

Actividad de anlisis y comprensin


Despus de haber implementado los programas en los IDEs SWIProlog y Visual ProLog responde a las siguientes preguntas:
1. El juego las torres de Hanoi se implementa en Prolog
usando:
Hechos, reglas y procedimientos

Recursividad

Iteraciones

Predicados extralgicos

Programando algoritmos

Retroalimentacin
La solucin al problema de las torres de Hanoi se implementa con
recursividad.
El IDE SWI-Prolog
Diferencia entre hechos y reglas

No diferencia entre hechos y reglas.

Define predicados inclusivos

Define clausulas con backtracking

Define algoritmos inferenciales

Retroalimentacin
El IDE SWI-Prolog no diferencia entre hechos y reglas

Visual Prolog es:


Semejante a SWI-Prolog

Innovacin a Turbo Prolog

Implementa su motor con java.

Diseado para soluciones en consola

Diseado para soluciones grficas

Retroalimentacin
Efectivamente Visual Prolog constituye una innovacin a Turbo Prolog.
Est diseado para soluciones en consola.
Est diseado tambin para soluciones grficas.

Bibliografa
1. Escrig, Pacheco, Toledo. El lenguaje de programacin Prolog.
Universidad
Jaume
I
de
Castelln.
Disponible
en:
http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf
2. Nilson, Maluzynski. Logic, Progamming and Prolog. OpenLibra.
Disponible
en:
http://www.etnassoft.com/biblioteca/logicprogramming-and-prolog-2ed/
3. L. Sterling and E. Shapiro. The Art of Prolog. The MIT Press,
Cambridge, Mass., second edition, 1994.
4. W.F. Clocksin and C.S. Mellish. Progamming in Prolog. SpringerVerlag, Berlin, fourth edition, 1994.
5. I. Bratko. Prolog Programming for Artificial Intelligence. AddisonWesley, Reading, Massachusetts, third edition, 2001.
6. R. OKeefe. The Craft of Prolog. The MIT Press, Cambridge, MA,
1990.
7. Ejemplo
completo
en
Prolog:
http://www.uhu.es/nieves.pavon/pprogramacion/practicas/visual
prolog/visualprolog.html
8. Ejemplos de la pgina oficial de Visual Prolog: http://www.visualprolog.com/vip/example/
9. Construccin de un Editor inteligente:
prolog.com/video/IntelliSpeed/default.htm

http://www.visual-

10.
Construccin
de
formularios:
prolog.com/video/FormDemo/default.htm

http://www.visual-

Lecturas recomendadas
Para saber ms
Ponemos a tu disposicin y te invitamos a revisar dos interesantes
documentos que te ayudaran a reforzar y ampliar los temas que
hemos estudiado.

Documento 1: A Beginners Guide to Visual Prolog

URL: http://wiki.visual-prolog.com/index.php?
title=A_Beginners_Guide_to_Visual_Prolog
Breve descripcin:
La Gua para principiantes de Visual Prolog es un libro completo
escrito por Thomas W. de Boer. El libro contiene material, que se
utiliza con permiso expreso de los autores. La versin actual del libro
est dedicado a Visual Prolog 7.2 . El libro es una introduccin,
significa que est dirigido a aquellos que saben muy poco acerca de
la programacin.

...

Documento 2: Visual Prolog for Tyros

URL: http://wiki.visual-prolog.com/index.php?
title=Visual_Prolog_for_Tyros
Breve descripcin:
El documento Visual Prolog para Tyros es un completo libro escrito por
Eduardo Costa. Es un buen punto de partida para el estudio Visual
Prolog, se recomienda a los maestros para la educacin. La ltima
edicin del libro es "Visual Prolog 7.3 para Tyros " . El libro incluye un
nmero de ejemplos que ilustran diferentes caractersticas de Visual
Prolog .

Conclusiones de la sesin
Durante esta semana de aprendizaje hemos comprendido que:

Los IDEs facilitan la programacin de Prolog.

Cada IDE tiene su propia estructura para la construccin de


programas, sin embargo mantienen el mismo esquema de
bsqueda de soluciones a travs del backtracking y el
emparejamiento de variables.

SWI-Prolog permite trabajar directamente en consola y con su


extensin XPCE se construyen interfaces grficas.

Visual Prolog aunque un poco mas complicado (al inicio)


permite la programacin tanto en consola como en entornos
grficos con orientacin a objetos.

Se debe tener cuidado durante el proceso de aprendizaje,


separando las clausulas que implementan las funcionalidades
computacionales de las funcionalidades de procesamiento
lgico.

Metacognicin
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios
aprendizajes, es un ejercicio recomendado pata razonar e identificar
nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y
procesos mentales.
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los temas abordados?
Tuviste dificultad
solucionaste?

con

algn

tema

Qu acciones realizaste para aprender?

actividad?

Cmo

lo

Tema 04. Tratamiento de cadenas y listas

Fuente http://smartcomputing.gerardorossel.org/reglasrecursivas.aspx
Bienvenida
Estimados estudiantes bienvenidos! a la cuarta semana del curso,
donde continuaremos estudiando el lenguaje Prolog. Durante esta
semana trabajaremos con cadenas y listas que son estructuras
dinmicas y permiten procesar datos en memoria relacionados con
expresiones del lenguaje natural. Los seres humanos organizamos la
informacin y el posterior conocimiento en forma de cadenas y listas.
Recordemos algunos escenarios, cuando organizamos una fiesta
elaboramos la lista de invitados y los nombres de las personas se
almacena en forma de cadenas de caracteres, cuando hacemos un
tour elaboramos la lista de lugares visitados, cuando terminamos una
carrera profesional hemos acumulado una lista de cursos. Por esta
razn es muy importante en sistemas basados en conocimiento el
tratamiento de cadenas y listas. Los contenidos se complementan con
interesantes lecturas, valiosos vdeos, pginas interactivas e
importantes actividades de evaluacin que conducen a la
metacognicin y a la comprobacin de los aprendizajes logrados.
Continuemos programando en Prolog!

Introduccin al tema

Fuente http://slideplayer.es/slide/1872829/
Las cadenas en Prolog son un tipo de datos conocidos como string
(algunas versiones de Prolog permiten el uso de symbol) y estn
formados por un conjunto de caracteres alfanumricos (letras,
nmeros, signos especiales), en trminos tcnicos decimos que una
cadena es una lista de cdigos ASCII encerrada entre comillas.
El tratamiento de cadenas es muy importante porque permite analizar
palabras en busca de determinadas caractersticas, por ejemplo
conocer el contenido del primer caracter o en todo caso verificar si la
palabra contiene determinados caracteres, es posible contar el
numero de palabras en un texto o en un archivo, etc. Estas
caractersticas de Prolog son interesantes al momento de programar
aplicaciones con interpretacin del lenguaje natural.
Prolog proporciona un conjunto de clausulas para trabajar con
cadenas, podemos as implementar un conjunto de operaciones tales
como la concatenacin de cadenas que es la unin o suma de
cadenas, podemos unir dos cadenas para formar una tercera cadena.
Podemos separar una cadena en tramas mas pequeas, etc. Las
cadenas son un tipo de listas. Por otro lado las listas en Prolog son un
tipo de datos encerrados entre concretes [ ], que contienen un
conjunto de datos relacionados con determinado tipo de datos, por
ejemplo, podemos tener una lista de nmeros impares [1,3, 5, 7,9], o
una lista de cadenas que representan nombres de personas [Juan,
Pedro, Ana, Luisa]. Las listas tambin son conocidas como
arreglos dinmicos en otros lenguajes de programacin, por lo tanto
las listas son ideales para el tratamiento de pilas, colas y rboles
conceptos importantes para el tratamiento de datos en memoria.
Prolog representa listas en forma genrica precisando su cabeza
(primer elemento) y la cola (resto de elementos) [ Cabeza | Cola ],
donde Cabeza es un elemento y el resto constituye otra lista
expresada recursivamente. Con esta sencilla forma de representar
listas podemos realizar un conjunto de operaciones lgicas sobre un

conjunto de datos o realizar operaciones computacionales como por


ejemplo imprimir en pantalla un conjunto de datos o llenar con datos
un caja de listas. El tratamiento de cadenas y listas est muy
difundido en aplicaciones razonables de la inteligencia artificial y
utiliza intensivamente el concepto de recursividad.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este
cuarto tema:
Capacidades

Identifica y utiliza tcnicas de procesamiento de cadenas.

Analiza el contenido de una cadena como informacin bsica


del tratamiento del conocimiento.

Identifica y utiliza tcnicas de procesamiento de listas.

Conoce las operaciones bsicas de programacin sobre listas.

implementa la creacin de listas, agrega, busca y elimina


elementos en una lista.

Actitudes

Demuestra tolerancia y respeto ante la opinin de sus


compaeros en el debate de un foro.

Valora los componentes y estrategias de programacin de


sistemas basados en reglas.

Asume responsabilidad en el cumplimiento de las actividades.

Marco conceptual

Observa detenidamente el siguiente esquema, en el encontrars de


un "vistazo" de manera sintetizada los principales concepto de la
temtica que abordaremos. Qu conceptos o categoras te llaman la
atencin?

4.1 Tratamiento de cadenas.

http://ia-israel.blogspot.com/2014/06/prolog-sintaxis-y-significado-delos.html
PROLOG fue diseado fundamentalmente para permitir la
representacin y tratamiento de conocimiento, en tal sentido, el
tratamiento del lenguaje es un objetivo permanente y en el caso de
lenguaje escrito, el tratamiento de textos juega un papel importante.
Las cadenas de caracteres constituyen un tipo de datos denominado
String (algunas versiones de Prolog permiten el uso de un tipo de
datos Symbol) y son un conjunto de caracteres ASCII.
Ejemplos de cadenas:
Nombre = Juan.
Ciudad = San Juan de Miraflores.
Fecha = 25 de Enero del 2,040.
Meses_transcurridos_desde_la_ultima_compra=23.
En los ejemplos anteriores los caracteres entre comillas corresponden
a cadenas de caracteres, en nuestro caso las denominamos
simplemente cadenas.

4.2 Tratamiento de los caracteres de una


cadena.
El lenguaje Prolog ofrece un conjunto predefinido de predicados que
permiten el tratamiento de cadenas, a continuacin mostramos los
predicados y ejemplos:

PREDICADOS STANDAR PARA EL TRATAMIENTO DE CADENAS

PREDICAD SINTAXIS
O

frontchar

FUNCION

frontchar(string,
string)
frontchar(Cad,
Rest)

char, Fcarac es el primer caracter de


Cad.
FCarac, Rest es el resto de caracteres

Cad es la unin de FCarac con


(i, o, o) (i, i, o) (i, o, i) (i, Rest
i, i) (o, i, i)

fronttoken fronttoken(string,
string, string)
fronttoken(Cad,
Rest)

FPal es la primera palabra de


Cad.
FPal, Rest es el resto de caracteres

Cad es la unin de FPal con


(i, o, o) (i, i, o) (i, o, i) (i, Rest
i, i) (o, i, i)

concat

concat(string,
string)

string, Cad3 es la unin de Cad1 y


Cad2

concat(Cad1,
Cad3)

Cad2,

(i, i, o) (i, o, i) (o, i, i) (i,


i, i)

str_len

str_len(string, integer)

Long es la longitud de Cad

str_len(Cad, Long)
(i, i) (i, o)

isname

isname(string)

Clusula verdadera cuando Cad


es un string

isname(Cad)
(i)

frontstr

frontstr(integer,
string, string)
frontstr(Long,
Cad_i, Cad_r)

string, Cad_i es una cadena formada


por
los
primeros
Long
caracteres de Cad_e
Cad_e,
Cad_r
son
los
caracteres
restantes

( i, i, o, o )

Ejemplos
1. Programa que lee una cadena e imprime un caracter por linea:

predicates
leer(string)
imprimir(string)
clauses
leer(X):-clearwindow,
write("Ingrese una cadena: "),
readln(X), nl.
imprimir("").
imprimir(C):-frontchar(C,
RC),

C1,

write(C1), nl,
imprimir(RC).
goal
leer(C),
imprimir(C).

2. Programa que lee una cadena e imprime un token por linea.


Sugerencia: en el programa anterior reemplace la clusula
frontchar(C,C1,RC) por la clusula fronttoken(C,C1,RC).
3. Realice la impresin de las cadenas solicitadas en los ejemplos
anteriores en sentido inverso. Sugerencia: reemplace la clusula
imprimir por el siguiente cdigo:
imprimir("").
imprimir(C):-frontchar(C, C1, RC),
imprimir(RC),
write(C1), nl.

4.3 Concatenacin.

Fuente: http://raymundoycaza.com/la-funcion-concatenar-en-excel/
La concatenacin es una operacin que consiste en unir dos o mas
cadenas para formar una sola. Algunos lenguajes usan el operador
+, en Prolog se usa el predicado CONCAT.
Ejemplos: (La implementacin de estos ejemplos depende del IDE
utilizado, el estudiante debe adecuar el cdigo correspondiente)
1. Programa que genera un saludo Hola Mario a partir de dos
cadenas Hola y Mario presentadas directamente.

saludo:concat(Hola, Mario, Cad),


write(Cad).

2. Programa que genera un saludo Hola Mario a partir de dos


cadenas Hola y Mario declaradas previamente.

Cadena01 = Hola.
Cadena02 = Mario.
saludo(Cadena01, Cadena02):concat(Cadena01, Cadena02,
Cadena03),
write(Cadena03).

Tipos de datos declarados por el usuario:


domains
Los tipos de datos genricos (string, char, integer, real) se pueden
especificar y personalizar de acuerdo al programa, utilizando el
bloque domains, que permite definir nuevos tipos de datos en base a
los predefinidos.
As tenemos que la declaracin genrica del predicado padre:

Predicates
padre(string,string)

Se puede codificar de la siguiente manera:

domains
persona = string
predicates
padre(persona,perso
na)

Ejemplos:

domains
numero
integer

domains
= nombre = string
deporte = string

cuadrado
integer

predicates
cuad(numero,c
uadrado)

predicates
persona(nombre
,deporte)

El uso de domains es importante y necesario para el tratamiento de


listas que veremos a continuacin.

4.4 Tratamiento de listas.

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html
Las listas son estructuras de datos dinmicas. Pueden aumentar o
disminuir el nmero de sus elementos, tienen el mismo tipo de
elementos y pueden ser tan complejas como se requieran. La lista sin
elementos existe y recibe el nombre de lista vaca.

Ejemplos:

La lista de invitados a una fiesta.

La lista de alumnos inscritos en un curso

La lista de nmeros enteros: 3 5 9 8 7 1 2 10

La lista de deportes: football, basketball, karate, voleyball

La lista de nombres de personas: Juan, Pedro, Ana, Luisa, Miguel

En PROLOG los elementos de una lista se escriben entre corchetes [ ]


y tiene dos componentes:

La cabeza que es el primer elemento (Head) de la lista y

El resto de elementos (Tail) de la lista

As tenemos que una lista se denota de la siguiente manera:

[H|
T]

Donde H representa la cabeza y T representa el resto de elementos.

Ejemplos de listas:

[ ]........................................lista vaca.

numeros([2,5,7,9]).........La clusula numeros que contiene la


lista [2,5,7,9], donde H = [2] y T = [5,7,9].

personas([Juan,,Pedro,Ana,Luisa])......................La
clusula
personas
que
contiene
la
lista
[Juan,,Pedro,Ana,Luisa] donde H = [Juan] y T =
[Juan,,Pedro,Ana,Luisa].

Actividad de anlisis y comprensin

Se solicita analizar e interpretar el significado de las clausulas de


programa y comentar su funcionamiento.

4.5 Operaciones sobre listas: Agregar,


buscar, eliminar elementos.

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html
A continuacin se muestra la forma de declarar listas:

domains
lista_num
integer*

lista_cad
string*

predicates
numeros(lista_
num)
personas(lista_
cad)

Donde:

El asterisco (*) se lee lista de

integer* se lee lista de enteros

string* se lee lista de cadenas

lista_num es el nuevo tipo lista de enteros

lista_cad es el nuevo tipo lista de cadenas

numeros es un predicado con un argumento de tipo lista_num


(lista de enteros)

persona es un predicado con un argumento de tipo lista_cad


(lista de cadenas)

Recuerde que tanto lista_num como lista_cad son tipos de datos


no son nombres de variables

Analicemos el siguiente cdigo:

domains
lista_num
integer*

predicates
numeros(lista_num
)
clauses
numeros([1,3,5,7,9
]).
goal
numeros(A),
numeros([H|T]),
write(A), nl,
write(H), nl,
write(T), nl.

1. Declara el nuevo tipo de dato lista_num como una lista de


enteros.
2. Declara el predicado numeros con un argumento tipo lista_num.
3. Declara un dato numeros con la lista [1,3,5,7,9].

4. Invoca
la
clusula
nmeros(A)...................................................liga la variable A
con la lista [1,3,5,7,9,].
5. Invoca
la
clusula
nmeros([H|T])
............................................liga la variable H con el nmero 1 y
la variable T con la lista [3,5,7,9].
6. Imprime en pantalla la lista [1,3,5,7,9,], luego ejecuta un salto
de lnea.
7. Imprime en pantalla el nmero 1, luego ejecuta un salto de
lnea.
8. Imprime en pantalla la lista [3,5,7,9,], luego ejecuta un salto de
lnea.

Operaciones bsicas en listas

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html
Definimos las siguientes operaciones bsicas:
1. Agregar un elemento al inicio de la lista.
2. Agregar un elemento al final de la lista.
3. Agregar un elemento a la lista de acuerdo a una relacin de
orden.
4. Verificar si un elemento pertenece a la lista.
5. Eliminar un elemento de la lista.
6. Ordenar los elementos de la lista.
7. Imprimir los elementos de la lista.
Los siguientes programas presentan en forma aislada la
implementacin de las operaciones bsicas
1. Agregar un elemento al inicio de la lista:

domains
lista_num = integer*
predicates
agrega1(integer,
lista_num, lista_num)
clauses
agrega1(Numero,ListaE
,[Numero|ListaE]).
goal
write(entre un
nmero: ),
readint(DN),
agrega1(DN,
[1,3,5,7,9]),ListaS),
write(ListaS),
readln(_).

2. Agrega un elemento al final de la lista:

domains
lista_num = integer*
predicates
agrega2(integer,
lista_num, lista_num)
clauses
agrega2(Numero, [],
[Numero]).
agrega2(Numero,[H|T],

[H|TS]):agrega2(Numero,T,TS).
goal
write(entre un
nmero: ),
readint(DN),
agrega2(DN,
[1,3,5,7,9]),ListaS),
write(ListaS),
readln(_).

3. Agregar un elemento a la lista de acuerdo a una relacin de orden:

domains
lista_num = integer*
predicates
ag_ord(integer,
lista_num, lista_num)
clauses
ag_ord(N,[],[N]).
ag_ord(N,[H|T],[N|L]):- H
>= N,
L = [H|T],
!.
ag_ord(N,[H|T],[H|TC]):ag_ord(N,T,TC).
goal
write(entre un nmero:

),
readint(DN),
agrega1(DN,
[1,3,5,7,9]),ListaS),
write(ListaS),
readln(_).

4. Verificar si un elemento pertenece a la lista:

domains
lista_num = integer*
predicates
miembro(integer, lista_num)
clauses
miembro(N,[]):- write(N, no
pertenece a la lista).
miembro(N,[N|_]):- write(N,
si pertenece a la lista).
miembro(N,[_|T]):miembro(N,T).
goal
write(entre un nmero: ),
readint(DN),
miembro (DN,[1,3,5,7,9])).
readln(_).

5. Eliminar un elemento de la lista:

domains
lista_num = integer*
predicates
elimina (integer, lista_num,
lista_num)
clauses
elimina(N,[],[]):- write(N, no
pertenece a la lista),
elimina(N,[N|T],T):- write(N, ha
sido eliminado de la lista),
elimina(N,[H|T],[H|TC]):elimina(N,T,TC).
goal
write(entre un nmero: ),
readint(DN),
elimina (DN,[1,3,5,7,9]), ListaS).
write(ListaS),
readln(_).

6. Ordena los elementos de una lista:

domains
lista_num = integer*
predicates
ag_ord (integer,
lista_num, lista_num)
ordena(lista_num,
lista_num)

clauses
ag_ord(N,[ ],[N]).
ag_ord(N,[H|T],[N|L]):- H
>= N,
L = [H|T],
!.
ag_ord(N,[H|T],[H|TC]):ag_ord(N,T,TC).
ordena([ ],[ ]).
ordena([H|T],LO):ordena(T,Lt),
ag_ord(H,Lt,LO).
goal
Linicial = [1, 3, 6, 2, 9,
5],
write(Lista inicial: ,
Linicial), nl,
ordena (Linicial,Lfinal).
write(Lfinal),
readln(_).

7. Imprime los elementos de la lista:

domains
lista_num = integer*
predicates
imprime (lista_num)

clauses
imprime([ ]).
imprime([H|T]):write(H,' '),
imprime(T).
goal
imprime([1,3,5,7,9,2
,4,6,8,]),
readln(_).

Actividades
Actividad de programacin
Utilizando el cdigo de los ejemplos anteriores se solicita implementar
las siguientes operaciones extendidas sobre listas, utilizando
cualquiera de los IDE presentado en el curso:
1. Devolver el primer elemento de la lista......................primel(E,L)
2. Devolver el ltimo elemento de la lista......................ultel(E,L)
3. Devolver el nmero de elementos de la lista.............numel(N,L)
4. Devolver el sucesor de un elemento de la lista..........sucel(N,S,L)
5. Devolver el predecesor de un elemento de la
lista....predel(N,P,L)
6. Devolver el menor elemento de la
lista......................minlista(M,L)
7. Devolver el mayor elemento de la
lista......................maylist(M,L)
8. Concatenar dos
listas...................................................concatlista(La,Lb,Lc)
9. Intercalar los elementos de dos
listas.........................interclista(La,Lb,Lc)

Actividad de anlisis y comprensin

Despus de haber implementado los programas presentados y


propuestos en esta sesin responde a las siguientes preguntas:

Las cadenas son un tipo de datos:


Integer

String

Values

Predicates

Encadenados

Retroalimentacin
Las cadenas son tipo de datos string (conjunto de caracteres ASCII).

Las listas se declaran con el smbolo:


+ (mas)

* (asterisco)

[ ] (Corchetes)

% (porcentaje)

No es necesario declararlas

Retroalimentacin
Las listas se declaran usando el smbolo asterisco. Ejem nombre* ...
se lee lista de nombres
Las listas son estructuras:
Estticas

Dinmicas

Recursivas

Algortmicas

Excluyentes

Retroalimentacin
Las listas son estructuras dinmicas y su procesamiento se realiza en
memoria.

Bibliografa
1.
1. Escrig, Pacheco, Toledo. El lenguaje de programacin
Prolog. Universidad Jaume I de Castelln. Disponible en:
http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf
2. Nilson, Maluzynski. Logic, Progamming and Prolog.
OpenLibra. Disponible en:
http://www.etnassoft.com/biblioteca/logic-programmingand-prolog-2ed/
3. L. Sterling and E. Shapiro. The Art of Prolog. The MIT
Press, Cambridge, Mass., second edition, 1994.
4. W.F. Clocksin and C.S. Mellish. Progamming in Prolog.
Springer-Verlag, Berlin, fourth edition, 1994.
5. I. Bratko. Prolog Programming for Artificial Intelligence.
Addison-Wesley, Reading, Massachusetts, third edition,
2001.
6. R. OKeefe. The Craft of Prolog. The MIT Press, Cambridge,
MA, 1990.

Lecturas recomendadas
Para saber ms
Ponemos a tu disposicin y te invitamos a revisar dos interesantes
documentos que te ayudaran a reforzar y ampliar los temas que
hemos estudiado.

Documento 1: Inteligencia artificial explicada

URL: http://smartcomputing.gerardorossel.org/reglas-recursivas.aspx
Breve descripcin:
Este sitio est dedicado a todos los temas de Inteligencia
Computacional o Inteligencia Artificial. Encontraran tambin un libro
(ebook) en linea que es utilizado en cursos universitarios. Tambin
pone a disposicin de los lectores un blog con artculos y noticias
relacionados con la Inteligencia Artificial.

...

Documento 2: Programacin con listas

URL:
http://www.lcc.uma.es/~pacog/apuntes/pd/CuadPrac2.pdf
Breve descripcin:
El documento presenta teora y prctica del procesamiento de listas
en Prolog. Contiene definiciones y ejercicios resueltos y propuestos
con aplicaciones prcticas.

Conclusiones de la sesin
Durante esta semana de aprendizaje hemos comprendido que:

Prolog permite el tratamiento de cadenas de caracteres para el


tratamiento de textos o palabras.

Prolog permite el tratamiento de estructuras dinmicas


conocidas como listas y podemos definir nuestros propios tipos
de datos para procesar cualquier tipo de conocimiento.

Las operaciones definidas sobre cadenas y listas son bastante


conocidas y nos permiten resolver problemas mas complejos.

Metacognicin
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios
aprendizajes, es un ejercicio recomendado pata razonar e identificar
nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y
procesos mentales.
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los temas abordados?
Tuviste dificultad con algn tema o actividad? Cmo lo
solucionaste?
Qu acciones realizaste para aprender?

Tema 05. Fundamentos de los sistemas


expertos.

Fuente: Elaboracin propia


Bienvenida
Estimados estudiantes bienvenidos! a la quinta semana del curso,
donde presentaremos conceptos de los sistemas expertos en el
entorno de los sistemas basados en conocimiento, conoceremos la
taxonoma y estructura de los sistemas expertos. En el anlisis y
diseo de sistemas es importante contar con un esquema
metodolgico para orientar nuestro trabajo por lo que abordaremos
una metodologa de amplia aceptacin para desarrollar sistemas
expertos denominada CommonKads, se ha seleccionada esta
metodologa porque su aplicacin es adecuada con los IDEs
presentados en sesiones anteriores, logrando productos de diseo
moderno. Los contenidos se complementan con interesantes lecturas,
valiosos videos, pginas interactivas e importantes actividades de
evaluacin que conducen a la metacognicin y a la comprobacin de
los aprendizajes logrados.
Conozcamos y utilicemos la
desarrollar sistemas expertos!

metodologa

CommonKads

para

Introduccin al tema

Fuente:http://www.casaestudioxigeno.cl/pag-in/i/9336
Los sistemas expertos son programas de computadora que resuelven
tareas tal como las realizara un experto humano, tratan de imitar el
comportamiento humano utilizando informacin que le es
proporcionado y generando una opinin sobre un tema especfico.
El estudio y generacin de sistemas expertos han permitido
configurar una estructura caracterizada por contemplar las diferentes
etapas de gestin del conocimiento: adquisicin, tratamiento y uso. El
razonamiento para producir resultados a las consultas de los usuarios
son realizados por un motor de inferencias que relaciona hechos o
datos con reglas de produccin. Los sistemas expertos son capaces
de mostrar una traza de los elementos de razonamiento utilizados y
es posible que logren aprendizaje sobre las decisiones anteriores,
mejorando el nivel de razonamiento.
Los sistemas expertos tienen una amplia taxonoma orientada por las
diferentes aplicaciones y/o los diferentes criterios de diseo y uso por
la forma de almacenar conocimiento, por la naturaleza de la tarea a
realizar, por la interaccin del usuario, por la limitacin de tiempo
para tomar decisiones, por la variabilidad temporal del conocimiento,
por la naturaleza del conocimiento almacenado, por la certeza de la
informacin.
El desarrollo de sistemas expertos comprende etapas de anlisis,
diseo y construccin del programa para ello usaremos la
metodologa CommonKads que permite modelar el conocimiento en
un lenguaje independiente de la plataforma de construccin del
producto informtico. Esta metodologa propone el uso de formularios
para cada uno de sus componentes de manera que facilita el traslado
a cualquier sistema computacional.
La metodologa CommonKads propone tres niveles, el nivel de
contexto, el nivel de concepto y el nivel de implementacin, durante
esta semana estudiaremos el nivel de contexto que incluye tres
modelos, el modelo de organizacin que responde a la pregunta para
qu desarrollamos un sistema experto?, el modelo de tareas que
responde a la pregunta qu se debe implementar? y el modelo de
agentes que responde a la pregunta quin participa en el sistema
experto?.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este
quinto tema:
Capacidades

Conoce la definicin de los sistemas Expertos.

Identifica la Arquitectura y taxonoma de un sistema Experto.

Conoce el espacio de soluciones que proporcionan los sistemas


expertos.

Conoce la metodologa Commonkads para representar el


conocimiento.

Aplica la metodologa para representar conocimiento y utiliza el


lenguaje Prolog para la implementacin de la aplicacin.

Actitudes

Demuestra puntualidad y perseverancia en la asistencia de las


tutoras programadas.

Reconoce la taxonoma de un Sistema Experto.

Valora las opiniones de los dems y las recoge para fortalecer


sus conocimientos.

Marco conceptual
Observa detenidamente el siguiente esquema, en el encontrars de
un "vistazo" de manera sintetizada los principales concepto de la
temtica que abordaremos. Qu conceptos o categoras te llaman la
atencin?

5.1 Definicin de Sistemas Expertos

Fuente: http://carlosestiv.blogspot.com/
Los sistemas expertos fueron el primer logro de la inteligencia
artificial resolviendo problemas a travs del conocimiento y raciocinio
tal como lo hara un ser humano.
Un sistema experto es un programa de computadora que resuelve
tareas tal como las realizara un experto humano, se puede decir que
imita el comportamiento humano utilizando informacin que le es
proporcionado y generando una opinin sobre un tema especfico.
Tiene la caracterstica de ser interactivo, contiene reglas que les
permiten tomar decisiones conocidas como bases de conocimientos,
en concreto la tarea de un sistema experto es aconsejar a un usuario
respecto a un tema especfico.
Un sistema experto rene las siguientes caractersticas:
Tiene
amplio
conocimiento
especfico
del
rea
de
especializacin.
Aplica tcnicas de bsqueda.
Soporta anlisis heurstico.
Es dinmico pues sus hechos y reglas estn sujetos a constante
revisin y es capaz de inferir nuevos conocimientos a partir de
los ya existentes.
Capacidad de procesamiento de smbolos.
Tiene inferencia deductiva siendo capaz de explicar su propio
razonamiento.
La base de conocimientos es independiente del motor de
inferencias.
Es generalmente declarativo.
Aunque no existe una nica definicin para los sistemas expertos
presentamos algunas propuestas:
Congreso mundial de la IA Feigembaum: Un programa de
computador inteligente que usa el conocimiento y procedimientos de

inferencia para resolver problemas que son los suficientemente


difciles como para requerir la intervencin de un experto humano
para su resolucin.
Asociacin Argentina de inteligencia artificial: Un SE es un sistema
informtico que simula los procesos de aprendizaje, memorizacin,
razonamiento, comunicacin y accin de un experto humano en una
determinada rama de la ciencia, suministrando, de esta forma, un
consultor que puede sustituirle con unas ciertas garantas de xito.

5.2 Arquitectura de un sistema Experto


Iniciamos esta seccin presentando una sencilla arquitectura de un
sistema basado en conocimientos:

Fuente: Elaboracin propia


La base de conocimientos es una estructura de datos que contiene
una gran cantidad de informacin sobre un tema especfico, es
generada por un experto. Esta base de conocimientos est formada
por:

Objetos y sus relaciones.

Casos particulares o excepciones y diferentes estrategias de


resolucin
con
sus
condiciones
de
aplicacin.
(metaconocimiento forma generar conocimiento en base a
conocimiento)

En nuestro caso podemos decir, usando una terminologa Prolog, que


la base de conocimientos est constituida por la reglas de produccin,
en el caso de Visual Prolog se refieren a las clauses generadas por
predicates.
La base de hechos est referida a los datos considerados verdaderos
al momento de ejecutar la aplicacin. En nuestro caso, refirindonos a
Visual Prolog diremos que son las clauses generadas por facts.
Tanto la base de hechos como la base de conocimientos pueden estar
declaradas en el programa Prolog o ser mantenidas externamente en
un archivo que se agrega al programa con la clausula consult.
El motor de inferencias es el ncleo del sistema experto construyendo
los razonamientos, es el encargado de ejecutar las inferencias
durante el proceso de resolucin. En el caso de Prolog, proporciona
por default un motor que se encarga de detectar los conocimientos
(hechos o reglas), los encadena y construye el plan de resolucin
mediante backtracking y emparejamiento de variables. Los motores
de inferencias se clasifican en determinsticos cuando las

conclusiones representan verdades absolutas y probabilsticos cuando


las predicciones estn sujetas a cierto grado de verdad en funcin de
probabilidades.
Para definir un arquitectura razonable de un sistema experto
definimos cuatro requerimientos funcionales (momentos del ciclo de
vida) para el tratamiento del conocimiento:

Adquisicin del conocimiento.


o Experto.
o Conocimientos.
o Mdulo de adquisicin del conocimiento.

Representacin del conocimiento.


o Base de conocimientos.
o Base de hechos.

Tratamiento del conocimiento.


o Motor de inferencias.
o Mdulo de explicaciones.

Utilizacin del conocimiento.


o Usuario.
o Mdulo de consultas.

En la siguiente figura presentamos una arquitectura para los sistemas


expertos:

Fuente: Elaboracin propia


La base de conocimientos, la base de hechos y el motor de
inferencias fueron explicados en la arquitectura bsica de un sistema
basado en conocimientos.
El mdulo de consultas gestiona la interaccin entre el usuario y el
sistema. Se puede implementar con formatos definidos o se puede
definir un lenguaje de consultas basado en lenguaje natural.
El mdulo de explicaciones realiza una traza de las conclusiones
parciales conseguidas en el mtodo de razonamiento, permite validar
la coherencia de los hechos y las reglas justificando sus respuestas.
El mdulo de adquisicin del conocimiento permite a los expertos
ingresar el conocimiento a travs de formatos predefinidos o usando
el lenguaje natural, a las personas que realizan esta tarea se les llama
cognimticos o ingenieros del conocimiento.

5.3 Taxonoma de los Sistemas Expertos


Los sistemas expertos se pueden clasificar de acuerdo a la siguiente
tabla:

CLASE

Por la forma
almacenar
conocimiento

de

TIPO

DESCRIPCIOIN

Basados en reglas

Almacenan
el
conocimiento en forma
de hechos y reglas.

Basados
probabilidades

Mixtos

Por la naturaleza de
la tarea a realizar
Diagnstico
clasificacin

Monitorizacin

Diseo

Almacenan
conocimiento
en
hechos
y
dependencias
probabilsticas.

el
en
sus

Almacenan
el
conocimiento
en
hechos y reglas que
contienen
probabilidades.

Se
conocen
las
posibles soluciones y
se trata de clasificarlas
o
o diagnosticarlas de
acuerdo a una serie de
datos
y
reglas
almacenadas.

Se
analiza
el
comportamiento de un
sistema en bsqueda
de posibles fallos.

Se
busca
construccin
de

la
la

solucin a un problema
que en principio es
desconocida, a partir d
hechos y restricciones
a satisfacer.

Por la interaccin del


usuario

Prediccin

Se
estudia
comportamiento de
sistema tratando
predecir
comportamiento en
futuro cercano.

Apoyo

La tarea del sistema es


aconsejar al usuario.

Control

El
sistema
toma
decisiones
y
actu
sobre su entorno sin
participacin humana.

Critica

El
sistema
analiza,
evalu y critica las
decisiones
de
una
persona.

Tiempo ilimitado

Emplean conocimiento
casual que busca las
races de un problema
ya ocurrido y cuto
resultado
no
se
requiere de inmediato.

Tiempo limitado

Sistemas de tiempo
real que monitorizan o
controlan dispositivos
tomando decisiones en
forma inmediata.

Por la limitacin de
tiempo para tomar
decisiones

el
un
de
su
el

Estticos

La
base
de
conocimiento nos vara
durante el proceso de
decisin.

Dinmicos

La base de datos se
mantiene
dinmicamente
en
funcin
de
las
decisiones tomadas.

Por la variabilidad
temporal
del
conocimiento

Basado
experiencia
Por la naturaleza del
conocimiento
almacenado

Se
basan
en
las
experiencias de un
experto a travs de los
en
hechos sin establecer
una relacin de de
causalidad claramente
definida.

Las
relaciones
de
Basado en relaciones causalidad
estn
causa-efecto
perfectamente
definidas.

Completa o perfecta

Se cuenta con todos


los datos y reglas para
tomar la decisin.

Imperfecta

No se cuenta con todos


los datos, las datos son
difusos, se cuenta con
terminologa ambigua.

Por la certeza de la
informacin

5.4 Las aplicaciones de los Sistemas Expertos

Los sistemas expertos ofrecen ayudan en casos como los siguientes:

Evitar fallos en labores rutinarias complejas.

Ampliar de forma
especialistas.

Diagnosticar fallos con mayor rapidez.

Conseguir tareas de planificacin ms complejas y consistentes.

ms

rpida

el

conocimiento

de

los

Las aplicaciones de los sistemas expertos han incursionado en reas


de medicina, geologa, qumica, economa, ingeniera civil, etc.

En el siguiente cuadro podemos observar diferentes aplicaciones de


los sistemas expertos:
Categora

Tipo de problema

Usos

Interpretaci Deducir situaciones a partir Anlisis


de
imgenes,
n
de datos observados
reconocimiento del habla,
inversiones financieras.
Prediccin

Inferir
posibles Prediccin meteorolgica,
consecuencias a partir de previsin
del
trfico,
una situacin.
evolucin de la bolsa.

Diagnstico Deducir fallos a partir de Diagnstico


sus efectos.
deteccin de
equipos.
Diseo

Configurar

objetos

bajo Diseo

de

mdico,
fallos de

circuitos,

ciertas especificaciones.
Planificaci
n

Desarrollar planes
llegar a unas metas.

edificios, automviles, etc.

para Programacin de proyectos


e inversiones, planificacin
militar.

Monitorizaci Controlar
situaciones Control
de
n
o donde
hay
planes nucleares
y
supervisin vulnerables.
qumicas.

centrales
factoras

Depuracin Prescribir remedios para Desarrollo de software y


funcionamientos errneos. circuitos electrnicos.
Reparacin

Efectuar lo necesario para Reparar


sistemas
hacer una correccin.
informticos, automviles,
etc.

Instruccin

Diagnstico, depuracin y Correccin


correccin
de
una enseanza.
conducta.

Control

Mantener un sistema por Estrategia militar, control


un camino previamente de trfico areo.
trazado. Interpreta, predice
y supervisa su conducta.

Enseanza

Recoger el conocimiento y Aprendizaje


mostrarlo.
experiencia.

de

errores,

5.5 Ventajas de los Sistemas Expertos

de

Fuente: http://cristianarrobo.blogspot.com/2011_03_01_archive.html
Los sistemas expertos presentan ventajas frente a los expertos
humanos:
1. Asesora. Los SSEE apoyan a personas con poco conocimiento
en la solucin de problemas que requieren conocimiento
especializado.
2. Disponibilidad. Los SSEE pueden operar ininterrumpidamente
las 24 horas del da durante todo el ao.
3. Estabilidad emocional. Los SSEE pueden operar sin
interferencias emocionales caractersticas de un ser humano,
por lo tanto sus decisiones sern objetivas.
4. Portabilidad. Los SSEE pueden operar en diferentes plataformas
y en diferentes idiomas.
5. Estandarizacin.
estabilidad
y
internacionales.

Los SSEE mantienen un


pueden
ser
adaptados

alto grado de
a
estndares

6. Facilidad de mantenimiento. Los lenguajes modernos permiten


mecanismos de actualizacin del software proporcionando en
todo momento una alta integracin tecnolgica.
7. Existencia. Los SSEE pueden ,perdurar en el tiempo y crecer
indefinidamente.
8. Compatibilidad. Los SSEE pueden ser consultados por diferentes
usuarios y/o plataformas tecnolgicas.

9. Complejidad. Los SSEE pueden trabajar con alto grado de


complejidad relacionando variables que para un ser humano
son difciles de mantener.
El uso de sistemas expertos es aconsejable cuando:

Los expertos humanos son escasos.

Existen situacin demasiado complejas en las que


subjetividad humana puede llevar a errores de percepcin.

Cuando el volumen de datos es muy elevado para tomar


decisiones.

la

5.6 Metodologa Commonkads.


CommonKADS es una metodologa aplicable al anlisis y la
construccin de Sistemas Basados en Conocimiento, la cual est
orientada hacia la realizacin de actividades de modelado, donde se
desarrollan un conjunto de modelos que permiten expresar diferentes
perspectivas de la situacin que se est analizando. Esta metodologa
ofrece teoras, mtodos y tcnicas cientficas para representar el
conocimiento y modelar los procesos mentales, as como acercarse a
los contenidos de conocimientos de las personas.
Principios de la metodologa Commonkads:
1. La ingeniera del conocimiento consiste en la construccin de
modelos que formalizan diferentes aspectos del conocimiento
humano.
2. El modelado de la estructura del conocimiento se ha de realizar
de forma independiente a la implementacin.
3. El conocimiento tiene una estructura interna en la que se
pueden distinguir tipos de conocimiento y tareas especficas.
La metodologa Commonkads se basa en los siguientes fundamentos
tericos:
1. La construccin de un sistema basado en conocimiento se basa
en la construccin de varios modelos que formalizan una parte
concreta del proceso.
2. El nmero y nivel de desarrollo de cada modelo depende del
contexto de la aplicacin.
3. El desarrollo de estos modelos se realiza en tres niveles: anlisis
del contexto, formalizacin abstracta e implementacin.
4. El desarrollo de cada fase depende del resultado obtenido en la
fase anterior.
Basndonos en las premisas de los principios y los fundamentos
tericos presentamos un esquema de los componentes de la
metodologa Commonkads.

Fuente: Elaboracin propia


Describimos cada uno de los modelos:

Modelo de organizacin:
o Realiza un anlisis de la organizacin con el objetivo de
identificar los problemas y las posibilidades de
incorporacin de SBCs.
o Los aspectos de la organizacin son tan importantes
porque, al igual que el resto de los sistemas de
informacin, stos slo tendrn xito si se integran
adecuadamente en su contexto. Normalmente, el SBC
acta como una agente cooperando con otros agentes
(humanos o no) realizando una parte de las tareas de la
organizacin. En realidad, este modelo se corresponde
con un estudio de viabilidad.
o Afortunadamente, no se trata de modelar toda la
organizacin, sino de centrarse en la orientacin del
conocimiento. La primera parte identifica problemas y
oportunidades. Se termina delimitando objetivos,
estrategias, factores externos, etc.
o En este modelo se debe tener presente todo lo relativo a
la gestin del conocimiento (KM) y a su integracin
con la Ingeniera del conocimiento. La propuesta define un
nivel especfico para recoger la gestin del conocimiento
en la empresa.

Modelo de tareas:

o Describe las tareas que se realizan o deben realizarse en


el contexto de la organizacin donde se van a utilizar
SBCs.
o Si el anlisis de viabilidad resulta positivo el siguiente
paso es determinar las tares relevantes y los agentes que
las realizarn.
o Una tarea representa un objetivo deseable con unas
entradas y salidas bien estructuradas que requiere y
proporciona conocimiento y se realiza por agentes segn
unos criterios de rendimiento y calidad.
o En la especificacin de la estructura de la tarea se pueden
utilizar diagramas de clases de UML.
o Es importante establecer el control temporal de la tarea.
Para ello se utilizan los diagramas de estado (si el control
es externo) o losdiagramas de actividad (si el control es
interno).

Modelo de agentes:
o Describe las capacidades, preferencias y permisos de los
agentes que realizan las tareas.
o Determina los roles y las competencias de los actores que
participan en la realizacin de la tarea. Es conveniente
utilizar los diagramas de casos de UML para describir su
participacin. Este modelo establece la cooperacin entre
agentes (incluido el usuario).

Modelo de conocimiento:
o Proporciona una descripcin independiente de la
implementacin del conocimiento involucrado en las
tareas.
o Especifica el conocimiento y los requerimientos de
razonamiento del sistema. Tiene tres partes denominadas
categoras del conocimiento.
o La primera se denomina conocimiento del dominio y
especifica conocimiento y tipos de informacin concretos
que se usaran en la aplicacin. Representa la parte
esttica. Por ej., en una aplicacin de diagnstico mdico
contendra definiciones de enfermedades, sntomas y
pruebas relevantes, as como de las relaciones entre

estas. Es comparable a un modelo de datos o modelo


de objetos en ingeniera del software.
o Puede estar constituido por dos tipos de elementos:

Esquema del dominio: son como los esquemas


conceptuales de las modernas bases de datos, en
este caso constituyen la ontologa de las clases y
entidades del dominio. En un sistema de medicina
contendra definiciones generales de enfermedades,
sntomas, etc.

Base de conocimiento: constituye la instanciacin


del anterior. Por ejemplo, concretando las patologas
y sntomas del cncer de mama.

La segunda componente se refiere al conocimiento


de inferencia. Las inferencias son bloques (building
blocks) que representan el ltimo nivel en la
descomposicin funcional del sistema. Por ejemplo,
en un sistema de diagnstico podra darse la
inferencia verificar para identificar pruebas que
sirvan para determinar si una enfermedad es la
causa de un sntoma.

Finalmente se distingue el conocimiento de tarea.


Describe los objetivos y las aplicaciones posibles,
as como su descomposicin en subtareas y,
finalmente, inferencias. La especificacin de estas
tareas en mdulos reusables denominados tipos de
tarea es lo que se conoce en la bibliografa del
campo como PSMs, problem solving methods. La
particularidad de CommonKads es que stos estn
especificados para una tarea concreta. Al igual que
en la mayora de las descomposiciones existentes
se distinguen dos tipos bsicos de tareas, las de
anlisis y las de sntesis.

o Es importante recordar que la potencialidad de este


planteamiento reside en que en la especificacin de las
tareas no hay conocimiento del dominio especfico. En
todo caso, se establecen suposiciones sobre la naturaleza
del conocimiento del dominio.

Modelo de comunicacin:
o Describe las transacciones entre los agentes que realizan
las tareas.

o Se concretan los procesos de comunicacin entre los


agentes
en
un
formato
independiente
de
la
implementacin, como el modelo del conocimiento.

Modelo de diseo:
o Describe la estructura del SBC a desarrollar.
o Se trata de disear el sistema sin modificar el modelo.
o Permite el paso del
simblico, mediante
inteligencia artificial.
(velocidad, programas,

nivel de conocimiento al nivel


tcnicas y paradigmas de la
Considera restricciones externas
equipos, etc.).

o El modelo de diseo proporciona las especificaciones


tcnicas del sistema en lo referido a: mdulos de
software, plataforma de implementacin, arquitectura y
los elementos de representacin y de clculo necesarios
para llevar a cabo las funciones establecidas en el modelo
del conocimiento y de comunicacin.
o Conviene aclarar que el vocabulario utilizado en la
especificacin de este modelo es radicalmente diferente
al anterior y muchos de sus trminos provienen del
campo de la ingeniera del software.
La implementacin de los modelos se realiza a travs de:

Plantillas: Modelos predefinidos por CommonKADS (hojas de


trabajo)

Instancias: Modelos con informacin especfica del proyecto,


pueden existir varias instancias de un mismo modelo.

Versiones: Describen la evolucin de las instancias en el ciclo de


vida del proyecto.

En esta sesin de aprendizaje desarrollamos el nivel de contexto, en


la siguiente sesin desarrollamos el nivel de concepto.

Hojas
de
trabajo
del
Organizacin. (05 hojas)

Modelo

de

Objetivos del Modelo de Organizacin:

Identificar las reas de la organizacin que


problemas o posibles oportunidades de mejora.

Proponer soluciones potenciales.

Tomar decisiones sobre la viabilidad econmica y tcnica del


proyecto

presentan

Hoja de trabajo OM-1: Problemas y oportunidades de mejora

Objetivo

Anlisis del contexto de la organizacin (elemento


invariante), problemas y soluciones

Problemas
y Enumerar los problemas y posibilidades de mejora
oportunidades que han podido ser observados

Contexto
Indicar las caractersticas claves de la organizacin,
organizacional situar los problemas y posibilidades de mejora
dentro de la perspectiva adecuada. Algunas de estas
caractersticas son: misin, visin y objetivos de la
organizacin; factores externos con los que tiene
que tratar la organizacin; y estrategia de la
organizacin

Soluciones

Listar las posibles soluciones para los problemas y


posibilidades percibidas dentro del contexto de la
organizacin

Hoja de trabajo OM-2: Aspectos variables

Objetivo

Descripcin del rea de inters de la organizacin

(elemento variable)

Estructura

Grfico de la parte de la organizacin objeto de anlisis


en trminos de departamentos, grupos, unidades, etc.

Procesos

Diagrama de los procesos que se llevan a cabo. Se


detallarn en la hoja de trabajo OM-3

Personal

Identificacin y enumeracin de los miembros de la


planilla implicados en los procesos

Recursos

Descripcin de los recursos utilizados por los procesos:


sistemas de informacin, equipamiento, material,
experiencia social o interpersonal, tecnologa, etc.

Conocimient Identificacin y enumeracin de los activos de


o
conocimiento. Se detallarn en la hoja de trabajo OM-4

Cultura
potencial

y Modus operandi no explcitos, incluyendo formas de


trabajar, de comunicarse, relaciones formales e
informales, etc.

Hoja de trabajo OM-3: Descomposicin de los procesos

Objetivo

Describir en detalle el proceso objeto de mejora

Identificador Nmero de tarea

Nombre

Nombre de la tarea como parte de los procesos


descritos en OM-2

Realizada

Agente humano o software encargado de la tarea

por

perteneciente al personal o a los recursos descritos


en OM-2

Lugar

Localizacin de la tarea en la estructura descrita en


OM-2

Recurso de Nombre de los recursos de conocimiento descritos


Conocimient en OM-2
o

Intensiva en Si o No
conocimient
o

Importancia Grado de importancia de la tarea en los procesos


descritos en OM-2, usando un criterio predefinido

Hoja de trabajo OM4: Activos de conocimiento

Objetivo

Visin preliminar de los activos de conocimiento


involucrados en el proceso objeto de mejora

Recurso de Nombre del recurso de conocimiento enumerado en


conocimient OM-2 / OM-3
o

Pertenece a Agente humano o software poseedor del recurso de


conocimiento perteneciente al personal o a los
recursos descritos en OM-2 / OM-3

Usado en

Lista de tareas que utilizan el recurso de conocimiento,


utilizando los identificadores asignados en OM-3

Uso

Se utiliza el recurso en forma correcta?

correcto?

Lugar
correcto?

Se utiliza el recurso en el lugar correcto?

Momento
correcto?

Se utiliza el recurso en el momento correcto?

Calidad
correcta?

Tiene el recurso la calidad correcta?

Hoja de trabajo OM-5: Anlisis de viabilidad

Objetivo

Identificar las implicaciones clave de la informacin


recogida en los formularios anteriores

Viabilidad Beneficios, valor aadido, coste esperado, cambios en la


empresari organizacin, etc.
al

Viabilidad
tcnica

Tcnicas y mtodos actuales, criterios de xito, etc.

Viabilidad
del
proyecto

Disponibilidad de
implantacin, etc.

los

recursos,

compromiso

de

Acciones
Plan de actuacin; rea de actuacin; solucin elegida;
propuesta resultados, costes y beneficios esperados; proceso de
s
implantacin

Hojas de trabajo del Modelo de Tareas.


(02 hojas)
Objetivo del Modelo de Tareas:

Descripcin detallada de las tareas y de los elementos de


conocimiento dentro del proceso en el que se implementar el
SBC, dependiendo del anlisis de viabilidad de la fase anterior.

Hoja de trabajo TM-1: Anlisis de tareas

Objetivo

Descripcin detallada de los problemas

Tarea

Identificador y nombre de la tarea (OM-3)

Organizacin

Proceso del que esta tarea forma parte, y parte de la


organizacin donde se desarrolla (OM-3)

Objetivo
valor

y Objetivo de la tarea y el valor que aade al proceso


del que forma parte

Dependencia y Enumeracin
de
tareas
precedentes
que
flujos
proporcionan la entrada y de las tareas que utilizan
el resultado de sta

Objetos
manipulados

Tiempo
control

Agentes

Descripcin de los objetos de entrada, de salida e


internos utilizados en la tarea

y Frecuencia y duracin de la tarea, precondiciones y


postcondiciones de la tarea, restricciones que se
deben cumplir durante su ejecucin

Agentes responsables de desarrollar la tarea (OM-2 /


OM-3)

Conocimiento
y capacidad

Capacidades necesarias para el desarrollo de la


tarea (OM-4), los elementos de conocimiento se
describen en TM-2

Recursos

Se describen y cuantifican los recursos requeridos


por la tarea, refinamiento de OM-2

Calidad
eficiencia

y Medidas utilizadas por la organizacin


determinar la ejecucin exitosa de la tarea

para

Hoja de trabajo TM-2: Elemento de conocimiento

Objetivo

Anlisis de los cuellos de botella del conocimiento

Nombre

Elemento de conocimiento enumerado en OM-3

Posedo por

Agente poseedor del conocimiento indicado en OM-4

Usado en

Nombre e identificador de las tareas en la que se usa


este conocimiento indicado en OM-3

Dominio

Dominio mas amplio en el que se encuentra el


conocimiento, especialidad, disciplina, rama de la
ciencia o ingeniera,etc.

Naturaleza

Para cada caracterstica indicar s o no, y si un cuello


de botella (fuente de problemas) que debe ser
mejorado:

Formal, riguroso

Emprico, cuantitativo

Heurstico, sentido comn

Forma

Especializado, especfico del dominio

Basado en la experiencia

Basado en la accin

Incompleto

Incierto, puede ser incorrecto

Cambia con rapidez

Difcil de verificar

Tcito, difcil de transferir

Para cada caracterstica indicar s o no, y si un cuello


de botella (fuente de problemas) que debe ser
mejorado:

Mental

Papel

Electrnica

Habilidades

otros

Disponibilidad Para cada caracterstica indicar s o no, y si un cuello


de botella (fuente de problemas) que debe ser
mejorado:

Limitaciones en tiempo

Limitaciones en espacio

Limitaciones de acceso

Limitaciones de calidad

Limitaciones de forma

Tipologa de tareas
En la metodologa Commonkads se ha definido un catlogo de tareas
agrupadas por tipos:

TIPOLOGA DE TAREAS

Analticas

Sintticas

El sistema (solucin) preexiste El sistema (solucin) no existe


(aunque no sea visible).
antes del desarrollo.
Entrada: Algn dato del sistema.

Entrada: Requisitos del sistema a


construir.

Salida: Alguna caracterizacin del


sistema.
Salida: Descripcin del sistema
construido.

Las tareas estn predefinidas en el modelo de acuerdo a la siguiente


tabla:

Tipo/Tarea

Entrada

Salida

Analtica

Observacio Caracteriz Conocimient Caracters


nes
del acin
del o
ticas
sistema
sistema

Clasificacin Caracterstica Clase


s del objeto
objeto

Diagnosis

Sntomas/Qu
ejas

Categora
del fallo

Conocimiento Caractersti
cas

del Asociaciones

El conjunto
de
clases
Claseest
caracterstica predefinido

Modelo
de
comportamie
nto
del
sistema

El formato
de salida es
variable
(modelo

causal,
estado,
component
e)
y
depende
del uso que
se vaya a
hacer

Valoracin

Descripcin
del caso

Clase
decisin

de Criterios,
normas

Se realizan
en
un
momento
concreto

Monitorizaci Datos
n
sistema

del Clase
de Comportamie El sistema
discrepancia nto
normal evoluciona
del sistema
en
el
tiempo. La
tarea
se
ejecuta
repetidame
nte

Prediccin

Datos
sistema

del Estado del Modelo


de
sistema
comportamie
nto
del
sistema

Sinttica

Requisitos

Estructura Elementos,
del
restriccione
sistema
s,
preferencia
s

Diseo

Requisitos

Descripcin

El
estado
del
salida
consiste en
una
descripcin
del sistema
en
algn
punto
temporal
futuro

Es preciso
generar la
descripci
n
del
sistema

Componentes Puede

Diseo
de Requisitos
configuracio
nes

Asignacin

del
artefacto

,
incluir
el
restricciones, diseo
preferencias creativo de
component
es

Descripcin
del
artefacto

Componentes
,
estructura
de
diseo,
restricciones,
preferencias

Subtipo de
diseo en el
que todos
los
component
es
vienen
predefinido
s

Dos
Asignacin Restricciones La
conjuntos de del conjunto y
asignacin
objetos.
1 sobre el preferencias no
tiene
conjunto 2
porque ser
Requisitos
de uno a
uno

Planificacin Metas,
requisitos

Plan
accin

Programaci Actividades
n
de
trabajo,
recursos,
ranuras
de
tiempo,
requisitos

Las
Restricciones, Se
actividades preferencias distingue la
se
asignacin
distribuyen
en
su
en
las
orientacin
ranuras de
temporal
tiempo
de
los recursos

Modelado

Modelo

Requisitos

de Acciones,
Las
restricciones, acciones se
preferencias ordenan
(parcialmen
te) en el
tiempo

Elementos de Podra
modelado,
incluir
plantillas de sntesis

modelo

creativa

Hoja de trabajo del Modelo de Agentes.


(01 hoja)
Objetivo del Modelo de Agentes:

Anlisis de impacto y mejoras desde el punto de vista de los


agentes que realizan las tareas.

Hoja de trabajo AM-1: Agentes

Objetivo

Descripcin de los agentes que desarrollan las


tareas

Nombre

Nombre del agente

Organizacin

Posicin del agente dentro de la organizacin,


incluyendo su tipo (humano, sistema de
informacin) (OM-2)

Implicado en

Tareas en las que est implicado (TM-1)

Se
con

comunica Nombres de otros agentes

Conocimiento

Elementos de conocimiento que el agente posee


(TM-2)

Otras
competencias

Lista del resto de competencias requeridas o


presentes en el agente

Responsabilidad Responsabilidades del agente durante la ejecucin


es
y de la tarea, as como sus restricciones de autoridad
restricciones
respecto a las normas legales o profesionales, etc.

Hoja de trabajo Resumen. (01 hoja)

Se elabora una vez terminados los modelos de tareas y


agentes.

Hoja de trabajo OTA-1: Documento sobre impacto y mejora

Impacto
y Describir el impacto y cambios que el SBC traer a
cambios en la la organizacin, comparndola con la estructura
organizacin
actual

Impacto
cambios
tareas
agentes

y Describir el impacto y cambios que el SBC


en introducir en los agentes y tareas, comparndolos
y con la situacin actual. Indicando los cambios

En la estructura de las tareas

En los recursos necesarios

En los criterios de calidad

En los agentes implicados

En las posiciones de los agentes implicados

En el conocimiento y capacidad requeridos

En los canales de comunicacin

Actitudes
y Analizar cmo reaccionarn a los cambios
compromisos
introducidos los individuos y el personal cualificado
involucrado

Acciones
propuestas

Acuerdos de gestin y toma de decisiones

Mejoras:
Cules
recomendados?

Medidas adicionales: Qu medidas hay que

son

los

cambios

tomar para facilitar dichos cambios?

Se
con

Acciones del proyecto: Cul es la siguiente


accin a realizar dentro del proyecto respecto
al SBC?

Resultados, costes y beneficios esperados


(OM-5)

En caso de cambios en la organizacin, en


qu condiciones es adecuado reconsiderar las
acciones tomadas?

comunica Nombres de otros agentes

Conocimiento

Elementos de conocimiento que el agente posee


(TM-2)

Otras
competencias

Lista del resto de competencias requeridas o


presentes en el agente

Responsabilida Responsabilidades del agente durante la ejecucin


des
y de la tarea, as como sus restricciones de autoridad
restricciones
respecto a las normas legales o profesionales, etc.

Mapa de trabajo para el nivel de contexto

Bibliografa
1.
1. Escrig, Pacheco, Toledo. El lenguaje de programacin
Prolog. Universidad Jaume I de Castelln. Disponible en:
http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf
2. Nilson, Maluzynski. Logic, Progamming and Prolog.
OpenLibra.
Disponible
en:
http://www.etnassoft.com/biblioteca/logic-programmingand-prolog-2ed/
3. L. Sterling and E. Shapiro. The Art of Prolog. The MIT
Press, Cambridge, Mass., second edition, 1994.
4. W.F. Clocksin and C.S. Mellish. Progamming in Prolog.
Springer-Verlag, Berlin, fourth edition, 1994.
5. I. Bratko. Prolog Programming for Artificial Intelligence.
Addison-Wesley, Reading, Massachusetts, third edition,
2001.
6. R. OKeefe. The Craft of Prolog. The MIT Press, Cambridge,
MA, 1990.

Lecturas recomendadas
Para saber ms
Ponemos a tu disposicin y te invitamos a revisar dos interesantes
documentos que te ayudaran a reforzar y ampliar los temas que
hemos estudiado.

Documento 1: De Inteligencia Artificial, Sistemas


Expertos, Robtica, Procesamiento de Lenguaje Natural
e Ingeniera del Conocimiento

URL: http://www.tendencias21.net/iartificial/De-Inteligencia-ArtificialSistemas-Expertos-Robotica-Procesamiento-de-Lenguaje-Natural-eIngenieria-del-Conocimiento_a3.html
Breve descripcin:
El autor del documento realiza un anlisis critico de la inteligencia
artificial, se formula preguntas respecto a los sistemas expertos y la
robtica. No intenta transferir conocimiento, lo que trata es
cuestionar los conceptos de a inteligencia artificial incluyendo a los
sistemas expertos haciendo referencias histricas.

...

Documento 2: Metodologa CommonKads en el desarrollo


de sistemas expertos

URL:http://publicaciones.uci.cu/index.php/SC/article/view/868/
583
Breve descripcin:
En este documento el autor presenta la metodologa CommonKads en
forma calara y concreta, usando el recurso didctico mapas
conceptuales para cada uno de los modelos. Comenta otras
metodologas de desarrollo de sistemas expertos.

Conclusiones de la sesin
Durante esta semana de aprendizaje hemos comprendido que:

Es difcil formular una definicin nica de los sistemas expertos,


sin embargo podemos concluir que los sistemas expertos
buscan imitar el comportamiento humano en determinado
campos de estudio.

La taxonoma de los sistemas expertos permite comprender los


diferentes escenarios sobre los que podemos construir
aplicaciones de los sistemas expertos.

La arquitectura de los sistemas expertos es un referente para su


desarrollo en funcin de los mdulos propuestos, haciendo
nfasis en el mdulo de adquisicin del conocimiento, el motor
de inferencias, la base de conocimientos, el mdulo de
explicaciones y el mdulo de consultas del usuario.

Aunque existen varias metodologas para desarrollar sistemas


expertos, en este curso proponemos el uso de CommonKads,
adecuando la programacin en los IDEs SWI-Prolog y Visual
Prolog.

Metacognicin
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios
aprendizajes, es un ejercicio recomendado pata razonar e identificar
nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y
procesos mentales.
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los temas abordados?
Tuviste dificultad
solucionaste?

con

algn

tema

Qu acciones realizaste para aprender?

actividad?

Cmo

lo

Tema 06. Adquisicin del conocimiento

Fuente: http://www.upf.edu/hipertextnet/numero-2/linguistica.html
Bienvenida
Estimados estudiantes bienvenidos! a la sexta semana del curso,
donde presentaremos los mtodos y tcnicas para adquirir el
conocimiento. La gestin del conocimiento es el tema central de
nuestro curso y buscamos tcnicas que permitan el procesamiento
del conocimiento en medios informticos. La sesin anterior
presentamos la metodologa CommonKads para modelar sistemas
expertos y tratamos el nivel de contexto, es momento de tratar ahora
el nivel de concepto que contiene el modelo del conocimiento y el de
comunicacin. Hacemos nfasis en el modelo de conocimiento que
nos permitir escribir programas y desarrollar aplicaciones en
lenguaje Prolog. Los contenidos se complementan con interesantes
lecturas, valiosos videos, pginas interactivas e importantes
actividades de evaluacin que conducen a la metacognicin y a la
comprobacin de los aprendizajes logrados.
Continuemos con el interesante estudio de tratamiento del
conocimiento!

Introduccin al tema

Fuente:
commonkads

http://es.slideshare.net/uni_fcys_sistemas/metodologa-

El desarrollo de sistemas expertos requiere captar el conocimiento de


personas especializadas para llevarlo a formatos y estructuras que
permitan su tratamiento en medios computacionales. Trataremos este
aspecto en dos etapas, la primera nos permitir conocer y utilizar
tcnicas para captar el conocimiento de los expertos (intervencin
humana), y la segunda nos permitir transformar este conocimiento
en estructuras compatibles con medios computacionales.
La adquisicin del conocimiento humano para llevarlo a la
computadora es todo un reto para los profesionales de la ingeniera
del conocimiento, en nuestro curso presentamos un mtodo bsico
para captar conocimiento y un conjunto de tcnicas de nivel humano,
como por ejemplo, las entrevistas, la lluvia de ideas, etc.
Luego presentamos el modelo de conocimiento perteneciente al nivel
de concepto de la metodologa CommonKads, para ello utilizamos el
CML (Conceptual Modelling Language), la produccin de cdigo en
este lenguaje es transparente a la tecnologa utilizada para
desarrollar el sistema experto, sin embargo durante el estudio
podremos apreciar muchas similitudes con los IDEs presentados en
sesiones anteriores (SWI-Prolog y Visual Prolog).
Por supuesto que existen varias metodologas para representar el
conocimiento adquirido, sin embargo para efectos de nuestro curso,
tomando conocimiento de la metodologa CommonKads podemos
construir esquemas mentales del conocimiento y transferirlos a otros
lenguajes de tipo general o especficos a diferentes plataformas de
desarrollo.

En forma concreta durante esta sesin presentaremos una definicin


inicial del conocimiento y que tipo de conocimiento podemos procesar
en computadores, luego revisamos una metodologa bsica e intuitiva
que nos permita desarrollar sistemas expertos. Finalmente
presentamos el lenguaje CML que nos permitir expresar las reglas de
produccin requeridas en Prolog.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este
sexto tema:
Capacidades

Conoce la problemtica en adquisicin del conocimiento.

Identifica los tipos de conocimiento que pueden ser tratados


con tecnologas.

Conoce las diferentes metodologas para captar conocimiento


con el apoyo de las tecnologas.

Actitudes

Valora las tcnicas artificiales para adquirir conocimiento..

Asume responsabilidad en el cumplimiento de las actividades


programadas.

Asume una posicin proactiva respecto al uso de metodologas


para la adquisicin de los conocimientos en escenarios
tecnolgicos.

Marco conceptual
Observa detenidamente el siguiente esquema, en el encontrars de
un "vistazo" de manera sintetizada los principales concepto de la
temtica que abordaremos. Qu conceptos o categoras te llaman la
atencin?

6.1 La problemtica en la adquisicin del


conocimiento.

Fuente:
http://menteerrabunda.blogspot.com/2010/01/sistemasinteligentes.html
Para enfocar el problema de la adquisicin del conocimiento nos
formulamos tres preguntas:
1. Qu es un conocimiento?
2. Cmo adquiere el hombre los conocimientos?
3. Cmo podemos transferir los conocimientos a un computador?
Un conocimiento es la capacidad adquirida de hacer algo, sin
embargo no basta con estar informado, haber ledo o estudiado un
tema para decir que se poseen conocimientos con respeto a ese
tema, lo importante es su aplicacin.
En forma resumida podemos afirmar que el conocimiento se adquiere
a travs de un proceso que tiene tres etapas sucesivas perfectamente
definidas:
1. Recepcin y comprensin de la informacin.
2. Experimentacin con los conceptos recibidos, verificando su
aplicacin en casos reales.
3. Aptitud para gestionar el conocimiento adquirido aplicndolo en
nuevas situaciones.
La transferencia de conocimientos al computador es un problema
complejo, sin embargo se viene estudiando en el campo de la
inteligencia artificial mtodos pertinentes al almacenamiento de

informacin y conocimientos, tratamiento de los datos y sus


relaciones que constituyen la base del razonamiento automtico.
En nuestro curso delimitamos la adquisicin del conocimiento como el
proceso de recoleccin de informacin a partir de cualquier fuente
(personas expertas, libros, revistas, etc.) requerida para construir un
sistema experto.
Probablemente la adquisicin del conocimiento es la tarea ms
importante en el proceso de desarrollo de sistemas expertos, est
presente en cada una de las etapas, sin embargo an no se cuenta
con mtodos automticos y y de momento es un campo de estudio
experimental, en este sentido realizaremos actividades a la medida
adecundonos a las caractersticas de cada caso particular y de los
expertos involucrados.
El conocimiento presenta una problemtica que tratamos de expresar
en las siguientes lneas:

El conocimiento se adquiere mediante la interaccin directa con


el experto.

El conocimiento difundido entre los cientficos se encuentra en


el nivel tcito (adquirido a travs de la prctica y experiencia) y
es muy complejo expresarlo en forma explcita.

La experiencia plantea una paradoja: Los expertos ms


competentes son incapaces de describir el conocimiento que
usan para resolver los problemas. Esta situacin complica el
proceso cuando se pregunta al experto directamente acerca de
qu reglas o mtodos usa para resolver un tipo de problema
particular en el dominio.

La interaccin consiste en una serie prolongada de intensas y


sistemticas entrevistas.

Para comprender el nivel del problema, sugerimos al estudiante,


nos explique cmo se le enseo a manejar bicicleta y de que
manera adquiri estos conocimientos, es muy complicado
articular cada paso y hasta es posible ignorar cada uno de los
pasos individuales dados para lograr adquirir el conocimiento.

El nivel de conocimiento de un experto parce haber seguido una


ruta de compilacin y lo que buscamos con la adquisicin del
conocimientos es reducirlo a su mnima expresin para
transferirlo a un computador que pueda darle tratamiento, es
como pasar un programa compilado a su cdigo fuente.

Cuando un experto se enfrenta a nuevas situaciones aplica


principios generales y procesos deductivos mtodos que
proporcionan enlaces causales entre varias etapas de un a
sucesin de sub-problemas. El experto aplica principios que
conoce pero no puede explicar (o se le hace muy difcil) o
quizs no tiene conciencia de lo que conoce.

6.2 Tipos de conocimiento.

Fuente: http://cibertareas.com/tipos-de-conocimiento-introduccion-lasciencias-sociales.html
Existen diferentes tipos de conocimiento y cada autor los define en
funcin de los usos que le va a dar, en nuestro caso, para efectos del
desarrollo de sistemas expertos proponemos los siguientes tipos de
conocimiento.

Conocimiento conceptual.
o Conocimiento de conceptos, hechos o ideas. Describen las
principales entidades y relaciones del dominio.
o Conocimiento clasificatorio. Distingue entre conceptos
similares.

Conocimiento procedimental.
o Conocimiento de procedimientos rutinarios. Formado por
tcnicas estndar y procedimientos de trabajo.
o Heursticas. Son reglas prcticas utilizadas para realizar
tareas. Facilitan la implementacin de reglas de
produccin (frente a la situacin A realizamos la accin B).

Conocimiento semntico.

o Est referido a saber y explicar el significado y sentido del


funcionamiento de ciertos lenguajes propios de cada
negocio o proceso, relacionando las caractersticas
estructurales y su significado.

Conocimiento episdico.
o Es el conocimiento que, intuitivamente, todos sabemos,
que adquirimos y recordamos: el de qu pas en la
situacin concreta de aprendizaje y cundo sta tuvo
lugar.

6.3
Mtodos
conocimiento.

bsicos

para

captar

Fuente: http://jorfallahuert.blogspot.com/
El conocimiento tal como lo concebimos actualmente implica un
proceso progresivo y gradual desarrollado por el hombre para
aprehender su mundo y realizarse como individuo. Esta concepcin es
demasiada amplia para trabajar en nuestro curso, mas bien debemos
limitarla al conocimiento adquirido por el ser humano para resolver
tareas especficas que requieren cierto grado de conocimiento. Tal es
el caso de las denominadas "profesiones" que requieren estudios
especficos a determinadas reas del quehacer humano.
En este sentido para llevar el conocimiento humano a medios
computarizados que puedan ejercer algn tipo de razonamiento
automtico es necesario utilizar mtodos y tcnicas especficas, esta
tarea resulta compleja por cuanto el temas se encuentra an en
estudio, sin embargo se ha definido a la ontologa en trminos
computacionales como un entendimiento comn y compartido de un
dominio que puede comunicarse entre cientficos y sistemas
computacionaleses por lo tanto es un recurso artificial creado por el
hombre para conceptualizar algn tipo de conocimiento en un modelo
abstracto en el que se identifican conceptos relevantes y las
relaciones entre sus actores independiente de las plataformas
computacionales requeridas para su implementacin..
En esta sesin de aprendizaje presentamos inicialmente un mtodo
bsico que se implementa con las siguientes fases: identificacin,
conceptualizacin,
formalizacin,
implementacin
y
pruebas.
Posteriormente presentamos una metodologa de carcter general
denominada CommonKads que permite modelar el conocimiento en
determinado tema para luego ser implementado en cualquier
plataforma tecnolgica.

Tcnicas para adquirir conocimiento.


Para efectos de nuestro curso denominamos adquisicin de
conocimiento al proceso de recoger los datos e informacin que
necesitamos para construir un sistema basado en conocimientos.
En la siguiente tabla mostramos algunas tcnicas para adquisicin de
conocimientos.

Tipo conocimiento

Actividad

Tcnica

Declarativo

Bsqueda
de Entrevistas
heursticas generales estructuradas

Procedimental

Bsqueda de rutinas y Entrevistas


procedimientos
estructuradas

Semntico

Bsqueda
conceptos
vocabulario

no

de Observacin directa
y
Anlisis de tareas

Heursticas
y Emparrillado
procedimientos
de
toma de decisiones
Clasificaciones

Trazado del proceso


de razonamiento

Episdico

Bsqueda
de Simulaciones
heursticas analgicas
de
solucin
de
problemas
Seguimiento
protocolos

de

Mtodo
bsico
conocimiento.

para

adquirir

La adquisicin del conocimiento para construir sistemas expertos se


puede realizar siguiendo este esquema que presenta una secuencia
de fases:

FASE

PRODUCTO

TRABAJA CON

Identificacin

Requerimientos.

Problemas,
caractersticas.

Conceptualizacin

Conceptos

Conceptos
representan
conocimiento

que
el

Formalizacin

Estructura

Organizacin
conocimiento,
espacio
bsqueda

del

de
que
el

de

Implementacin

Reglas

Construccin
reglas
representan
conocimiento

Prueba

Lista de cotejo

Verificacin de la
adquisicin
del
conocimiento

Procedimientos de las fases de adquisicin del


conocimiento:
1. Identificacin:
1. Definir el problema con los siguientes requisitos:
1. No debe ser
algortmica)

trivial

(se

resuelve

de

manera

2. Se requiere de fuentes de conocimiento.


3. Problema complejo.
2. Bsqueda de fuentes de informacin:
1. Expertos humanos en el dominio del problema.
2. Libros y manuales que traten el problema y tcnicas
de resolucin.
3. Ejemplos de casos resueltos.
3. Definicin de datos y criterios que determinan la solucin
(Primera descripcin del problema):
1. Objetivos.
2. Motivaciones.
3. Estrategias de resolucin y justificacin.
4. Fuentes de conocimiento.
5. Tipos de tareas requeridas
2. Formalizacin.
1. Definir esquemas de razonamiento para modelar la
resolucin del problema.
2. Definir el espacio de bsqueda de soluciones y tipo de
bsqueda a realizar.

3. Definir la certidumbre y completud de la informacin


representada en datos o hechos verdaderos.
4. El objetivo es desarrollar un modelo formal que permita
razonar a un programa de computador.
3. Implementacin.
1. Identificacin de algoritmos de resolucin del problema.
2. Definicin de las estructuras
representacin del conocimiento.

de

datos

3. Pueden
aparecer
incoherencias
que
retroalimentacin de las fases anteriores.

para

la

requieran

4. Prueba.
1. Seleccin de casos resueltos representativos.
2. Elaborar una lista de cotejo para verificar el
funcionamiento del sistema aplicado a los casos
representativos.
3. En funcin de los resultados, se deben corregir las
incoherencias de las fases anteriores.

6.4 Presentacin de metodologas para


adquirir conocimiento.

Fuente:
http://cmapspublic3.ihmc.us/rid=1LNT1R7KL-JZ1G1L1BFL/principal.cmap
Existen varias metodologas para adquirir y representar el
conocimiento tales como MASE, GAIA, COMMONKADS, INGENIAS,
MESSAGE entre otras. Por consideraciones de tiempo y practicidad se
ha seleccionado utilizar COMMONKads en nuestro curso. Es
conveniente
revisar
informacin
relacionada
a
las
otras
metodologas.
La metodologa CommonKads presentada en el curso sugiere
construir el modelo de conocimientos en forma clara y precisa que
permite la construccin de sistemas expertos en este sentido
presentamos un resumen y en forma secuencial este proceso
siguiendo la sintaxis del lenguaje CML (Conceptual Modelling
Language) propuesto por la misma metodologa.
Debemos mencionar que para comprender esta metodologa se
requiere cierta experiencia el el uso de otras metodologas y
lenguajes de modelado de la ingeniera de software, pues en el
mbito del curso no est contemplado el estudio detalle de
metodologas de desarrollo.

Conocimiento del dominio.

Conocimiento e informacin estticos relevantes del dominio.

Equivalente al modelo de datos (entidades) o al modelo clases


(O/R).

Se definen dos componentes:


o

Esquema del dominio.

Declara la estructura esttica de la informacin.

Equivale al modelo de datos.

Se define a travs de los constructos del dominio.

Formado por:

Conceptos.

Declaran entidades, objetos o instancias


del
dominio
con
estructura
de
informacin semejantes.

Equivale a
mtodos.

clases

pero

sin

Atributos.

Tipos de datos estndar o declarados


por el usuario.

Corresponden a las caractersticas de


los conceptos.

Relaciones.

definir

Equivalen a las asociaciones E-R en


modelos relaciones o O-O en modelos
de objetos.

Tipos de reglas.

Introduce el concepto de expresiones


lgicas.

No tiene equivalente en la ingeniera de


software tradicional

Base de conocimiento.

Implementa el esquema del dominio.

Contiene instancias de los tipos especificados en el


esquema de dominios.

Equivale a una base de datos.

Declaracin del conocimiento


Declaracin del conocimiento del dominio.
El conocimiento del dominio
en CML
DOMAIN-KNOWLEDGE
identificadorDK;
/*
Descripcin
del
esquema(s) del dominio */
DOMAIN-SCHEMA
identificadorDS
Especificacin de conceptos
Especificacin de relaciones
Especificacin de atributos
Especificacin de reglas
/*
Descripcin
de
la(s)
base(s) de conocimiento */
KNOWLEDGE-BASE
indentificadorKB
Ocurrencias de objetos del
esquema
END DOMAIN-KNOWLEDGE
identificadorDK;
Declaracin del esquema del dominio.
El esquema del dominio en CML
con especificaciones definidas en
el mismo esquema
DOMAIN-SCHEMA identificador;

Especificacin de conceptos
Especificacin de relaciones
Especificacin de atributos
Especificacin de reglas
END
DOMAIN-SCHEMA
identificador;
El esquema del dominio en CML
con especificaciones importadas
de otros esquemas
(Modularizacin y reutilizacin)
DOMAIN-SCHEMA identificador;
USES componentes_de_ordenador
...
END
identificador;

DOMAIN-SCHEMA

El esquema del dominio en CML con


algunas especificaciones importadas
de otros esquemas
(Modularizacin y reutilizacin)
DOMAIN-SCHEMA identificador;
USES
memoria,
cpu
componentes_de_ordenador

FROM

...
END DOMAIN-SCHEMA identificador;

Declaraciones de conceptos.
Conceptos en CML
CONCEPT cliente;
DESCRIPTION:
Datos personales del cliente;
ATTRIBUTES:
nombre: STRING;
domicilio: STRING;
edad: NATURAL;
...
AXIOMS:
edad >= 18;
END CONCEPT cliente;
Conceptos en CML
CONCEPT
marcador_combustibl
e;
DESCRIPTION:
"Dispositivo
que
muestra el
nivel disponible de
combustible";
ATTRIBUTES:
marca:
valor_marcador;
END
CONCEPT
marcador_combustibl
e;

CONCEPT
tanque_combustible;
DESCRIPTION:
"Recipiente
de
combustible";
ATTRIBUTES:
nivel:{lleno,
medio,
vaco}
END CONCEPT tanque
combustible;

VALUE-TYPE
valor_marcador
VALUE-LIST
{normal,
bajo, cero}
TYPE ORDINAL;
END VALUE-TYPE valor
marcador

Declaracin de relaciones
Declaracin de relaciones de especializacin/generalizacin
Jerarquas de conceptos en CML
CONCEPT ordenador; CONCEPT porttil;
CONCEPT sobremesa;
DESCRIPTION:
DESCRIPTION:
DESCRIPTION:
"Ordenador
Ordenador personal Ordenador
personal
personal";
porttil;
fijo;
SUPER-TYPE-OF:
SUB-TYPE-OF:
SUB-TYPE-OF:
porttil,
ordenador;
ordenador;
sobremesa;
ATTRIBUTES:
END CONCEPT porttil;
SEMANTICS:
peso: FLOAT;
DISJOINT: YES;
autonoma: FLOAT
COMPLETE: YES;
END
CONCEPT
ATTRIBUTES:
porttil;
marca: STRING;
modelo: STRING;
END
CONCEPT
ordenador;
Declaracin de relaciones de agregacin (todo / parte)
Relaciones de agregacin en CML
CONCEPT ordenador; CONCEPT memoria;
CONCEPT cpu;
DESCRIPTION:
DESCRIPTION:
DESCRIPTION:
Ordenador
Mdulo de memoria unidad
central
de
personal;
RAM;
procesamiento;
HAS-PARTS:
cpu, PART-OF: ordenador
PART-OF: ordenador
memoria.
ATTRIBUTES:
ATTRIBUTES:
ATTRIBUTES:
tipo: STRING;
marca: STRING;
marca: STRING;
capacidad: NATURAL; modelo: STRING;
modelo: STRING;
velocidad: NATURAL;
velocidad: NATURAL;
END
CONCEPT END
CONCEPT END CONCEPT cpu;
porttil;
memoria;
Declaracin de relaciones
Relaciones en CML
RELATION venta;
ARGUMENTS:
ordenador;
CARDINALITY 0-1;
cliente;
CARDINALITY ANY;
comercial;
CARDINALITY ANY;

ATTRIBUTES:
fecha-de-venta: DATE;
END RELATION venta;

Declaracin de relaciones binarias


Relaciones binarias en CML
RELATION comprado-por;
INVERSE: comprar;
ARGUMENT-1: ordenador;
CARDINALITY 0-1;
ARGUMENT-2: cliente;
CARDINALITY ANY;
[REFLEXIVE
|
SYMMETRIC
TRANSITIVE]
END RELATION comprado-por;

Declaracin de tipos de reglas


Declaracin de tipos de reglas
Esta construccin requiere una explicacin previa.
Objetivo: Calificar la disponibilidad crediticia de una persona en
funcin del sueldo que percibe
Premisas:
1. Tenemos un concepto persona con atributos nombre y sueldo
2. Tenemos un concepto prstamo con atributos cantidad e
intereses.
Conjunto de reglas:

R1: Si persona.sueldo <= 1000 entonces la persona califica


para prstamo.cantidad <= 200.

R2: Si persona.sueldo <= 2000 entonces la persona califica


para prstamo.cantidad <= 500.

Denominamos calificar_prestamo al conjunto de reglas.


Denominamos califica a la relacin entre persona y prstamo.
La declaracin de tipo de regla es genrica expresando una relacin
lgica para tomar decisiones.
Tipos de reglas en CML
RULE-TYPE calificar_prestamo;
DESCRIPTION:
"Califica la cantidad a prestar a
una persona
ANTECEDENT: persona.sueldo;
CONSEQUENT:
prestamo.cantidadr;
CONNECTION-SYMBOL califica;

END
calificar_prestamo;

RULE-TYPE

Declaracin de bases de datos


Declaracin de bases de conocimiento
Base de conocimiento en CML
KNOWLEDGE-BASE conocimiento_prestamos;
USES:
/* tipo de regla FROM esquema */
/* regla calificar_prestamo
esquema prestamo_consumo

definida

en

calificar_prestamo FROM prestamo_consumo;


EXPRESSIONS:
/* declaracin de las reglas */
persona.sueldo
<=
1000
prestamo.cantidad <= 200;

CALIFICA

persona.sueldo
<=
2000
prestamo.cantidad <= 500;

CALIFICA

END
conocimiento_prestamo;

KNOWLEDGE-BASE

Declaracin de inferencias
Conocimiento sobre inferencias en CML
INFERENCE-KNOWLEDGE identificador;
Descripcin de inferencias, roles de conocimiento y
funciones de transferencia;
END INFERENCE-KNOWLEDGE identificador;
Inferencia y roles de conocimiento en CML
INFERENCIA abstraer;
OPERATION-TYPE: ABSTRACT
ROLES:
INPUT caso;
OUTPUT caso-abstraido;
STATIC conocimiento-abstraccin;
SPECIFICATION:
"Genera una transformacin en los datos de entrada que produce
una descripcin ms
cualificada de un caso;
END INFERENCE abstraer;
Inferencia y roles de conocimiento en
CML
INFERENCIA diagnosticar;
OPERATION-TYPE: COVER
ROLES:

INPUT fallo;
OUTPUT hiptesis;
STATIC modelo-causal;
SPECIFICATION:
"Genera el
situaciones

conjunto

de

todas

las

que pueden causar el fallo introducido


como
entrada;
END INFERENCE diagnosticar;
Inferencias en CML
KNOWLEDGE-ROLE caso;
TYPE: DYNAMIC;
DOMAIN-MAPPING: solicitud;
END KNOWLEDGE-ROLE caso;
KNOWLEDGE-ROLE caso-abstraido;
TYPE: DYNAMIC;
DOMAIN-MAPPING: solicitud;
END KNOWLEDGE-ROLE caso-abstraido;
KNOWLEDGE-ROLE conocimiento-abstraccin;
TYPE: STATIC;
DOMAIN-MAPPING:
abstracciones
computador;
END

FROM

KNOWLEDGE-ROLE

asesoramiento-

conocimiento-

abstraccin;
Inferencias en CML
TRANSFER-FUNCTION obtener;
TYPE: OBTAIN
ROLES:
INPUT hallazgo-esperado;
OUTPUT hallazgo-observado;
END TRANSFER-FUNCTION obtener;

Conocimiento sobre las tareas


Conocimiento sobre las tareas

Responde al Qu? y Cmo?.

Est orientado a la meta:


o Diseo de un campo deportivo.
o Asesorar sobre
hipotecario.

el

otorgamiento

de

un

prstamo

Describe estrategias para lograr las metas.


o Generalmente tienen una estructura jerrquica:

Tareas Mtodos Subtareas.


o Tiene dos componentes:

TASK (La tarea).

Define
el
objetivo
del
proceso
de
razonamiento que se est intentando modelar
en funcin de las entradas y las salidas.

Los datos de la tarea son independientes del


dominio (si se trata de diagnstico mdico, la
salida no es "enfermedad", se considera un
nombre abstracto (genrico) tal como
"categora de avera")

TASK-METHOD (Mtodo de la tarea).

Define la estrategia que se debe seguir:

Especificacin de su descomposicin.

Tareas.

Inferencias.

Funciones de transferencia

Especificacin del control

Independiente del dominio.

Conocimiento sobre tareas en CML


TASK-KNOWLEDGE identificador;
Descripcin de tareas y mtodos de tareas;
END TASK-KNOWLEDGE identificador;
Tareas en CML
TASK decidir-caso;
GOAL:
Aplicar criterios al caso para tomar una
decisin en
funcin de sus valores;
ROLES:
INPUT:
caso-abstraido;
criterios-especificos;
OUTPUT:
decisin;
END TASK decidir-caso;
Mtodos de las tareas en CML
TASK-METHOD metodo-decidir-caso;
REALIZES: decidir-caso;
DECOMPOSITION:
[TASKS: ...]
INFERENCES: especificar, seleccionar, evaluar, encajar;

TRANSFER-FUNCTIONS: obtener;
ROLES:
INTERMEDIATE:
criterios: el conjunto de criterios a evaluar;
criterio: un criterio de asesoramiento;
valor: valor de un criterio de asesoramiento;
resultados: criterios seleccionados junto con sus
valores;
CONTROL-STRUCTURE:
Descripcin en pseudocdigo del proceso a realizar en
trminos de
las subtareas, inferencias y funciones de transferencia
END TASK-METHOD metodo-decidir-caso;

Actividad de anlisis y comprensin

Despus de haber tratado los contenidos sobre la adquisicin del


conocimiento responde a las siguientes preguntas:

Se dice que una persona tiene conocimiento cuando


Obtiene la nota ms alta del ula

Ofrece una conferencia sobre un tema

Lee sobre un tema

Aplica lo aprendido.

Discute sobre determinado tema

Retroalimentacin
Una persona tiene conocimiento cuando aplica lo aprendido, no basta
solo con leer o estudiar.

Son tipos de conocimiento presentados en nuestro curso:

Cientfico

Inteligente

Conceptual

Intuitivo

Procedimental

Retroalimentacin
En nuestro curso hemos presentado dos tipos de conocimiento:
conceptual y procedimental.

El nivel de concepto de la metodologa CommonKads tiene los


modelos: CommonKads:
Conocimiento

Organizacin

Comunicacin

Implementacin

Diseo

Retroalimentacin
El nivel de concepto de la metodologa CommonKads tiene los
modelos de conocimiento y de comunicacin.

Bibliografa
1. Alonso, A; Guijarro, B; Lozano, A; Palma, J; Tabeada, MJ.
Ingeniera
del
conocimiento.
Aspectos
metodolgicos.
Pearson/Prentice may. Madrid 2004.
2. Anjewierden, A. A., De Hoog, R., Van De Belde, W. Y Wielinga, B.
J. (1998). Engineering of Knowledge. The CommonKADS
Methodology. MIT Press, 1999.
3. CommonKADS Technical Reports. http://CommonKADS.uva.nl
4. Gmez, A. y otros: Ingeniera del Conocimiento. Centro de
Estudios Ramn Areces. Madrid, 1998.
5. Harmon, P Y King, D.: Sistemas Expertos. Daz de Santos, 1988.
6. Nilsson, N. J.: Inteligencia Artificial. Un nuevo enfoque. McGrawHill. Madrid, 2000.
7. Palma, J.; Martn, F. y Marn, R. Ingeniera del conocimiento. De
la extraccin al modelado del conocimiento. Revista
Iberoamericana de Inteligencia Artificial. N 11. 2001
8. Rich: Inteligencia Artificial. McGraw-Hill. 1995.
9. Rational Software Corporation (1997). Unified
Language.
Notation
Guide.
Version
http://www.rational.com.

Modelling
1.1.URL:

10.
Rodrguez, A.; Hernndez, C.; Plcido, C. Ingeniera del
Conocimiento. Universidad de Las Palmas de Gran Canaria,
1994.
11.
Schreiber, A. T., Akkermans, J. M., Schreiber, G., Wielinga,
B.J. y Breuker, J.A, editors (1993).
12.
KADS: A Principled Approach to Knowledge-Based System
Development. Academic Press. 1993. ISBN 0-12-629040-7.

Lecturas recomendadas
Para saber ms
Ponemos a tu disposicin y te invitamos a revisar dos interesantes
documentos que te ayudaran a reforzar y ampliar los temas que
hemos estudiado.

Documento 1: El conocimiento.
conocimiento.

Niveles y tipos de

URL:
http://www.webdianoia.com/moderna/locke/locke_fil_conoc.ht
m
Breve descripcin:
El autor presenta la filosofa de Locke quien plantea que el
conocimiento es la percepcin del acuerdo o desacuerdo de dos
ideas. Sugerimos la lectura del documento para problematizar el tipo
de conocimiento que puedes ser procesado en un computador y
comprender la problemtica que esto implica.

...

Documento 2: Metodologas de agentes.

URL:
http://metodologiadeagentes.galeon.com/enlaces1101021.ht
ml
Breve descripcin:
El documento digital presenta varias metodologas de agentes
inteligentes, entre ellas: CommonKads, MASE y GAIA. Los agentes
inteligentes constituyen un paso adelante en el estudio de la
inteligencia artificial y debera ser parte de los conocimientos
profesionales de nuestros egresados. Proponemos esta lectura para
que el estudiante tenga una idea mas general de las tendencias en
inteligencia artificial.

Conclusiones de la sesin
Durante esta semana de aprendizaje hemos comprendido que:

La definicin del conocimiento tiene diferentes escenarios en


funcin del uso que se le va a dar.

En todo caso queda claro que con el conocimiento somos


capaces de realizar alguna tarea inteligente.

La primera tarea para nosotros es adquirir y formalizar el


conocimiento de los expertos o de las fuentes de informacin,
luego debemos pasarla a formatos compatibles en un
computador para su procesamiento, logrando el tan ansiado
razonamiento automtico.

Existen tcnica para captar el conocimiento de acuerdo a los


diferentes tipos definidos.

Es posible formalizar conocimiento independiente de la


plataforma de desarrollo utilizando el lenguaje CML propuesto
por CommonKads en el nivel conceptual, especficamente para
su modelo de conocimiento.

Aunque la metodologa CommonKads parece ser demasiado


amplia, es necesario comprender que debemos tratar sus
componentes en funcin del problema que queremos resolver,
adaptando la a nuestras necesidades.

Metacognicin
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios
aprendizajes, es un ejercicio recomendado pata razonar e identificar
nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y
procesos mentales.
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los temas abordados?
Tuviste dificultad
solucionaste?

con

algn

tema

Qu acciones realizaste para aprender?

actividad?

Cmo

lo

Tema 07. Presentacin de aplicaciones

Fuente:https://geekoverdose.files.wordpress.com/2012/07/wumpusworld.gif
Bienvenida
Estimados estudiantes bienvenidos! a la sptima y ltima semana
del curso, donde presentaremos diversas aplicaciones de sistemas
basados en conocimiento, el objetivo de esta sesin es familiarizarse
con casos resueltos que permitan consolidar los aprendizajes
adquiridos durante el desarrollo del curso. Es probable que las
soluciones sean presentadas en diferentes plataformas tecnolgicas y
constituyen un excelente laboratorio para transformar sus
especificaciones del conocimiento a la sintaxis propuesta por el
lenguaje CML y posteriormente desarrollar soluciones usando alguno
de los IDEs propuestos en el curso.
Estudiando casos fortalecemos nuestros aprendizajes!

Introduccin al tema

Fuente: http://www.educagratis.org/moodle/course/view.php?id=48
La prctica y experimentacin fortalece los aprendizajes adquiridos
durante las sesiones de un curso, Como ustedes pueden comprender
el desarrollo de sistemas basados en conocimientos es una tarea
compleja que demanda un esfuerzo grande en recursos y tiempo.
Durante el desarrollo de nuestro curso hemos proporcionado
conceptos, tcnicas y metodologas, herramientas de desarrollo,
lenguajes de modelamiento y construccin. Ahora ha llegado el
momento de analizar aplicaciones que nos permitan fortalecer los
aprendizajes, para ello presentamos a ustedes un conjunto de
proyectos desarrollados con diversas tecnologas y metodologas,
esperamos que puedan ser comprendidas y analizadas en su
contexto.
Estamos usando soluciones y proyectos tomandos directamente de
Internet, algunos son presentados en cursos, otros en libros, blogs o
directamente de la pgina de los autores, en todos los casos, lo
hacemos con fines didcticos y con el nimo de despertar en el
estudiante el afn de bsqueda en tan importante espacio que nos
brinda la tecnologa.
Presentamos casos conocidos como por ejemplo el mundo de
wumpus, el problema de las n reinas, el juego sudoku, domtica: la
vivienda inteligente, aplicaciones en educacin, aplicaciones de
control, entre otros. La metodologa que seguimos es presentar el
caso, mostrar documentos que tratan el caso (en algunos se
presentan las soluciones), seguir o implementar el caso, hacer un
anlisis y comentarios, terminando con la internalizacin de los
conocimientos.
Esperamos que despus de visualizar los contenidos propuestos, el
estudiante complete sus aprendizajes desde un punto de vista de

experimentacin y prueba, para luego emprender con alto grado de


aptitud la solucin de casos de su entorno profesional.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este
sptimo tema:
Capacidades

Define y disea aplicaciones que requieren conocimientos.

Aplica las tcnicas de los sistemas basados en conocimiento


para proponer soluciones tecnolgicas modernas.

Propone alternativas de solucin a problemas actuales con


tecnologas adecuadas.

Actitudes

Demuestra tolerancia y respeto ante la opinin de sus


compaeros en el debate de un foro.

Asume responsabilidad en el cumplimiento de las actividades


programadas.

Valora la problemtica del conocimiento y la posibilidad de


formular soluciones con tecnologas informticas.

Marco conceptual
Observa detenidamente el siguiente esquema, en el encontrars de
un "vistazo" de manera sintetizada los principales concepto de la
temtica que abordaremos. Qu conceptos o categoras te llaman la
atencin?

7.1 El mundo de wumpus.

Fuente: http://verilobi.com/wumpus+game/#prettyPhoto
El mundo de wumpus es una cueva que est compuesta por
habitaciones conectadas mediante pasillos. Escondido en algn lugar
de la cueva est el wumpus, una bestia que se come a cualquiera que
entre en su habitacin. El wumpus puede ser derribado por la flecha
de un agente, y ste slo dispone de una. Algunas habitaciones
contienen hoyos sin fondo que atrapan a aquel que deambula por
dichas habitaciones (menos al wumpus que es demasiado grande
para caer en ellos). El nico premio de vivir en este entorno es la
posibilidad de encontrar una olla de oro. Aunque el mundo de
wumpus pertenece ms al mbito de los juegos por computador, es
un entorno perfecto para evaluar los agentes inteligentes. Michael
Genesereth fue el primero que lo propuso.

Actividad de anlisis, diseo y programacin.


Este caso est propuesto en libro de Rusell (ver enlace en lecturas
recomendadas) y aunque est orientado a ser resuelto como agente
inteligente es un buen caso para modelar un sistema experto basado
en la metodologa CommonKads y realizar la programacin en Prolog.
Sugerimos visitar
propuesto.

el siguiente

enlace e implementar

https://github.com/rlegendi/wumpus-prolog/

el caso

7.2 Aplicaciones ldicas.

Fuente: http://en.wikipedia.org/wiki/Sudoku
Una de las aplicaciones mas conocidas de la inteligencia artificial est
referida a la solucin de juegos en el computador. El captulo 6 del
libro de Rusell trata con mucho detalle este tema.
Durante el estudio de la inteligencia artificial se han planteado juegos
clsicos como las n reinas, sudoku, tres en raya, las torres de Hanoi,
entre otros.
El lenguaje Prolog es adecuado para resolver estos problemas, a
continuacin presentamos un conjunto de enlaces a cdigo en Prolog.
Problema de las N-reinas
http://www.logic.at/prolog/queens/queens.html
http://blog.andinadigital.com/2012/09/23/demostracion-de-problemade-las-n-reinas-en-swi-prolog-programacion-logica/
Juego Sudoku:
http://www.visualprolog.com/vip/example/userExample/sudoku_Cumming/sudoku_Cum
ming.htm

Actividad de anlisis y diseo y programacin.


Proponemos al estudiante descargar el cdigo desde los enlaces
presentados, ejecutar los programas segn el IDE utilizado, analizar
su ejecucin, visualizar y comprender el cdigo fuente. Aplicando un

proceso de reingeniera modelar el caso siguiendo la metodologa


CommonKads.

7.3 La vivienda inteligente.

Fuente: http://www.cedom.es/sobre-domotica/que-es-domotica
Construir una vivienda inteligente fue un sueo de muchos estudiosos
de la inteligencia artificial y podemos afirmar que en la actualidad se
han logrado avances impresionantes a travs del campo conocido
como domtica.

La domtica segn la Asociacin espaola de domtica e inmtica es


el conjunto de tecnologas aplicadas al control y la automatizacin
inteligente de la vivienda, que permite una gestin eficiente del uso
de la energa, que aporta seguridad y confort, adems de
comunicacin entre el usuario y el sistema.

Presentamos esta caso porque nos permite mostrar una extensin


tecnolgica a las propuestas de solucin de la inteligencia artificial,
nos referimos a los sistemas de control implementados con
microcontroladores (arduino), aunque no es objetivo directo del curso
el uso de microcontroladores, resulta interesante que los estudiantes
adquieran conocimiento respecto a estos temas que luego podrn ser
usado como temas de investigacin.

Actividad de lectura y experimentacin.


Recomendamos al estudiante recorrer los siguientes enlaces con el
objetivo de conocer la domtica y su implementacin con software y
hardware libre. Luego se sugiere modelar soluciones usando la
metodologa CommonKads.

Domtica:

http://www.cedom.es/sobre-domotica/que-es-domotica

https://www.casadomo.com/

Domtica con Arduino:

http://forum.arduino.cc/index.php?topic=223723.0

http://domotica-arduino.es/es/

http://es.opendomo.org/arduino

7.4 Implementacin de electrnica digital.

Fuente: http://www.tourdigital.net/SimuladorTTLconEscenarios.htm
La electrnica digital implementa soluciones del mundo real basadas
en chips (circuitos integrados) que contienen puertas lgicas
construidas con semiconductores, fundamentalmente transistores y
diodos. Las puertas lgicas se basan en la lgica digital que
implementa los operadores lgicos and, or, not, etc. El
funcionamiento de las puertas lgicas se define en tablas de verdad
que relaciona el valor de las entradas y genera una salida.

Lo interesante de este caso radica en que podemos plantear


problemas que requieran soluciones basadas en ,los estado de
varales entrada y generan actuaciones sobre variables de salida.
Encontramos casos de control domtico, control de un vehculo,
control de semforos, control de riego tecnificado, etc.

Actividad de anlisis y diseo


Este caso genera un amplio conjunto de problemas, sin embargo
proponemos un desarrollo incremental:

1. Creamos reglas para cada una de las puertas lgicas (And, Or,
Not)
2. Implementamos predicados para evaluar funciones lgicas que
contienen las puertas lgicas definidas en el tem anterior. (se
deben definir previamente las funciones lgicas.

La siguiente actividad es opcional y plantea un problema con cierto


grado de complejidad, consiste en determinar fallas en circuitos
digitales.
Se
sugiere
seguir
el
enlace
http://ssdi.di.fct.unl.pt/plr/enunciado/trab1.html aunque est escrito
en portugus se entienden los grficos, en todo caso recuerden que
ahora contamos con excelentes traductores en lnea, de manera que
el idioma ya no es barrera para nuestro estudio.

Aplicando reingeniera modelar la solucin usando CommonKads.


Para
complementar
puedes
visitar
este
enlace
http://www.oldemarrodriguez.com/yahoo_site_admin/assets/docs/Prog
ramacion_PROLOG_VStrawBerryV2.223100300.pdf en
el
que
encontrars un ejemplo de simulacin de compuertas lgicas en
Prolog.

7.5 Agentes inteligentes.

Fuente: http://www.monografias.com/trabajos74/agentes-inteligentespaso-inteligencia-artificial/agentes-inteligentes-paso-inteligenciaartificial2.shtml
Los agentes inteligentes son el siguiente paso a los sistemas
expertos. Aunque nuestro curso no fue planteado para trabajar con
agentes inteligentes no quisiramos dejar pasar la oportunidad de
presentarlos y proponer algunos casos y herramientas de trabajo con
ellos.
Actividad de programacin de agentes
Proponemos leer la documentacin oficial de JADE (software para el
desarrollo de agentes), descargar e instalar el software e implementar
los casos propuestos.
http://jade.tilab.com/
http://programacionjade.wikispaces.com/Agentes
https://github.com/bluezio/jade-booktrading

7.6 Sistemas inteligentes en educacin.

Fuente: http://myblogpedagogia4callejas.blogspot.com/
Hemos comentado que la inteligencia artificial aborda casos y
problemas de diferentes campos del quehacer humano, sin embargo
en el campo educativo es donde tiene muchas aplicaciones.
Proponemos al estudiante visitar los siguientes enlaces y hacer un
resumen de posibles aplicaciones que pueda desarrollar en este
campo.

Sistemas inteligentes en la educacin: una revisin de las lneas


de
investigacin
y
aplicaciones
actuales:
http://www.uv.es/relieve/v10n1/relievev10n1_1.htm

Inteligencia
artificial
aplicada
http://t01nocturno.blogspot.com/

Sistemas expertos en el proceso de enseanza-aprendizaje:


http://www.progmat.uaem.mx:8080/Vol5num1/vol5num1art4.pd
f

la

educacin:

7.7 El futuro se materializa en nuestra


creatividad.

Fuente:
http://www.emiliosilveravazquez.com/blog/2013/06/10/%C2%A1elfuturo-%C2%BFpodremos-disenarlo-nosotros/
Como hemos visto en los ejemplos anteriores no existen lmites para
el desarrollo de los sistemas basados en conocimientos, podemos
desarrollar aplicaciones en prcticamente todas las actividades del
ser humano.
Recomendamos al estudiante elaborar una lista de enlaces de
aplicaciones de la inteligencia artificial en los diferentes campos, tales
como contabilidad, medicina, finanzas, ingeniera, etc.

Usos
y
aplicaciones
de
la
inteligencia
artificial:
http://www.uv.mx/cienciahombre/revistae/vol17num3/articulos/i
nteligencia/

Aplicaciones
prcticas
de
la
inteligencia
http://www.davidam.com/docu/aplic-ia/

Artificial
intelligence.
An
illustrative
overview:
http://www.gitsinformatica.com/areas%20de%20aplicacion
%20de%20la%20ia.pdf

Aplicaciones de la inteligencia artificial en la Medicina:


perspectivas
y
problemas:
http://scielo.sld.cu/scielo.php?
pid=S1024-94352008000500005&script=sci_arttext

artificial:

Actividad de anlisis y comprensin

Despus de haber tratado los contenidos sobre las aplicaciones


responde a las siguientes preguntas:

La domtica permite automatizar:


Domos de seguridad.

Fbricas.

Circuitos elctricos

Viviendas

Sistemas expertos.

Retroalimentacin
La domtica permite automatizar viviendas.

Los agentes inteligentes:


Fueron primeros que los sistemas expertos.

Son sistemas expertos.

Constituyen el siguiente paso de los sistemas expertos.

Todava no existen en inteligencia artificial.

Se encuentran disponibles en hardware.

Retroalimentacin
Los agentes inteligentes constituyen el siguiente paso de los sistemas
expertos.

Para nuestro curso el mundo de wumpus fue presentado en el


libro de:
Prolog

CLISP

Russell

Kernighan

Briceo

Retroalimentacin
El mundo de wumpus fue presentado en el libro de Russell.

Bibliografa
1. Alonso, A; Guijarro, B; Lozano, A; Palma, J; Tabeada, MJ.
Ingeniera
del
conocimiento.
Aspectos
metodolgicos.
Pearson/Prentice may. Madrid 2004.
2. Anjewierden, A. A., De Hoog, R., Van De Belde, W. Y Wielinga, B.
J. (1998). Engineering of Knowledge. The CommonKADS
Methodology. MIT Press, 1999.
3. CommonKADS Technical Reports. http://CommonKADS.uva.nl
4. Gmez, A. y otros: Ingeniera del Conocimiento. Centro de
Estudios Ramn Areces. Madrid, 1998.
5. Harmon, P Y King, D.: Sistemas Expertos. Daz de Santos, 1988.
6. Nilsson, N. J.: Inteligencia Artificial. Un nuevo enfoque. McGrawHill. Madrid, 2000.
7. Palma, J.; Martn, F. y Marn, R. Ingeniera del conocimiento. De
la extraccin al modelado del conocimiento. Revista
Iberoamericana de Inteligencia Artificial. N 11. 2001
8. Rich: Inteligencia Artificial. McGraw-Hill. 1995.
9. Rational Software Corporation (1997). Unified
Language.
Notation
Guide.
Version
http://www.rational.com.

Modelling
1.1.URL:

10.
Rodrguez, A.; Hernndez, C.; Plcido, C. Ingeniera del
Conocimiento. Universidad de Las Palmas de Gran Canaria,
1994.
11.
Schreiber, A. T., Akkermans, J. M., Schreiber, G., Wielinga,
B.J. y Breuker, J.A, editors (1993).
12.
KADS: A Principled Approach to Knowledge-Based System
Development. Academic Press. 1993. ISBN 0-12-629040-7.

Lecturas recomendadas
Para saber ms
Ponemos a tu disposicin y te invitamos a revisar dos interesantes
documentos que te ayudaran a reforzar y ampliar los temas que
hemos estudiado.

Documento
moderno.

1:

Inteligencia

artificial:

Un

enfoque

URL:http://iarp.cic.ipn.mx/~hcalvo/Inteligencia_Artificial_files/I
nteligencia%20Artificial,%20Un%20Enfoque%20Moderno%20%20Stuart%20J.%20Russell,%20Peter%20Norvig%20%20Prentice%20Hall%20%28ocr,%20caps%201-11%29.pdf
Breve descripcin:
Este libro contiene una descripcin de sistemas expertos y presenta el
siguiente paso que son los agentes inteligentes. Es de lectura
obligatoria para todo estudiante de inteligencia artificial, sistemas
basados en conocimiento, sistemas expertos, agentes inteligentes.

...

Documento 2: Curso de sistemas expertos.

URL:
id=48

http://www.educagratis.org/moodle/course/view.php?

Breve descripcin:
El enlace nos conduce a un curso de sistemas expertos en el el autor
pone a disposicin material de aprendizaje y muestra varios lenguajes
de programacin como LISP, JESS, PROLOG. Pone a disposicin el libro
de castillo que en su parte final incluye casos de sistemas
probabilsticos.

Conclusiones de la sesin
Durante esta semana de aprendizaje hemos comprendido que:

Se pueden desarrollar aplicaciones de sistemas expertos en


todos los campos del quehacer humano.

Es posible modelar las soluciones de sistemas basados en


conocimientos utilizando la metodologa CommonKads.

Confirmamos la eficacia de Prolog para implementar soluciones


basadas en conocimiento.

Existen otras metodologas de desarrollo de los sistemas


expertos.

Adems de Prolog, existen otros lenguajes para programar


sistemas expertos, tales como LISP, CLIP, JESS y otros.

Metacognicin
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios
aprendizajes, es un ejercicio recomendado pata razonar e identificar
nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y
procesos mentales.
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los temas abordados?
Tuviste dificultad
solucionaste?

con

algn

tema

Qu acciones realizaste para aprender?

actividad?

Cmo

lo

También podría gustarte