Вы находитесь на странице: 1из 58

Unidad 1 - Introduccin a la Inteligencia Artificial

INTRODUCCIN

La Inteligencia Artificial, o IA en trminos cortos, es una combinacin de la ciencia de los computadores,


la sicologa y la filosofa. La IA cubre un espectro amplio, consistente en campos de estudio diferentes,
estos van desde la visin por computador hasta las redes neuronales y los sistemas expertos. El
elemento que los campos de la IA tienen en comn es la creacin o simulacin de maquinas que
puedan "pensar".

Para clasificar las maquinas como pensantes, es necesario definir inteligencia. El problema que
aparenta ser simple es uno de los ms complejos del rea, en el entendido que la inteligencia puede
representar, por ejemplo, la solucin adecuada de problemas complejos o a establecer generalizaciones
y relaciones entre objetos.

Qu se podra decir acerca de la percepcin y la comprensin?

Dnde podr situarse las formas de adquisicin del conocimiento? y, si el pensar es un acto natural
concomitante con la naturaleza Cules son las herramientas que se necesitan para simular un
comportamiento natural del pensar humano?

OBJETIVO GENERAL

Establecer los principios que rigen la inteligencia artificial sus aplicaciones y evolucin.

OBJETIVOS ESPECIFICOS

Reconocer las diferentes definiciones de inteligencia artificial y la evolucin histrica de la


inteligencia artificial.
Describir y usar las tcnicas de resolucin de problemas con el nimo de establecer normas
para este propsito.
Reconocer el uso de los agentes inteligentes y su aplicacin
Estudiar la complejidad de los problemas y representar su estructura y las posibles soluciones

Leccin 1
Inteligencia, definicin de Inteligencia Artificial.2

INTELIGENCIA

Es completamente posible establecer una escala aproximada de la inteligencia:

muchas personas son ms inteligentes que algunos chimpancs, un procesador de textos es una
mquina ms inteligente que una maquina de escribir mecnica, etc. Sin embargo no existe una
definicin cientfica de inteligencia.
Se reconoce que es difcil precisar el significado de la Inteligencia, sin embargo algunas definiciones
mencionadas por algunos investigadores son:

a) BINET: buen discernimiento, buena comprensin, buen razonamiento.


b) SPEARMAN: la inteligencia general... supone principalmente saber relacionar y correlacionar.
c) TERMAN: capacidad para desarrollar conceptos y captar su significado.
d) VERNON: todo lo relacionado con capacidad para pensar o eficiencia mental.
e) BURT: capacidad innata, general, habilidad cognoscitiva.
f) HEIM: la inteligencia denota capacidad para captar lo esencial de una situacin y responder en
consecuencia.

g) WECHSLER: capacidad general o global del individuo para actuar segn un propsito, pensar
racionalmente y relacionarse eficazmente con su entorno.
h) PIAGET: adaptacin al entorno fsico y social.
i) MINSKY: inteligencia es todo lo que puede ser medido mediante pruebas de inteligencia.

1
http://www.monografias.com/trabajos16/inteligencia-artificial-historia/inteligencia-artificial-historia.shtml
2
Profesora: Dra. Mara Jos Absolo Guerrero Universidad de las Islas Baleares Departamento de
Matemtica e
Informtica, http://dmi.uib.es/~abasolo/intart/1-introduccion.html

La combinacin de aptitudes, criterio, comprensin, razonamiento, conceptualizacin, saber responder


adecuadamente, adaptacin, etc. que se encuentran presentes en estas definiciones sealan la
naturaleza polifactica de la inteligencia.

La inteligencia por otra parte esta relacionada con la habilidad para reconocer patrones, deducir
conclusiones razonables, analizar sistemas complejos como elementos simples y resolver sus
contradicciones, y aun es mucho ms que todo lo mencionado. La inteligencia esta en un nivel mayor
que la informacin y el conocimiento pero debajo del nivel de la sabidura.

Una de las formas mas aceptadas para explicar la inteligencia, desde el punto de vista computacional,
constituye la prueba de Alan Turing elaborada en 1950. La idea de la prueba de Turing es que si un
interrogador decide errneamente que una mquina es una persona, entonces se dice que dicha
mquina exhibe inteligencia.

INTELIGENCIA ARTIFICIAL

Resulta obvi que la inteligencia es de por s un concepto bastante complicado de definir. Por esta razn
intentar definiciones para la inteligencia artificial es tambin compleja.

Quiz la inteligencia artificial debera llamarse inteligencia sinttica para que concuerde mejor con el
lenguaje comercial. As los diamantes artificiales son falsas imitaciones, mientras que los diamantes
sintticos son diamantes autnticos, slo que manufacturados en lugar de desenterrados. No obstante
el nombre, la inteligencia artificial aspira a una inteligencia autntica, no a una falsa imitacin.
Marvin Minsky sugiere el carcter practico de la inteligencia artificial mencionando:
"La inteligencia artificial es la ciencia de hacer que las mquinas hagan cosas que requeriran
inteligencia si fueran hechas por seres humanos".

Elaine Rich: "La inteligencia artificial es el estudio de cmo hacer que los ordenadores hagan cosas que
por el momento las personas realizan de una forma ms perfecta".

Otras definiciones que pueden darnos una idea de lo que se llama inteligencia artificial:

Una de las reas de las ciencias computacionales encargadas de la creacin de hardware y


software con comportamiento inteligentes.
El estudio de las computaciones que permiten percibir, razonar y actuar.
Estudia como lograr que las mquinas realicen tareas que, por el momento, son realizadas mejor
por los seres humanos.

Desde el punto de vista de los objetivos, la IA puede considerarse como parte de la ingeniera o de la
ciencia:

El objetivo ingenieril de la IA es resolver problemas reales, actuando como un armamento de ideas


acerca de cmo representar y utilizar el conocimiento, y de como ensamblar sistemas.
El objetivo cientfico de la IA es explicar varios tipos de inteligencia. Determinar qu ideas acerca de
la representacin del conocimiento, del uso que se le da a ste, y del ensamble de sistemas
explican distintas clases de inteligencia.

Algunas aplicaciones de la inteligencia artificial:

Tareas de la vida diaria (ms difcil para una mquina que las tareas de un experto)
o Percepcin (visin y habla)
o Lenguaje natural (comprensin, generacin, traduccin)
o Sentido comn
o Control de un robot

Tareas formales
o Juegos (ajedrez, backgammon, damas)
o Matemticas (geometra, lgica, clculo, demostracin de propiedades)

Tareas de los expertos (necesitan un conocimiento menor que el conocimiento necesario en las
tareas ms comunes)
o Ingeniera (diseo, deteccin de fallos, planificacin de manufacturacin)
o Anlisis cientfico o Diagnosis mdica o Anlisis financiero

Objetivos

Puesto que la meta de la inteligencia artificial es desarrollar sistemas que se comporten de manera
inteligente, es decir de manera similar a los seres humanos, Cercone & McCalla en 1984 disearon
objetivos que cualquier sistema ideal de inteligencia artificial debe cumplir. Un investigador de la
inteligencia artificial debe ser capaz de:

a) Desarrollar un sistema de trabajo que se comporte de una manera inteligente.


b) Validar el comportamiento del sistema mediante comparaciones con seres humanos (objetivo de
diseo externo);
c) Entender las implicaciones del sistema - su cobertura, lo que puede hacer (objetivo de diseo
interno);
d) Determinar que es lo que puede ser generalizado acerca del sistema, las lecciones que ensea, las
reas de impacto.

reas de investigacin

Los mayores esfuerzos de la investigacin en inteligencia artificial se concentraron


en el entendimiento del lenguaje natural, la visin por computadora, aprendizaje, prueba de teoremas y
programacin lgica, bsqueda, solucin y planeacin de problemas, sistemas expertos, representacin
de conocimiento y otras categoras tales como instruccin y tutora inteligente asistida por computador,
juegos, pronunciacin, programacin automtica y herramientas de inteligencia artificial.

Sistemas Expertos

Son programas computacionales diseados para actuar como expertos en un dominio particular
restringido. Es importante debido a que trabaja con conocimiento en lugar del tradicional dato.

La investigacin en representacin de conocimiento es central para el avance de los sistemas expertos.


Los componentes bsicos de un sistema experto son:

a) Base de Conocimiento. Es la representacin el conocimiento del dominio para


la solucin de problemas especficos, normalmente dicho conocimiento se estructura en forma modular
y declarativa.

b) Mquina de Inferencia. Es el procedimiento que se encarga de realizar el razonamiento a partir de los


datos y utilizando el conocimiento acumulado en la base de conocimiento. Es genrica, es decir, se
puede aplicar a diferentes dominios slo cambiando la base de conocimiento.

c) Memoria de Trabajo. Es el lugar donde se almacenan los datos de entrada y conclusiones


intermedias que se van generando durante el proceso de razonamiento.

d) Interfaz de Usuario. Se refiere a la entrada/salida al usuario del sistema, incluyendo, normalmente,


mecanismos de pregunta (porqu) y de explicacin
(cmo).

e) Interfaz de Adquisicin. Hace referencia a la interface para la adquisicin del conocimiento del
dominio, puede incluir mecanismos para facilitar su adquisicin y depuramiento interactivo y para
automatizar la adquisicin (aprendizaje).

Los Sistemas Expertos son uno de los puntos que componen las investigaciones
en el campo de la IA. Un sistema de computadores que trabaje con tcnicas de IA deber estar en
situacin de combinar informacin de forma "inteligente", alcanzar conclusiones y justificarlas. Los
Sistemas Expertos son una expresin de los sistemas basados en el conocimiento.

Con la aplicacin de tcnicas de Inteligencia Artificial finaliza la transicin del procesamiento de datos al
procesamiento de conocimientos.

Los sistemas expertos se aplican por norma general en problemas que implican un procedimiento
basado en el conocimiento. Un procedimiento de solucin basado
en el conocimiento comprende las siguientes capacidades:

a) Utilizacin de normas o estructuras que contengan conocimientos y experiencias de expertos


especializados.
b) Deduccin lgica de conclusiones.
c) Capacidad para interpretar datos ambiguos.
d) Manejo de conocimientos afectados por valores probabilsticos.

Debido a la gran capacidad de almacenamiento de los computadores, los sistemas expertos tienen el
potencial de interpretar estadsticas, para interpretar el formalismo de representacin conocido como
reglas de produccin. Un sistema experto trabaja de manera parecida a un detective encargado de
resolver un misterio. Utilizando la informacin, y un formalismo de representacin de conocimiento, un
sistema experto puede resolver el problema que se le plantee.

El Procesamiento del Lenguaje Natural (PLN) es una parte esencial de la IA que investiga y formula
mecanismos computacionalmente efectivos que faciliten la interrelacin hombre mquina y permitan una
comunicacin mucho ms fluida y menos rgida que los lenguajes formales. Todo sistema de PLN
intenta simular un comportamiento lingstico humano; para ello debe tomar conciencia tanto de las
estructuras propias del lenguaje, como del conocimiento general acerca del universo de discurso. De
esta forma, una persona que participa en un dilogo sabe cmo combinar las palabras para formar una
oracin, conoce los significados
de las mismas, sabe cmo stos afectan al significado global de la oracin y posee un conocimiento del
mundo en general que le permite participar en la conversacin.

El PLN hace referencia a programas que permiten la comunicacin hombre- maquina en un lenguaje
parecido al humano. Cuenta con dos reas: comprensin del lenguaje natural y generacin del lenguaje
natural. La comprensin del lenguaje natural investiga los mtodos que permitan al computador
comprender las instrucciones dadas en lenguaje natural, de tal manera que los computadores puedan
entender de manera ms fcil al ser humano. La generacin del lenguaje natural intenta mostrar que el
computador puede ser capaz de expresarse en lenguaje ordinario, de tal forma que se pueda entender a
los computadores de una manera mucho ms sencilla.

Reconocimiento del Habla

Hace ya tiempo que se estudia la posibilidad de desarrollar interfaces hombre- mquina controlados por
la voz para sustituir en ciertas aplicaciones a las interfaces tradicionales basadas en teclados, paneles y
dispositivos similares. Este nuevo tipo de interfaz constara de dos mdulos de entrada/salida: uno de
reconocimiento de habla, mediante el cual el ordenador sera capaz de extraer informacin de los
comandos orales del operador o usuario, y otro de sntesis de voz, que podra ser una de las vas de
presentacin de resultados.

La utilizacin de la voz, y el Reconocimiento de Habla, como va de dar rdenes a los computadores


ofrece varias ventajas respecto al mtodo tradicional de comunicacin entre el usuario y la mquina:

a) Hace esta comunicacin ms rpida, y ms agradable para los nuevos usuarios, ya que al ser la
forma natural de comunicarse no se necesita ninguna habilidad especial.
b) Permite tener las manos libres para utilizarlas en alguna otra actividad, a la vez que se van dando
rdenes por medio de la voz.
c) Permite movilidad, ya que la voz se puede enviar a distancia y ser recogida por
un micrfono, por oposicin a un teclado que no se puede mover de la mesa de trabajo.
d) Permite acceso remoto, al poder acceder a un ordenador usando la red telefnica, que es la red de
comunicaciones ms extendida.
e) Permite la disminucin del tamao de los paneles de control. Piense en el panel
de un avin, cuantos conmutadores manuales podran suprimirse si se utilizara la voz como forma de
comunicacin con un sistema de control Esta rea de investigacin permite que los ordenadores
entiendan el habla humana, de tal manera que se puedan or voces y reconocer palabras habladas,
simplificando el proceso de comunicacin interactiva hombre - maquina. Incrementa el mtodo
interactivo de comunicacin primaria utilizada por las personas, el habla.
Visin por Computador

El trmino Visin por Computador (VC) dentro del campo de la Inteligencia Artificial puede considerarse
como el conjunto de todas aquellas tcnicas y modelos que permiten el procesamiento, anlisis y
explicacin de cualquier tipo de informacin espacial obtenida a travs de imgenes digitales. Desde
sus inicios la VC ha inspirado sus desarrollos en el estudio del sistema visual humano el cual sugiere la
existencia de diferentes tipos de tratamiento de la informacin visual dependiendo de metas u objetivos
especficos, es decir, la informacin visual percibida es procesada en distintas formas con base en las
caractersticas particulares de la tarea a realizar, por lo que la VC propone varias tcnicas que permiten
obtener una representacin del mundo a partir del anlisis de imgenes obtenidas desde cmaras de
video.

Debido a que la informacin visual es una de las principales fuentes de datos del mundo real, resulta til
el proveer a un computador digital del sentido de la vista (a partir de imgenes tomadas con cmaras
digitales o analgicas), que junto con otros mecanismos como el aprendizaje hagan de esta una
herramienta capaz de detectar y ubicar objetos en el mundo real.

Por consiguiente la investigacin en visin por computador tiene como objetivo dotar a los
computadores con la herramienta de visualizacin para el entendimiento y comprensin del entorno que
el computador est observando.

Robtica

Cuando se escucha la palabra Robot, algunas ocasiones se piensa de manera directa en esas pelculas
que han sorprendido por presentar Robots que realizan acciones superiores a las capacidades del ser
humano. Los modelos ms famosos
de robots han sido los creados por George Lucas en su pelcula Star Wars a quienes se conoce como
C3PO y R2D2.

Mikell Groover, en su libro Automation, Production Systems and Computer Integrated Manufacturing,
define al robot industrial como: "una mquina programable, de propsito general, que posee ciertas
caractersticas antropomrficas, es decir, con caractersticas basadas en la figura humana...". Cabe
destacar que la caracterstica antropomrfica ms comn en nuestros das
es la de un brazo mecnico, el cual realiza diversas tareas industriales. Existen en
el mercado diversas empresas dedicadas a la fabricacin de robots industriales por lo que existen
diferentes marcas y modelos. Estos ltimos son normalmente asignados para identificarlos o de acuerdo
a su funcin.

Un resumen general de lo que constituye un robot industrial puede ser considerado sobre la base de los
siguientes puntos:

a) Un robot industrial es una mquina programable de propsito general que posee ciertas
caractersticas antropomrficas.
b) El componente principal lo constituye el manipulador, el cual consta de varias articulaciones y sus
elementos.
c) Las partes que conforman el manipulador reciben los nombres de cuerpo, brazo, mueca y efector
final o gripper. Otros elementos son el controlador, los mecanismos de entrada y salida de datos y los
dispositivos especiales.
d) Existen dos categoras de efectores finales (grippers): las pinzas y las herramientas. Las pinzas
pueden ser de tipo pivotante o de movimiento lineal entre otras. Entre las herramientas se tiene a los
desarmadores y las pistolas para soldar.
e) Los movimientos de un robot estn relacionados con los grados de libertad que posea. Un grado de
libertad es un nmero o tipo de movimiento del manipulador. Los grados de libertad se determinan por
los movimientos que ejecutan el brazo y
la mueca del robot que pueden ser de uno a tres cada uno.

La investigacin en esta rea tiende al estudio de las capacidades de los robots de poder insertarse en
la sociedad a manera de seres mecnicos capaces de controlar y resolver los problemas discretos y
mecanizados de su entorno.

Otras reas

Otras reas significativas para su estudio al interior de la inteligencia artificial son: las lgicas no clsicas
como la Lgica Difusa, las Redes Neuronales, los Algoritmos Genticos, la Realidad Virtual, la Vida
Artificial, los Agentes Inteligentes, etc.

En este mdulo se intenta brindar la comprensin, anlisis y aplicacin de estas reas de la inteligencia
artificial. No es intencin revisar a detalle cada una de estas reas, sin embargo es menester reconocer
la importancia que han cobrado
en esta ltima dcada de investigacin en la inteligencia artificial. La mayor de las expectativas es
compartir los principios y fundamentos bsicos que proporcionan
la importancia natural a estas reas, tan trilladas y comentadas en este ultimo tiempo.

Desarrollo histrico de la Inteligencia Artificial segn Jackson:

1950-1965. Periodo "clsico''.


o Gestacin [McColluck y Pitts, Shannon, Turing]
o 1956, la I.A. tuvo su boom a partir de la conferencia efectuada en Darmouth College. Estaban
presentes importantes cientficos como McCarty (le dio el nombre a esta nueva rea del
conocimiento), Minsky (fundador del laboratorio de IA del MIT), Shannon (laboratorios Bell),
Rodhester (IBM), Newell (presidente de la A.A.A.I. Asociacin Americana de IA), Simmon (premio
Nbel de Carnegie Mellon University) - Redes neuronales, robtica (Shakey).
o Bsqueda en un espacio de estados, Heursticas, LISP.
o Resolutor general de problemas (GPS) [Newell, Simon]. Resolucin de problemas de sentido
comn, los cuales incluyen razonamiento de objetos fsicos y sus relaciones, como tambin
razonamiento de acciones y sus consecuencias. Solo se resolvieron tareas muy simples, pues no
se pudo crear un programa con la cantidad suficiente de conocimiento de un dominio especfico.
o Se pone principal nfasis en la implementacin de juegos (ajedrez, damas, etc.) as como en la
demostracin de teoremas matemticos.
o Limitaciones de pura bsqueda, explosin combinatoria.

1965-1975. Periodo "romntico''

o Representacin "general'' del conocimiento


o Redes semnticas [Quillian]
o Prototipos (frames) [Minsky]
o Perceptrn [Minsky y Papert]
o Lgica [Kowalski]
o Mundo de bloques (SHDRLU) [Winograd]
o Percepcin (visin y habla), compresin de lenguaje natural, robtica.
o Dificultades de representacin "general'', problemas de "juguete''.

1975- actualidad. Periodo "moderno'', Inteligencia "especifica'' vs. "general''.


o Se identifica la necesidad de trabajar en sociedad con profesionales de otras reas de
conocimiento.
o Representacin explcita del conocimiento especfico del dominio.
o Sistema experto mdico MYCIN (experto en enfermedades infecciosas de la sangre) iniciado en la
Universidad de Stanford.
o Sistemas expertos o basados en conocimiento.
o Regreso de redes neuronales [Hopfield, Rumelhart, Hinton], algoritmos genticos [Holland,
Goldberg].
o Reconocimiento de voz (HMM), incertidumbre (RB, Lgica difusa), planeacin, aprendizaje.
o Aplicaciones "reales'' (medicina, finanzas, ingeniera, exploracin, etc.).
o Comercializacin de la IA

A continuacin, encontrars un Chat-Bot. se trata de un software que hara las veces de reconocimiento
de lenguaje natural, pero teniendo como entrada lo que el usuario digita dentro de la caja de
mensaje. Otros sistemas ms avanzados pueden tomar e identificar los patrones de habla, traducirlos a
caracteres y luego procesarlos (tarea conocida normalmente como la realizada por los programas de
dictado).

Leccin 2
Uno de los resultados que surgieron de las primeras investigaciones en IA fue que la inteligencia
necesita conocimiento. El conocimiento posee algunas propiedades poco deseables como:

Es voluminoso
Es difcil caracterizarlo
Cambia
Se organiza de manera que se corresponde con la forma en que va a se usado

Una tcnica de IA es un mtodo que explota el conocimiento representado de manera que se cumpla
que:

Representa generalizaciones, es decir, no es necesario representar cada situacin individual,


sino que las situaciones que comparten propiedades importantes se agrupan.

Debe ser entendido por las personas que lo provean.

Puede ser modificado para corregir errores y reflejar cambios en el mundo

Puede usarse en muchas situaciones aun sin ser totalmente exacto o completo

Puede usarse para superar su propio volumen, y disminuir el rango de posibilidades que
normalmente deben considerarse

Se pueden caracterizar las tcnicas de IA con independencia del problema a tratar.

Para solucionar problemas complicados, los programas que utilizan las tcnicas de IA presentan
numerosas ventajas con respecto a los que no lo hacen:

son menos frgiles, es decir, que no se despistan frente a una perturbacin pequea de la
entrada
el conocimiento del programa es comprendido fcilmente por la gente
usa generalizaciones
tiene facilidad de extensin
Como contraposicin, generalmente tienen ms complejidad que otras soluciones.

Se analizan brevemente a continuacin dos tipos de problemas bien diferenciados,


y dentro de cada uno se ejemplifica lo que se entiende por una tcnica de IA.

Ejemplo 1: tres en raya

A continuacin se plantean tres soluciones diferentes del problema de tres en raya analizando la
conveniencia de cada una. Para mejor detalle de las mismas consultar [Rich98]3.

Ejemplo de tres en raya ya acabado.4

El tres en raya, tambin conocido como juego del gato, tatet, triqui, tres en gallo, michi o la vieja, es un
juego de lpiz y papel entre dos jugadores: O y X, que marcan los espacios de un tablero de 33
alternadamente. Un jugador gana si consigue tener una lnea de tres de sus smbolos: la lnea puede ser
horizontal, vertical o diagonal.

Esta partida la gana el primer jugador, O:

3
[Rich98] Rich E., Knight K. Inteligencia Artificial. McGraw-Hill, ISBN: 84-481-1858-8, 1998

4
Fuente: www.wikipedia.org.

Solucin 1:

Una primera solucin directa a este juego podra ser la de almacenar en un vector las 19.693 (39)
posibilidades de un tablero de 3 x 3 con tres valores posibles en cada casilla (vaco-X-O), as como las
correspondientes jugadas sucesoras. Para realizar una jugada, bastara con acceder a la posicin del
tablero actual y la jugada sucesora correspondiente. Las desventajas de este eficiente programa son
bastante obvias: necesita gran cantidad de memoria; alguien debe realizar el pesado trabajo de
introducir todas las jugadas y sus sucesoras; y el juego no se puede ampliar, por ejemplo a tres
dimensiones.

Solucin 2:
El programa posee una estrategia para cada turno de jugador. Analiza el posible triunfo a partir de un
estado del tablero dado. Aunque es menos eficiente que la solucin anterior en trminos de tiempo,
tiene la ventaja que es ms eficiente en trminos de espacio. Su estrategia es ms fcil de comprender
y realizar cambios, aunque el programador debe comprender la totalidad de la estrategia de antemano.
Adems, no es posible generalizar parte del conocimiento del programa hacia un dominio distinto, como
tres en raya 3D.

Solucin 3:

Una estructura contiene el tablero actual, as como una lista de posiciones del tablero que podran ser el
prximo movimiento, y una estimacin de la probabilidad de que esa jugada lleve a la victoria. Para
decidir la siguiente jugada se tienen en cuenta las posiciones de tablero que resultan de cada
movimiento posible. Se decide la posicin que corresponde a la mejor jugada, considerando si la jugada
produce la victoria, y en caso contrario considerando todos los movimientos que el oponente puede
realizar asumiendo que ste elegir el peor para nosotros. El algoritmo inspecciona varias secuencias
de movimientos intentando maximizar la probabilidad de victoria. Necesita mucho ms tiempo que los
dems, ya que debe realizar una bsqueda en un rbol de posibilidades antes de realizar cada
movimiento. Sin embargo, es superior a las dems soluciones pues podra ser ampliado para manipular
juegos ms complicados. Adems, puede aumentarse su potencia usando conocimiento sobre el juego,
por ejemplo, en lugar de considerar todos los posibles movimientos considerar solo un subconjunto
siguiendo algn criterio razonable. Este programa es un ejemplo del uso de una tcnica de IA.

Ejemplo 2: respuestas a preguntas

Se quiere realizar un programa que a partir de un texto escrito en espaol pueda responder a preguntas
en espaol sobre este texto. En este caso, es ms difcil que en el ejemplo anterior determinar
formalmente y con precisin en qu consiste el problema y en qu consiste una solucin correcta para
l. Un ejemplo de programa de preguntas y respuestas en ingls es el programa POLITICS (Carbonell,
1980).

A continuacin se plantean tres soluciones diferentes analizando la conveniencia de cada una. Para
mejor detalle de las mismas consultar [Rich98]. 5

Solucin 1:

Se tienen conjunto de plantillas (templates) preguntas, por ejemplo "Que x y" asociada con patrones
(patterns) respuesta, por ejemplo "y x z". Responde a las preguntas usando el texto de entrada de forma
literal. Se hace coincidir fragmentos de texto de entrada con el patrn respuesta, y se obtiene la
respuesta, por ejemplo "z". Este algoritmo no puede contestar el tipo de preguntas que la gente puede
responder despus de una simple lectura del texto. La habilidad para responder depende de la forma
exacta de la pregunta, y de las variaciones contempladas en el diseo de plantillas y patrones. El
proceso de sustitucin de patrones usado es llamado pattern matching. Pese a que lo que se entiende
por IA no incluye programas como ste, sta tcnica es la usada en uno de los programas ms clebres
de IA, ELIZA.

Solucin 2:

Transforma el texto de entrada dndole una estructura interna que intenta capturar
el significado de las frases, y tambin transforma las preguntas de igual manera. Las respuestas se
encuentran emparejando unas con otras formas estructuradas. Este enfoque est ms basado en
conocimiento que el primero, y tambin es ms efectivo. Puede responder a la mayora de las preguntas
cuyas respuestas se encuentran en el texto, y es menos quebradizo con respecto a las formulaciones
exactas de preguntas y respuestas. Algunas preguntas necesitan conocimiento adicional sobre el
mundo con el que trate el texto, que esta solucin no posee.
Solucin 3:

Al igual que la solucin anterior se transforma el texto en forma estructurada, pero a diferencia del
anterior, se combina esta forma con otras formas estructuradas que describen conocimiento previo
sobre los objetos y situaciones que aparecen en el texto. Este programa es ms potente que los otros
dos, debido a que responde a preguntas usando esta estructura de conocimiento aumentada. Se utiliza
lo que se denomina tcnica de IA, pues est basado en el conocimiento y en uso computacional eficaz
de ese conocimiento.

Estos ejemplos ponen de manifiesto tres importantes tcnicas de IA:

Bsqueda: proporciona una forma de resolver problemas en los que no se dispone de un mtodo
directo.

Uso del conocimiento: proporciona una forma de resolver problemas complejos explotando las
estructuras existentes entre los objetos involucrados

Abstraccin: proporciona una forma de separar aspectos y variaciones importantes de aquellos otros
sin importancia, y que en caso contrario podran colapsar el proceso.

Leccin 3
Criterios de xito de la Inteligencia Artificial

Para determinar el xito de un programa de IA, se deben realizar las siguientes preguntas:

Est definida con claridad la tarea?


Existe un proceso instrumentado que efecta la tarea?
Existe un conjunto de restricciones identificables a partir de las cuales el procedimiento
implantado tiene poder?
Resuelve un problema real?
Crea una nueva oportunidad?

Test de Turing

En 1950, Alan Turing propuso el siguiente mtodo para determinar si una mquina es capaz de pensar.
Una persona es un entrevistador y se halla en una habitacin separada de otra persona y un compuador
a evaluar. El entrevistador hace preguntas a ambos de forma escrita. Si luego de un cierto nmero de
preguntas y respuestas, el interrogador no puede identificar quin es el computador y quin es la
persona, entonces podemos decir que el computador piensa.

Se puede calibrar el xito de la IA en dominios ms restringidos? Por ejemplo,

- el xito de un programa que juega al ajedrez se puede evaluar segn los jugadores que pueda
derrotar;
- el xito de otros programas puede medirse comparando el tiempo que tarda un computador en llevar a
cabo una tarea con el que tarda una persona en hacer lo mismo. Por ej. programas usados en empresas
informticas para configurar sistemas particulares a las necesidades del cliente;
- en tareas de cada da es ms difcil, por ej. parafrasear un artculo del peridico, la mejor forma de
evaluarlo es ver si el programa responde de la misma forma que hara una persona.

Cuando se quiere disear un programa de IA, se debe intentar especificar tan bien como sea posible el
criterio de xito para el funcionamiento del programa en su dominio particular.

Leccin 4
Resolucin de problemas de Inteligencia Artificial

Para construir un sistema que resuelva un sistema especfico, es necesario:

1- Definir el problema formalmente con precisin.


2- Analizar el problema.
3- Representar el conocimiento necesario para resolver el problema.
4- Elegir la mejor tcnica que resuelva el problema y aplicarla.

1. Definicin formal del problema

El primer paso para disear un programa que resuelva un problema es crear una descripcin formal y
manejable del propio problema. Sera adecuado contar con programas que produzcan descripciones
formales a partir de descripciones informales, proceso denominado operacionalizacin. Dado que por
ahora no se conoce la forma de construir estos programas este proceso debe hacerse manualmente.

Hay problemas que por ser artificiales y estructurados son fciles de especificar (por ej. el ajedrez, el
problema de las jarras de agua, etc. ). Otros problemas naturales, como por ej. la comprensin del
lenguaje, no son tan sencillos de especificar.

Para producir una especificacin formal de un problema se deben definir:

espacio de estados vlidos.


estado inicial del problema.
estado objetivo o final.
reglas que se pueden aplicar para pasar de un estado a otro.

Un estado es la representacin de un problema en un instante dado. Para definir el espacio de estados


no es necesario hacer una enumeracin exhaustiva de todos los estados vlidos, sino que es posible
definirlo de manera ms general.

El estado inicial consiste en uno o varios estados en los que puede comenzar el problema. El estado
objetivo consiste en uno o varios estados finales que se consideran solucin aceptable.

Las reglas describen las acciones u operadores que posibilitan un pasaje de estados. Una regla tiene
una parte izquierda y una parte derecha. La parte izquierda determina la aplicabilidad de la regla, es
decir, describe los estados a los que puede aplicarse la regla. La parte derecha describe la operacin
que se lleva a cabo si se aplica la regla, es decir, como obtener el estado sucesor. Por ejemplo, en el
problema de jugar al ajedrez:

el espacio de estados son la totalidad de tableros que se puede generar en un juego de ajedrez;
el estado inicial es el tablero de 8 x 8 donde cada celda contiene un smbolo de acuerdo a las
piezas situadas;
el objetivo o estado final se define como cualquier posicin de tablero en la que el contrario no
puede realizar ningn movimiento legal y su rey est amenazado;
las reglas son los movimientos legales, que pueden describirse mediante una parte patrn para
ser contrastado con la posicin actual de tablero y otra parte que describe el cambio que debe
producirse en el tablero.

Dado que escribir exhaustivamente todas las reglas es imposible prcticamente, (en el ejemplo, escribir
todas las posiciones de tablero), las reglas deben escribirse de la manera ms general posible.

La representacin como espacio de estados forma parte de la mayora de los mtodos de IA. Su
estructura se corresponde con la resolucin de problemas porque:

permite definir formalmente el problema, mediante la necesidad de convertir una situacin dada
en una situacin deseada mediante un conjunto de operaciones permitidas.

permite definir el proceso de resolucin de un problema como una combinacin de tcnicas


conocidas y bsqueda (la tcnica general de exploracin del espacio intenta encontrar alguna
ruta desde el estado actual hasta un estado objetivo).

Ejercicio 1: Problema de las jarras de agua

Se tienen dos jarras de agua, una de 4l y otra de 3l sin escala de medicin. Se desea tener 2l de agua
en la jarra de 4l. Las siguientes operaciones son vlidas: llenar las jarras, tirar agua de las jarras, pasar
agua de una jarra a otra.

Solucin:

El espacio de estados se define como:

{ (X,Y)/ X son los litros en la jarra de 4l con 0<=X<=4 AND Y son los litros de la jarra de 3l con 0<=Y<=3
}

El estado inicial es (0,0)

El estado final es (2,0). El estado final podra ser (2,N) en caso de que no importen los litros de la
segunda jarra.

Las reglas que se pueden aplicar son:

1. Llenar la jarra de 4l: Si (X,Y) AND X<4 => (4,Y)


2. Llenar la jarra de 3l: Si (X,Y) AND Y<3 => (X,3)
3. Vaciar la jarra de 4l: Si (X,Y) AND X>0 => (0, Y)
4. Vaciar la jarra de 3l: Si (X,Y) AND Y>0 => (X, 0)
5. Pasar agua de la jarra de 4l a la jarra de 3l hasta llenarla: Si (X,Y) AND X>0 AND X+Y>=3 =>
(X-(3-Y),3)
6. Pasar agua de la jarra de 3l a la jarra de 4l hasta llenarla: Si (X,Y) AND Y>0 AND X+Y>=4 =>
(4, Y-(4-X))
7. Pasar toda el agua de la jarra de 4l a la jarra de 3l: Si (X,Y) AND X>0 AND X+Y<3 => (0,X+Y)
8. Pasar toda el agua de la jarra de 3l a la jarra de 4l: Si (X,Y) AND Y>0 AND X+Y<4 => (X+Y,0)

El programa debera encontrar un pasaje de estados para ir del estado (0,0) al estado (2,0). Puede
existir ms de un pasaje de estados hacia la solucin, por ejemplo:
(0,0) => (0,3) => (3,0) => (3,3) => (4,2) => (0,2) => (2,0)

en la cual, a partir del estado inicial, se aplicaron las reglas 2, 8, 2, 6, 3 y 8, hasta conseguir el estado
objetivo.

Otro pasaje de estados hacia la solucin es la siguiente:

(0,0) => (4,0) => (1,3) => (1,0) => (0,1) => (4,1) => (2,3) => (2,0)

en la cual se aplicaron las reglas 1, 5, 4, 7, 1, 5 y 4

Con respecto a las reglas se puede concluir que:

Las condiciones que se establecen en la parte izquierda a veces no son altamente necesarias pero
restringen la aplicacin de la regla a estados ms adecuados.

Esto incrementa la eficiencia del programa que utiliza las reglas. En el ejemplo anterior, la regla

1. Llenar la jarra de 4l: Si (X,Y) AND X<4 => (4,Y)

Contiene la condicin (X<4), especificando que la jarra no se encuentra llena. Si esta condicin no se
incluye, se puede aplicar la regla an cuando la jarra est llena. Dado que en este caso el estado del
problema no cambia la aplicacin de la regla se considera intil

Las reglas no slo deben describir el problema sino tambin algn tipo de conocimiento sobre su
solucin. Si en el ejemplo anterior se considera la siguiente nueva regla:

Vaciar "un poco" la jarra de 4l: Si (X,Y) AND X>0 => (X-Q, Y) es decir, tirar agua sin cuantificar,
intuitivamente se concluye que la aplicacin de esta regla nunca nos acercar a la solucin del
problema.

A veces, cuando se alcanzan algunos estados resulta obvio cmo se debe continuar hacia la solucin.
Es posible agregar reglas de propsito especial que capturen el conocimiento sobre casos especiales
que conducen a la resolucin del problema. En el ejemplo anterior, se pueden agregar las siguientes
reglas de propsito especial:

Si (X,2) => (2,0)

Si (2,Y) AND Y>0 => (2,0)

Estas reglas no aaden ms potencia al sistema ya que las operaciones que describen las proporcionan
otras reglas ms generales. En el ejemplo, la primera regla agregada es equivalente a la aplicacin de
las reglas generales 3 y 8; y la segunda regla agregada es equivalente a la aplicacin de la regla
general 4. Dependiendo de la estrategia de control que se utilice para seleccionar reglas durante la
resolucin del problema se puede mejorar el rendimiento si se les da preferencia a las reglas de casos
especiales.

Ejercicio 2: Problema de los Canbales y Monjes

Se tienen 3 monjes y 3 canbales en el margen Oeste de un ro. Existe una canoa con capacidad para
dos personas como mximo. Se desea que los seis pasen al margen Este del ro, pero hay que
considerar que no debe haber ms canbales que monjes en ningn sitio porque entonces los canbales
se comen a los monjes. Adems, la canoa siempre debe ser conducida por alguien.

Animacin en flash de los problemas:

Solucin:

El espacio de estados est definido por:

{(Mo, Co, Me, Ce, C) / Mo es el nmero de monjes en el margen oeste con


0<=Mo<=3 AND Co es el nmero de canbales en el margen oeste con 0<=Co<=3
AND (Co<=Mo OR Mo=0) AND Me es el nmero de monjes en el margen este con
0<=Me<=3 AND Ce es el nmero de canbales en el margen este con 0<=Ce<=3
AND (Ce<=Me OR Me=0) AND Co+Ce=3 AND Mo+Me=3 AND C = [E|O] es el margen dnde est la
canoa}

El estado inicial es (3,3,0,0,O)

El estado final es (0,0,3,3,E)

Las reglas que se pueden aplicar son:

1. Viajan un monje y un canbal de O a E:


Si (Mo, Co, Me, Ce, O) AND Mo>=1 AND Co>=1 AND Ce+1<=Me+1 => (Mo-1, Co-1, Me+1, Ce+1, E)

2. Viajan un monje y un canbal de E a O:


Si (Mo, Co, Me, Ce, E) AND Me>=1 AND Ce>=1 AND Co+1<=Mo+1=> (Mo+1, Co+1, Me-1, Ce-1,O)

3. Viajan dos monjes de O a E:


Si (Mo, Co, Me, Ce, O) AND Mo>=2 AND (Mo-2=0 OR Co<=Mo-2) AND Ce<=Me+2=> (Mo-2, Co, Me+2,
Ce, E)

4. Viajan dos monjes de E a O:


Si (Mo, Co, Me, Ce, E) AND Me>=2 AND (Me-2=0 OR Ce<=Me-2) AND Co<=Mo+2 => (Mo+2, Co, Me-
2, Ce, O)

5. Viajan dos canbales de O a E:


Si (Mo, Co, Me, Ce, O) AND Co>=2 AND (Me=0 OR Ce+2<=Me) => (Mo, Co-2, Me, Ce+2, E)

6. Viajan dos canbales de E a O:


Si (Mo, Co, Me, Ce, E) AND Ce>=2 AND (Mo=0 OR Co+2<=Mo) => (Mo, Co+2, Me, Ce-2, O)

7. Viaja un monje de O a E:
Si (Mo, Co, Me, Ce, O) AND Mo>=1 AND (Mo-1=0 OR Co<=Mo-1) AND Ce<= Me+1 => (Mo-1, Co,
Me+1, Ce, E)

8. Viaja un monje de E a O:
Si (Mo, Co, Me, Ce, E) AND Me>=1 AND (Me-1=0 OR Ce<=Me-1) AND Co<=Mo+1 => (Mo+1, Co, Me-
1, Ce,O)
9. Viaja un canbal de O a E:
Si (Mo, Co, Me, Ce, O) AND Co>=1 AND (Me=0 OR Ce+1<=Me) => (Mo, Co-1, Me, Ce+1, E)

10. Viaja un canbal de E a O:


Si (Mo, Co, Me, Ce, O) AND Ce>=1 AND (Mo=0 OR Co+1<=Mo) => (Mo, Co+1, Me, Ce-1, E)

Nota: En referencia a la regla 3 la condicin Ce<=Me+2 puede intuirse como redundante. Esta condicin
no se cumple slo en el caso Ce=3 y Me=0. Pese a

que es un estado que pertenece al espacio de estados vlidos, podemos intuir que nunca se llega a
tener 3 canbales y ningn monje del lado Este y la barca del lado Oeste. De todas maneras slo se
puede eliminar si podemos demostrar formalmente la imposibilidad de esta situacin.

Un pasaje de estados para ir de (3,3,0,0,O) a (0,0,3,3,E) es el siguiente:

(3,3,0,0,O) => (3,1,0,2,E) => (3,2,0,1,O) => (3,0,0,3,E) => (3,1,0,2,O) =>
(1,1,2,2,E) => (2,2,1,1,O) => (0,2,3,1,E) => (0,3,3,0,O) => (0,1,3,2,E) =>
(0,2,3,1,O) =>(0,0,3,3,E)

2. Estrategia de control: Mtodos de bsqueda (se ampla 2 Unidad)

El problema puede resolverse con el uso de reglas en combinacin con una estrategia de control para
trasladarse a travs del espacio de estados hasta encontrar un camino desde el estado inicial hasta el
estado final. Se elige una regla entre aquellas cuya parte izquierda concuerda con el estado actual. Se
aplica la regla elegida realizando el cambio de estado tal como se describe en la parte derecha de la
regla. Si el nuevo estado es estado objetivo o final se ha encontrado la solucin. En caso contrario se
contina con la aplicacin de reglas al nuevo estado.

Una estrategia de control especifica el orden en el que se deben aplicar las reglas, as como tambin
la forma de resolver conflictos cuando es posible aplicar ms de una regla. Para que una estrategia de
control sea vlida debe cumplir con dos requisitos:

Causar cambios:

las estrategias de control que no causan cambios de estado nunca alcanzan la solucin. Un ejemplo de
estrategia de control que no causa cambios es seleccionar siempre la primera regla aplicable de la lista
de reglas definidas. En el ejemplo de las jarras de agua, se continuara indefinidamente aplicando las
reglas 1 y 3 sin posibilidad de arribar a la solucin.

Ser sistemtica:

las estrategias de control que no son sistemticas pueden utilizar secuencias de operaciones no
apropiadas varias veces hasta alcanzar la solucin. Un ejemplo de estrategia de control no sistemtica
es seleccionar la regla a aplicar al azar. Esta estrategia puede encontrar la solucin eventualmente, pero
luego de haber realizado varios pasos innecesarios e incluso haber vuelto varias veces al mismo estado.

En caso de no contar con una aproximacin directa al problema, el proceso de bsqueda resulta
fundamental en la resolucin del mismo. Los algoritmos de

bsqueda detallados a continuacin son ejemplos de estrategias de control sistemticas. Todos se


basan en considerar un rbol de estados cuya raz es el estado inicial, y en cada nivel se hallan los
estados sucesores correspondientes.
Bsqueda Breadth-First Search (primero en ancho)

Este algoritmo de bsqueda visita cada nodo del rbol por niveles, es decir, visita todos los nodos de un
nivel antes de visitar los del siguiente. A continuacin se detalla un pseudo-cdigo de este algoritmo:

Lista_nodos = [estado_inicial];

Mientras Not Vacia(lista_nodos)

estado_actual = lista_nodos.primero;

Si EstadoFinal(estado_actual) entonces

Terminar;

Sino

lista_reglas = ReglasAplicables (estado_actual);

Mientras NOT Vacia(lista_reglas)

estado_sucesor = AplicarRegla (lista_reglas);

lista_nodos = lista_nodos + [estado_sucesor];

Fin Mientras;

Fin Sino;

Fin Mientras;

Este algoritmo bsico debera modificarse para detectar el caso en que se vuelva a alcanzar un estado
que ya ha sido visitado con anterioridad. En este caso, debera realizarse una "poda" de la rama del
rbol, ya que en caso contrario se volvera a generar un subrbol ya generado.

Con la bsqueda a lo ancho se asegura que una vez alcanzada una solucin no existe otra ruta hacia la
solucin que tenga menor cantidad de pasos. Una desventaja de este algoritmo es que para alcanzar
una solucin de n pasos, debe haber explorado todo el espacio de estados hasta ese nivel.

Ejercicio:

Realizar el rbol de bsqueda a lo ancho para encontrar la solucin del problema de las jarras de agua.
Se le recomienda al lector realizar este ejercicio como prctica.

Bsqueda Depth-First Search (primero en profundidad)

Este algoritmo de bsqueda contina por una rama del rbol hasta encontrar la solucin o decidir
terminar la bsqueda por esa direccin (por llegar al estado final, por tener un largo de ruta que supera
una cota mxima determina, por haber llegado a un estado ya visitado, etc.). Al fracasar una ruta, se
realiza un

backtracking o vuelta atrs, continuando la exploracin en el paso inmediatamente anterior. A


continuacin se detalla un pseudo-cdigo de este algoritmo recursivo que inicialmente es llamado con el
estado_inicial:

Funcin Buscar (estado_actual) devuelve Boolean

Comienzo

Si EstadoFinal(estado_actual) entonces
Devolver TRUE;
Sino
exito = FALSE;
lista_reglas = ReglasAplicables (estado_actual);
Mientras NOT exito AND NOT Vacia(lista_reglas)
estado_sucesor = AplicarRegla (lista_reglas);
exito = Buscar (estado_sucesor);
Fin Mientras;
Devolver exito;
Fin Sino;

Fin Buscar;

Este algoritmo bsico debera modificarse para terminar la bsqueda en una rama que se alcanza un
estado que ya visitado.

Con la bsqueda en profundidad no es necesario tener almacenado todo el espacio de estados, sino
slo el camino que se est explorando. Puede encontrar la solucin sin tener que explorar gran parte del
espacio de estados. Como desventajas de este algoritmo se seala que puede seguir una ruta
infructuosa durante muchos pasos, y adems la primera solucin que encuentra puede distar mucho de
ser la solucin de mnima cantidad de pasos.

Bsqueda Heurstica

Existen algunos problemas en los que resulta imposible explorar el rbol del espacio de estados pues
resulta en una explosin combinatoria. Por ej. en el problema del viajante, se debe encontrar la ruta
mnima entre N ciudades a visitar.

Si se aplica cualquiera de los dos algoritmos de bsqueda anteriores, nos encontramos ante un costo
computacional no polinomial O(N!).

Una heurstica es una tcnica que aumenta la eficiencia de un proceso de bsqueda. El objetivo es guiar
al proceso de bsqueda en la direccin ms provechosa sugiriendo el camino a seguir cuando hay ms
de una opcin.

Las heursticas pueden ser:

Generales: son adecuadas para una amplia variedad de dominios. Por ej. la heurstica del vecino ms
prximo (nearest neighbor) se aplica a muchos problemas combinatorios. En el ejemplo del problema
del viajante, se comienza por una ciudad arbitraria continuando en cada paso por la ciudad ms cercana
no visitada. Esto resulta en una reduccin del costo computacional a O(N2).

De propsito especial: explotan el conocimiento especfico de un dominio para resolver problemas


particulares.

Las heursticas pueden sacrificar la completitud, es decir, pueden pasar por alto una buena solucin. Sin
embargo, existen varios argumentos a favor de usarlas:

Sin el uso de heursticas se puede tener una explosin combinatoria.

En muchos casos no se necesita la solucin ptima sino una buena aproximacin. Segn Simon (1981),
las personas resuelven problemas "satisfaciendo" y no "optimizando".

Las aproximaciones que se logran con heursticas pueden ser malas para los peores casos de un
problema, pero stos raramente sedan en el mundo real.

El esfuerzo de intentar comprender por qu funciona o no una heurstica sirve para profundizar en la
comprensin del problema.

Las heursticas se pueden incorporar a un proceso de bsqueda basado en reglas de dos maneras:

Dentro de las mismas reglas. Por ej. en el ajedrez, las reglas pueden describir, adems de los
movimientos legales, tambin las buenas jugadas.

Como una funcin que evala estados determinando su grado de


"deseable". Esta funcin evala aspectos del problema dando pesos a aspectos individuales, de manera
que el valor que devuelve es una estimacin de que el nodo pertenece a la ruta que conduce a la mejor
solucin. Por ej. en el ajedrez se puede tener una funcin a maximizar la cual devuelve el nmero de
piezas de ventaja; en el problema del viajante
se puede tener una funcin a minimizar la cual devuelve la suma de distancias recorridas; en el tres en
raya se puede tener una funcin que compute un punto por cada ficha en cada fila, columna o diagonal
que se pueda ganar.

En conclusin, las heursticas representan el conocimiento general y especfico del mundo, que hace
que sea abordable solucionar problemas complejos.

Leccin 5
3. Anlisis del problema

Luego de definir el problema formalmente, el segundo paso en la resolucin del problema es el anlisis
del mismo. A fin de poder elegir el mtodo ms apropiado para resolver un problema particular, es
necesario analizar distintas cuestiones

que afectan a al definicin del mismo y a las caractersticas de la solucin deseada. Existen varias
preguntas a responder acerca del problema:

1. Puede descomponerse el problema en subproblemas ms pequeos?


2. Pueden deshacerse pasos inadecuados hacia la solucin?
3. Es predecible el universo del problema?
4. Una solucin es buena de manera absoluta o relativa?
5. La solucin deseada es un estado o la ruta hacia un estado?
6. El conocimiento se necesita para resolver el problema o para restringir la bsqueda de la
solucin?
7. El programa que soluciona el problema busca la solucin solo o necesita interactuar con una
persona?

1. Puede descomponerse el problema en subproblemas ms pequeos?

Algunos problemas pueden descomponerse en subproblemas independientes, de manera que encontrar


una solucin global es la composicin de soluciones particulares. Por ej. en la resolucin de integrales,
una integral puede descomponerse por partes, y resolver las partes simples directamente o
descomponerlas recursivamente.

Por otra partes, existen otros problemas que no pueden descomponerse y componer la solucin a partir
de las soluciones parciales de sus partes. Por el contrario, una solucin necesita considerar globalmente
el problema. Por ej. el problema del mundo de los bloques.

2. Pueden deshacerse pasos inadecuados hacia la solucin?

Algunos problemas permiten deshacer uno o varios pasos hacia una solucin una vez realizados. En
este aspecto, existen tres categoras en las que puede dividirse un problema:

Recuperables:

En un punto dado es posible deshacer todos los pasos inadecuados hacia la solucin. Por ej. en el
juego 8-puzzle. La estructura de control se implementa con una pila push-down en la que se almacenan
las decisiones para poder volver atrs.

No recuperables:

En un punto dado no es posible deshacer ningn paso realizado. Por ej. en una partida de ajedrez no se
puede volver atrs una vez movidas las piezas. En estos problemas el sistema debe esforzarse en la
toma de decisiones pues stas son irrevocables. Algunos usan una planificacin en la que se analiza
por adelantado una secuencia de pasos antes de realizar el primer paso para descubrir a donde
conduce.

Ignorables:

En un punto dado es posible ignorar los pasos realizados hasta el momento y comenzar de nuevo con
una nueva solucin. Por ej. un demostrador de teoremas puede abandonar una demostracin basada en
un lema dado y comenzar nuevamente. Estos problemas se resuelven con estrategias de control
sencillas que nunca vuelven hacia atrs.

3. Es predecible el universo del problema?

Los problemas pueden se de:

Consecuencia cierta:
Es posible planificar una secuencia de movimientos estando seguros del resultado
a obtener. Se puede realizar una planificacin para generar operadores que garanticen llegar a la
solucin.

Consecuencia incierta:

No es posible planificar con certeza pues no se sabe que ocurrir luego del siguiente movimiento. Sin
embargo, se puede realizar una planificacin para generar operadores que tengan una buena
probabilidad de llegar a la solucin.
Los problemas ms difciles de resolver son los no recuperables de consecuencia incierta. Por ej. el
control del brazo de un robot: es de consecuencia incierta pues alguien puede interponer un objeto en la
ruta del brazo, se puede atascar, etc.

4. Una solucin es buena de manera absoluta o relativa?

La solucin de un problema puede consistir en encontrar:

Algn camino:

Slo importa encontrar una solucin sin importar si existen otros caminos que conducen a la solucin.
Generalmente se resuelven con heursticas. Por ej. programa de respuestas a preguntas.

El mejor camino:

Importa encontrar la ruta ms corta hacia la solucin. Son problemas ms complicados de computar.
Algunos requieren una bsqueda ms exhaustiva que usando heursticas. Por ej. en el problema del
viajante importa encontrar la ruta ms corta entre las ciudades a visitar.

5. La solucin deseada es un estado o la ruta hacia un estado?

La solucin de un problema puede consistir en encontrar:

un estado final:

No es necesario el registro del proceso seguido, slo importa arribar a la solucin final. Por ej.
Interpretar texto.

una ruta hacia un estado final:

Se necesita dar el camino seguido desde el estado inicial al estado final. Por ej. Problema de las jarras
de agua.

6. El conocimiento se necesita para resolver el problema o para restringir la bsqueda de la


solucin?

El conocimiento puede emplearse para:


Reconocer la solucin:

Se necesita gran cantidad de conocimiento acerca del problema para poder encontrar una solucin. Por
ej. comprensin de texto.

Acotar la bsqueda:

La solucin bsica puede encontrarse con poco conocimiento, pero para restringir el rbol de bsqueda
y encontrar la solucin de manera ms eficiente es necesario contar ms conocimiento. Por ej. en el
ajedrez se necesita bsicamente poco conocimiento para conocer los movimientos legales y un
mecanismo sencillo de bsqueda. Pero dado que para aumentar la eficiencia de la bsqueda sta
debe restringirse, se necesita conocimiento de heursticas de buenas estrategias y tcticas para jugar.

7. El programa que soluciona el problema busca la solucin solo o necesita interactuar con una
persona?

Con respecto a la relacin programa-usuario, existen dos tipos de programas que solucionan el
problema:

Solitarios:

Reciben como entrada el problema y dan como salida la solucin. No importa el razonamiento que haya
seguido la mquina para encontrar la solucin. Por ej. problema de las jarras de agua.

Conversacionales:

Existe una comunicacin hombre-mquina de manera que el usuario puede ayudar a la mquina o la
mquina puede informar al usuario durante la bsqueda de la solucin. Para que esta comunicacin sea
posible debe existir una correspondencia entre el razonamiento seguido por la mquina y la forma de
razonamiento humano. Por ej. en un sistema experto de diagnstico mdico, el usuario no aceptara el
veredicto de una mquina si no puede comprender el razonamiento que la llev a l.

Ejercicio: Torres de Hanoi

VER: http://www.mena.com.mx/gonzalo/juegos/hanoi/index.html

Definir formalmente y analizar los 7 puntos anteriores en el siguiente problema:

Se hallan N discos de distinto tamao apilados sobre una base 1 de manera que cada disco se
encuentra sobre uno de mayor radio. Existen otras dos bases vacas 2 y 3. El objetivo es llevar todos los
discos de la base 1 hasta la base 3, para lo cual puede usarse la base 2. Considerar que se puede
mover slo un disco a la vez, y cada disco puede descansar solamente en las bases y no en el suelo.
Recordar que los discos deben situarse siempre sobre uno de mayor radio.
Fuente: ://www.mena.com.mx/gonzalo/juegos/hanoi/index.html Se requieren 15 movimientos

Solucin:

En la siguiente animacin puede apreciarse cmo resolver las torres para un caso sencillo:
Capitulo 2

Agentes inteligentes

Leccin 6
Una de las ramas de la inteligencia artificial que empieza a tener ms auge hoy en da, es la de los
Agentes Inteligentes. A pesar de que sta tuvo su origen a principios de los 80s, es apenas hasta ahora
cuando se empieza a ver su aplicacin debido al gran desarrollo que han tenidos las redes.

Los Agentes Inteligentes6 se caracterizan por desenvolverse en un entorno, ejecutar acciones sobre el,
basndose en percepciones para lograr metas deseadas por el usuario.

INTRODUCCION

Hoy en da lo que podemos encontrar en Internet son servicios sofisticados y herramientas para acceder
a ellos, como servidores de informacin o navegadores. Pero lo que los usuarios desean realmente son
soluciones concretas: encontrar en la red el hotel ms cmodo al mejor precio o la mejor inversin en
bolsa.

Para lograr estos los Agentes Inteligentes dialogan con el usuario de forma sencilla y natural definiendo
as lo que este realmente desea, despus de haber definido el problema, el agente empieza a
solucionarlo consultando sus fuentes de informacin o dialogando con otros agentes, y le va informando
de manera evolutiva las soluciones logradas al usuario. Si ste no queda satisfecho, contina la
bsqueda hasta agotar las fuentes o hasta que el usuario quede satisfecho con la solucin.

La inteligencia del agente es demostrada a travs de su funcionalidad. El usuario se dar cuenta de esta
a medida que el agente le resuelva las tareas que le plantee, de manera eficiente; su funcionalidad
mejorar a medida que resuelve mayor nmero de casos. Esta capacidad de adaptacin permite al
agente conocer mejor las preferencias de los usuarios y atenderlos de forma personalizada.

Los Agentes Inteligentes se caracterizan por actuar en un ambiente en particular y ser capaces de
realizar ciertas acciones, basados en su entorno, hasta realizar la tarea que les fue encomendada, esas
tareas van desde recomendaciones para el usuario hasta solucin de problemas.

A pesar de que los Agentes Inteligente son una rama de la Inteligencia Artificial relativamente muy
nueva, se tienen grandes expectativas sobre estos ya que tiene enormes perspectivas de aplicacin

6
AGENTES INTELIGENTES, Luz Adriana Roldan Pardo. Estudiante de Ingeniera de sistemas
Cod.200010075010 lroldan1@eafit.edu.co, Universidad EAFIT, Abril de 2004

QU ES UN AGENTE?
Existen muchas definiciones de Agentes, pero una de las mas simples es la de Franklin and Graesser
"Un agente es un sistema situado en y parte de un entorno que siente ese entorno y acta sobre l, a
travs del tiempo, persiguiendo sus propios objetivos de forma que afecte lo que siente en el futuro."

Basndonos en algunos ejemplos que mostraremos posteriormente, el entorno en el cual esta situado el
agente, es Internet, la percepcin se puede ver cuando acta sobre el entorno a medida que va
recibiendo e instruyndose de las peticiones que hace el usuario sobre el y las acciones se clarifican
cuando el agente nos muestra informacin que el mismo ha buscado en Internet.

Como podemos ver en la imagen 1 el agente percibe su ambiente mediante sensores y acta en l
mediante actuadores, para entender esto de una mejor manera, observemos un agente humano, este
posee ojos y odos los cuales le sirven como sensores, as como piernas, manos, boca y otros rganos
que le sirven como actuadores.

Imagen 1 V. Julin, V. Botti Dpto. sistemas Informticos y Computacin

Universidad Politcnica de Valencia vbotti,vinglada@dsic.upv.es


http://agamenon.uniandes.edu.co/yubarta/agentes/agentes3.htm

Leccin 7
AGENTE INTELIGENTE7

Imaginmonos al llegar por la maana al trabajo, sentarse al teclado del computador e ingresar a
nuestra cuenta de correo electrnico, muchas personas se ven inundadas por decenas, incluso cientos
de mensajes de correo electrnico. Algunos de esos mensajes tienen algo interesante: se refieren a una
pregunta que alguien haba hecho anteriormente, contienen informacin que puede conducir a una
venta, o son simplemente un mensaje de un amigo hacindonos una invitacin. Otros, solo, contienen
correo basura. La cuenta de correo, solo nos proporciona informacin mnima sobre el contenido del
mensaje: el nombre del autor, su direccin de correo, a veces una lnea de Subject o tema que tiene que
ver con el contenido, a veces no.

Imaginemos, por el contrario: al sentarnos frente al computador y encontrar una ventana que se abre en
pantalla y nos muestra dos o tres mensajes de correo, clasificados como importantes o urgentes.
Tambin nos da la opcin de leer los menos urgentes, y muestra claramente un cubo de basura al cual
han sido enviados otros mensajes. Al da siguiente, los mensajes similares a los "menos urgentes"
ledos anteriormente son considerados ms importantes, y colocados ms arriba en la lista de lectura.
Adems, uno de los mensajes de la lista de correo se considera importante, y se coloca en la lista de
"importantes", y nos avisa de que el peridico al cual estamos suscritos en lnea contiene una noticia
"interesante". Aqu se puede ver la existencia de un agente inteligente.

Otros ejemplos en los cuales se puede ver la aplicacin de Agentes Inteligentes: estos pueden organizar
agendas de visitas, citas, fechas alternativas, tareas pendientes, etc. En las universidades se han
desarrollado agentes que usan el correo electrnico para resolver tareas, como: planificacin de clases,
citas de los alumnos, agenda, etc. El "agente" recoge en el computador la peticin de entrevista de un
alumno, acepta y anota la cita o, si el profesor est ocupado, propone una nueva y negocia la fecha con
el estudiante.

En los negocios, se han comenzado a desarrollar asistentes personales para realizar inversiones, para
proporcionar informacin especializada sobre determinados temas (econmicos, jurdicos, polticos, de
ocio etc.) El comercio electrnico y la publicidad son otros campos de aplicacin, as como el
seguimiento de las incidencias de los clientes o la realizacin de posibles ofertas, en el caso de que
decidan utilizar los servicios de la competencia.

Un Agente Inteligente, al igual que un sistema operativo no se puede llamar un programa.

Una de las caractersticas que distingue a los Agentes inteligentes de los dems programas es su
autonoma, y al ser autnomos son proactivos, esto quiere decir, que no slo actan cuando responden
a una accin del usuario, sino quetambin actan siguiendo sus propios objetivos; y tambin son
persistentes "que no se pueden "apagar"; incluso aunque el usuario no est interaccionando con ellos";
los agentes siguen funcionando, recolectando informacin, aprendiendo y comunicndose con otros
agentes.

7
Agentes Autnomos Inteligentes J.J. Merelo http://www.redcientifica.com/doc/doc199903310001.html

El afectar lo que se perciba en el futuro implica inteligencia, al menos en el sentido que se aprenda de
los fallos para no volver a cometerlos en el futuro, lo cual implica adaptatividad. El aprendizaje
normalmente se realizar a travs de la interaccin con un usuario. Y adems, la percepcin y accin
implican comunicacin, que se puede realizar con programas no-agentes o con otros agentes, lo cual
puede dar lugar a sociedades de agentes.

Los agentes inteligentes han tenido tres generaciones:

Primera generacin: Estos agentes ya existen, y bsicamente se basan en hacer comparaciones de


precios cuando se desea realizar una compra.

Segunda Generacin: Estos agentes tambin se pueden ver hoy en da, a diferencia de la primera
generacin, estos agentes aparte de comparar el precio tambin comparan el producto como tal.

Tercera Generacin: Este tipo de agentes aun no existe, pero lo que se pretende es que hagan todo el
proceso de la compra, para el usuario.

Un agente tiene un conjunto de propiedades las cuales los caracterizan y diferencian de los dems
programas, aunque, un agente puede poseer solo algunas de estas propiedades:

PROPIEDADES DE LOS AGENTES INTELIGENTES

Continuidad Temporal: El agente debe estar ejecutndose constantemente y desarrollando sus


funciones, no se detiene as el usuario no este interactuando con el.
Personalidad: Tiene una personalidad creble, bien definida, que facilita la interaccin con
usuarios humanos.
Autonoma: Si el agente se encuentra en un entorno cambiante es capaz de adaptarse y tomar
decisiones dependiendo de su experiencia.
Sociabilidad: El agente interacta con otros agentes e incluso con otras entidades.
Racionalidad: el agente siempre realiza "lo correcto" a partir de los datos que percibe del
entorno.
Adaptatividad: Se adapta fcilmente a las indicaciones de los usuarios y a los cambios en el
entorno basndose en su experiencia.
Movilidad: capacidad de un agente de trasladarse a travs de una red telemtica.

CLASIFICACION DE LOS AGENTES INTELIGENTES

Los agentes se clasifican segn el entorno en el cual se encuentren:

Agentes De Reflejo Simple: Son agentes que funcionan segn un conjunto de reglas condicin-accin.
El agente capta el estado actual del entorno en el cual se encuentra por medio de los censores, luego
busca entre las reglas cual coincide con la percepcin para luego ejecutar la accin conveniente. Este
agente funciona correctamente solo si se toma la decisin adecuada basndose en la percepcin de
ambiente en un momento dado.

Agentes Informados De Lo Que Pasa: Es un agente capas de ejecutar acciones basndose en


percepciones y acciones ejecutadas anteriormente analizando el entorno no solo en el momento actual,
tambin en momentos anteriores.

Agentes Basados En Metas: El agente debe saber las metas que se desean alcanzar, no es suficiente
solo con saber el estado actual del entorno en el cual se encuentra. El agente deber ser capaz de
analizar la situacin actual del entorno con las posibles acciones que se podran ejecutar y de esta
manera seleccionar la accin que mas le convenga para alcanzar las metas de una manera mas
sencilla.

Agentes De Interfaz: Se caracteriza por su capacidad de hacer comprensible las interfaces. Tambin
denominados asistentes personales, tiene como objetivo simplificar las tareas rutinarias que realiza un
usuario, por ejemplo, detectar que una noticia pueda ser importante para un usuario y comunicrselo.

Agentes Mviles: Esto quiere decir que el agente puede transitar entre varias maquinas para utilizar
recursos de los cuales no dispone en su propia maquina o simplemente para evitar una sobre carga de
comunicacin. En este tipo es principal problema es la seguridad.

Agentes De Informacin: Su objetivo es recolectar informacin a travs de la red


, indexarla y ofrecrsela al usuario cuando realiza una consulta. Estos agentes han tenido gran acogida
debido ha las grandes cantidades de informacin que circulan hoy por hoy en la red.

Agentes Consejeros: Este tipo de agente da consejos al usuario referentes a una herramienta, o un
sistema de diagnostico o ayuda.

Agentes De Navegacin: Estos agentes son utilizados para navegar en la red, su funcin principal es
recordar sitios y direcciones de inters para el usuario.

Agentes De Monitoreo: Estos agentes proporcionan informacin de manera eficaz y oportuna para el
usuario, en el momento que ocurre un evento.
Agentes De Recomendacin: Este agente posee una base de datos con informacin acerca de un
tpico de inters para un grupo, al hacer las recomendaciones se basan en analogas con otros usuarios
de perfil similar.

ESTRUCTURA DE LOS AGENTES INTELIGENTES


La estructura tradicional de los agentes consiste de un Programa de Agente que se ejecuta sobre una
Arquitectura, obedeciendo a la siguiente ecuacin:
Agente = Programa de Agente + Arquitectura

El Programa de Agente implanta una funcin que mapea las percepciones del agente en un conjunto de
acciones. La Arquitectura utilizada por el Programa de Agente le permitir ejecutarse. sta puede variar
desde un computador o algn otro hardware especfico para el procesamiento de percepciones, como
por ejemplo una cmara de vdeo. Para disear y desarrollar un programa de agente es necesario
especificar previamente los elementos constituyentes del mismo, tales como, las percepciones que
capturaran los sensores del agente as como las acciones con las cuales responder a travs de los
efectores. Las metas a alcanzar y las medidas de desempeo del agente. Finalmente el ambiente en el
cual operar el agente.

A estos elementos se les denomina el PAMA del agente, donde PAMA es igual
a Percepciones, Acciones, Metas, Desempeo y Ambiente. En la tabla se muestran algunos ejemplos
de tipos de agentes y su respectivo PAMA.

Tipo de Agente Percepciones Acciones Metas Ambiente


Sistema de Sntomas, Preguntas, Paciente Paciente,
diagnostico mdico evidencias, y pruebas y saludable Hospital
respuestas del tratamientos reduccin al
paciente mnimo costo
Sistema de anlisis de Pixeles y colores Clasificacin de Clasificacin Imgenes
imgenes de satlite correcta enviadas desde
escena un satlite
Controlador de Lecturas de Abrir y cerrar Lograr Refinera
temperatura y vlvulas, ajuste rendimiento y
Refinera presin seguridad
de temperatura

CONTRUCCION DE AGENTES INTELIGENTES

Los Agentes Inteligentes son una clase de software con caractersticas especficas. Para llevar a cabo el
desarrollo y construccin de Agentes, es recomendable utilizar mtodos similares a los utilizados
comnmente en desarrollo de Ingeniera de Software y Sistemas de Informacin.

De esto se desprende que los procesos a ejecutar son los tpicos Anlisis, Diseo, Implantacin y
Prueba. Es importante antes de describir un mtodo que permita desarrollar y construir Agentes
Inteligentes, considerar el significado del vocablo mtodo. Mtodo viene de la palabra griega "meta" y
"odos". "Odos" significa va, camino o curso y "meta" significa con, alrededor, despus, por lo que
mtodo sera la descripcin de una va o curso de accin a seguir para alcanzar un objetivo. Los
mtodos tienen cuatro componentes: una teora, un lenguaje, una estructura y unas tcnicas.8

La teora es una conceptualizacin que se adopta para describir el mtodo, representa las
abstracciones de mayor nivel sobre las que ste se basa.

El lenguaje es la manera de comunicacin del mtodo.


La estructura es la organizacin de los diferentes componentes del mtodo. Un mtodo debe
poseer una organizacin secuencial de procesos, donde cada proceso est constituido por una
serie de actividades, las cuales se llevan a cabo por la aplicacin de tcnicas.

Las tcnicas son procedimientos (normas, guas, indicaciones) que facilitan la realizacin de las
actividades. La aplicacin de las tcnicas requiere de la utilizacin de herramientas.

Mtodo de desarrollo y construccin de Agentes Inteligentes.

A continuacin, se presenta una propuesta de Mtodo para el desarrollo y construccin de agentes


inteligentes. Hay que dejar en claro que este no es ms que un conjunto de pasos estructurados, a los
cuales no se asocian herramientas especficas para la ejecucin de sus pasos pues se considera que la
eleccin de una u otra herramienta para uno u otro paso del mtodo depender de las condiciones
especficas del problema que se pretenda resolver, as como de los recursos con los que se cuente. El
Mtodo que se propone consta de cinco Procesos bsicos, que se desglosan en diversas actividades.
Dichos procesos son:

1. Proceso de Definicin del Problema del Agente


2. Proceso de Adquisicin y Representacin del conocimiento
3. Proceso de Diseo del Agente
4. Proceso de Implantacin del Agente
5. Proceso de Prueba del Agente

Proceso 1. Definicin del Problema del Agente: El objetivo de este proceso es lograr establecer una
conceptualizacin amplia y clara del problema que se pretende resolver con el uso de agentes
inteligentes, y el mismo se divide en las siguientes actividades:

Actividad 1.1. Identificacin del Problema

Actividad 1.2. Anlisis del Problema

Actividad 1.3. Construccin del modelo Conceptual de la situacin

8
Ramos Esmeralda. Mtodo de Adquisicin de Conocimiento en Grupo. Trabajo de Ascenso a la
categora de Agregado.
Escuela de Computacin. Facultad de Ciencias. Universidad Central de Venezuela. 1.998

Proceso 2. Adquisicin y Representacin del Conocimiento: Con base al modelo conceptual


obtenido en el proceso previo, este proceso persigue generar una representacin de este modelo
conceptual en trminos de conocimiento, la cual sea transportable al medio computacional. Las
actividades que conforman este proceso son:

Actividad 2.1 Adquisicin del conocimiento


Tarea 2.1.1. Definicin de las Percepciones

Tarea 2.1.1. Definicin de la Acciones

Tarea 2.1.3. Definicin de Objetivos y Metas

Tarea 2.1.1. Definicin del ambiente

Actividad 2.2. Representacin del Conocimiento

Tarea 2.2.1. Anlisis del conocimiento Adquirido

Tarea 2.2.2. Seleccin del esquema de representacin

Tarea 2.2.3. Representacin del Conocimiento

Proceso 3. Diseo del Agente: Este proceso corresponde con el diseo de la solucin en el mtodo
clsico de diseo y construccin de sistemas de informacin, y en el se pretende generar un modelo del
agente, que sea computacionalmente aplicable. Para lograr esto, el proceso se divide en las siguientes
actividades:

Actividad 3.1. Diseo de la Base de Conocimiento.

Actividad 3.2. Diseo del motor de Inferencia o Motor de ejecucin. Actividad 3.3. Diseo de la Interfaz.

Actividad 3.4. Diseo del Lenguaje de Comunicacin.

Proceso 4. Implantacin del Agente: Este proceso est enfocado en la construccin computacional
del agente inteligente diseado, que no es ms que la implantacin del diseo obtenido en el proceso
previo. Las actividades que permitirn lograr este objetivo son:

Actividad 4.1. Anlisis y Seleccin de Herramientas de Implantacin.


Actividad 4.2. Implantacin del Agente.
Tarea 4.2.1 Implantacin de la Base de Conocimiento.
Tarea 4.2.2 Implantacin del Motor de Inferencia o de ejecucin.
Tarea 4.2.3 Implantacin de la Interfaz.
Tarea 4.2.4 Implantacin de la Comunicacin.

Proceso 5. Prueba del Agente: Se puede decir que este proceso representa una validacin del agente
construido, en el cual se verifica y ajusta el funcionamiento de dicho agente, en funcin de los
requerimientos y la situacin analizada en el primer proceso planteado. Para lograr esta validacin, se
definen las siguientes actividades:

Actividad 5.1. Diseo de Pruebas

Actividad 5.2. Aplicacin de pruebas


Actividad 5.3. Depuracin del Agente

Leccin 8
ENTORNOS DE APLICACIN

Administracin de Redes y Sistemas: Los agentes pueden ser utilizados para mejorar el software de
gestin y administracin de sistemas, ayudando en el filtrado de informacin y en la ejecucin de
acciones automticas bajo un alto nivel de abstraccin.

Correo y Mensajera: El software de manejo de mensaje ha existido por algn tiempo y es un rea
donde actualmente se utilizan los agentes inteligentes. Los usuarios desean priorizar sus mensajes y
quieren que con el manejo del tiempo esto cada vez se haga mas y mas automtico.

Recuperacin y Manejo de Informacin: En esta rea no solo se busca la informacin, los agentes
tambin ayudan a categorizarla y priorizarla.

Comercio Electrnico: Los agentes pueden ir de compras tomando las especificaciones del usuario y
regresando con recomendaciones de compra que cumplan estas especificaciones. Tambin pueden
actuar como agentes de ventas y primores de productos.

FUTURO DE LOS AGENTES INTELIGENTES.

Hoy en da las investigaciones se centran ms hacia los Agentes Inteligentes ya que cada vez las
aplicaciones se hacen ms avanzadas y complicadas para los usuarios.

Con los agentes lo que se busca es una ayuda que le permita al usuario desenvolverse cada vez mejor
con las aplicaciones.

Para analizar el futuro de los agentes se deben tener en cuenta aspectos como:

Los Computadores: Se busca que los Agentes Inteligentes cada da sean capaces de adaptarse al
entorno dinmico que genera la constante evolucin de los computadores y el desarrollo de Internet.

Los Usuarios: Hoy en da los Agentes solo son usados por investigadores, se espera que en un futuro
no muy lejano todos los usuario de computadores utilicen agentes inteligentes ya que estos harn mas
amigable y sencilla la interaccin con sus PC e Internet.

Entornos de desarrollo: Entorno: plataformas para el diseo, implementacin, pruebas y ejecucin de


agentes autnomos y sistemas multiagente. La mayora implementan la arquitectura abstracta de la
especificacin FIPA (www.fipa.org) y proporcionan servicios o facilidades para la ejecucin de MAS
(Multi Agent System), dentro de estos se encuentran los siguientes:

ZEUS (BritishTelecom) JADE (Telecom Italia) FIPA-OS (emorphia)


April Agent Platform(Fujitsu America) JAS (Fujistu America)
MASK (IMAG, Grenoble) MADKIT (U. Montpellier) AgentBuilder(Reticular System)
JACK (Agent OrientedSoftware Australia)

ZEUS (http://www.labs.bt.com/projects/agents/zeus/index.htm)
Software libre que contiene un conjunto de herramientas para ayudar en la creacin de sistemas de
agentes colaborativos (limitados en competencias y recursos, por lo que deben compartir sus
habilidades con otros para realizar un problema ms complejo).

Departamento de Inteligencia Artificial Doctorado en Ciencias de la Computacin e Inteligencia Artificial


Curso2002-2003
Ana Garca Serrano y David Teruel agarca@dia.fi.upm.es

JADE http://sharon.cselt.it/projects/jade/

Java Agent DEvelopment framework Soporta la implementacin de MAS (FIPA compliant) : posee una
Librera de paquetes para programar agentes, adems herramientas para la depuracin y la ejecucin
de agentes. Es adicional una plataforma distribuida para la ejecucin de agentes (heterogneos como
Zeus): middle-ware para MAS con servicios para agentes como directorios, codificacin y transporte de
mensajes, herramientas como monitor remoto de agentes, sniffer agent, dummy agent este software
esta completamente desarrollado en JAVA y es de Libre distribucin bajo licencia LPGL.

A continuacin se puede encontrar la plataforma distribuida (Jade Container).


(Contenedores distintos tres en la figura, cada uno con sus respectivos agentes y que pueden estar en
mquinas distintas). Usa los servicios de red que le proporciona Java.
Departamento de Inteligencia Artificial Doctorado en Ciencias de la Computacin e Inteligencia Artificial
Curso2002-2003
Ana Garca Serrano y David Teruel agarca@dia.fi.upm.es

Leccin 9
EJEMPLO COMPLETO:

EL MUNDO DEL SUPERMERCADO9

Vamos a definir el conocimiento necesario para que un agente pueda comprar alimentos en un
supermercado. Para demostrar que tal conocimiento es suficiente probaremos un agente basado en el
conocimiento dentro del simulador de ambientes. Para ello necesitaremos un mundo de compras
simulado, que necesariamente deber ser ms sencillo que el mundo real. sin embargo buena parte del
conocimiento mostrado aqu es el mismo tanto para mundos simulados como para mundos reales. La
diferencia es ms bien de gradacin en lo complejo de la visin, el movimiento y la manipulacin tctil.

Una descripcin completa de la simulacin de compras.

9
El mundo del supermercado,
http://profesores.sanvalero.net/~w0467/iartificial4/Agentes%20Inteligentes,

Empezaremos por hacer una descripcin PAMA (percepciones, acciones, metas y ambiente) de la
simulacin de las compras.

En primer lugar, las percepciones:

1. En cada etapa temporal, el agente recibe tres percepciones: tctil, sonora y visual.
2. La percepcin tctil se reduce a tropezar o no tropezar. El agente percibe un tropezn slo si en
el paso de tiempo anterior ejecut una accin Avance y en la ubicacin a la que intent
desplazarse no hay suficiente espacio.
3. La percepcin sonora consiste en una lista de palabras verbales. El agente percibe las palabras
por otros agentes, a una distancia de dos cuadros.
4. Si se realiza un acercamiento mediante la cmara, percibir imgenes detalladas de cada uno
de los objetos, en el cuadro en donde la cmara est enfocada.
5. Si no hay acercamiento mediante la cmara del agente, ste percibir imgenes difusas de
cada uno de los objetos a una distancia de tres cuadrados directamente y diagonalmente frente
a l.
6. Las percepciones visuales estn constituidas por la ubicacin relativa, tamao aproximado,
color, forma y, quizs algunas otras Caractersticas. Ms adelante se explicar con ms detalle.

Ahora, las acciones:

1. Los agentes pueden emitir cadenas de palabras.


2. Los agentes pueden avanzar un cuadro.
3. Los agentes pueden dar vueltas de 90, a la izquierda o a la derecha.
4. Los agentes pueden realizar acercamientos de lo que est enfocando la cmara, en el cuadro
en donde se encuentren en un momento dado, o lo que est a una distancia.
5. mxima de tres cuadrados directa o diagonalmente frente a ellos.
6. Los agentes pueden hacer alejamientos con su cmara.
7. Los agentes pueden tomar todo objeto que est a una distancia de un cuadro de ellos. Para
ello, tiene que especificar las coordenadas relativas de donde se encuentra dicho objeto y tiene
que tener las manos vacas.
8. Un agente puede soltar un objeto que haya tomado. Para ello, tiene que especificar las
coordenadas relativas del punto en donde desee dejar el

objeto.

La meta original del agente es comprar todo lo que aparece en una lista de compras. Tal meta se podra
modificar si no hubiese algunos artculos o si resultasen demasiado caros. El agente intentar realizar
las compras lo ms rpido posible y evitar tropezar con cosas. En un problema ms ambicioso se
pedira al agente que cocinase la cena y que elaborara la lista de compras.

El ambiente es el interior de la tienda, as como los objetos y las personas que estn dentro de ella. La
tienda se representa mediante una cuadrcula, con pasillos que separan las hileras de anaqueles. En un
extremo de la tienda estn las cajas registradoras y sus cajeros. Clientes y empleados se encuentran en
diversos sitios de la tienda El agente empieza en la entrada y debe salir de la tienda por el mismo
cuadro por donde entr. En caso de que se le olvide, hay un letrero de SALIDA. Tambin hay letreros
para sealar los pasillos, y letreros ms pequeos (legibles slo mediante acercamiento de la cmara)
para sealar algunos (no necesariamente todos) artculos que estn rebajados.

En el caso de agentes reales, es necesario que descifren las seales de vdeo de la cmara (o la
digitalizacin de sta). Supondremos que este trabajo ya fue realizado. Aun as, el elemento visin de
las percepciones consta de una compleja lista de descripciones La primera componente de una
descripcin es su posicin relativa respecto de la posicin y orientacin del agente. Por ejemplo, la
posicin relativa [-2,1] es el cuadro que est a dos cuadros a la izquierda del agente y un cuadro
adelante segundo componente es el tamao del objeto, expresado como el dimetro promedio del
objetos metros. El siguiente es el color del objeto, expresado como un signo (rojo, verde, amarillo,
naranja ...), seguido de la forma del objeto (plano, redondo, cuadrado, ...). Por ltimo, supondremos que
en la imagen de vdeo se ha realizado una rutina de reconocimiento de caracteres; si hay letras en el
campo visual, se expresarn como una lista de palabras. En la figura se muestra una vista general del
supermercado, en la que el agente que est en [4,5]. El agente mira a la izquierda.

Cmo organizar el conocimiento

El dominio de la compra de elementos es demasiado grande para abordarlo de una sola vez. En vez de
ello, lo dividiremos en pequeos grupos de conocimiento, trabajaremos por separado cada uno de estos
para luego ver cmo integrarlos. Un buen mtodo para dividir el dominio por grupos es el de identificar
cada una de las tareas que tiene que desempear el agente. A lo anterior se le conoce como
descomposicin funcional. Dividiremos el dominio en cinco grupos:

Planificacin del men: El agente tiene que ser capaz de adaptar la lista de compras cuando en la
tienda no haya alguno de los artculos.

Navegacin: El agente debe ser capaz de comprender el efecto de sus acciones de movimiento y crear
un mapa interno del mundo.
Recopilacin: El agente debe ser capaz de localizar y tomar los artculos que est buscando. Parte de
ello implica inducir la existencia de objetos determinados a partir de las percepciones correspondientes:
el agente necesita contar con reglas de reconocimiento que le permitan inferir que un objeto rojo ms o
menos esfrico de unos siete centmetros de dimetro podra ser un tomate.
Comunicacin: El agente debe ser capaz de formular preguntas cuando no puede encontrar algo por s
mismo.
Pago: Aun un tmido agente al que no le guste hacer preguntas deber contar con la suficiente
capacidad para comunicarse con otros agentes con el fin de que pueda hacer su pago al cajero. El
agente debe saber que 5.00E es demasiado para pagar un tomate, y que si el total de la cuenta
asciende a 17.35E, y paga con un billete de 20E deber recibir 2.65E de cambio.

Una de las ventajas de la descomposicin funcional es que nos permite plantear un problema
completamente dentro de un grupo y ver si el conocimiento puede resolverlo. En otros tipos de
descomposicin por lo general es necesario desmenuzar toda la base de conocimientos antes de
plantear la primera pregunta.

Leccin 10
El mundo del supermercado (ampliacin del problema)

Planificacin del men

Un buen mandadero es capaz de hacer perfectamente las compras si se le da la lista correspondiente.


Nuestro agente est ms bien prximo a este ltimo, pero tambin lo dotaremos de cierta capacidad
para hacer elecciones inteligentes.

Supongamos que un di determinado no hay tomates. Un agente cuya lista de compras tenga "tomates,
lechuga, pepino, aceite de oliva, vinagre", se dar cuenta de que se trata de ingredientes para preparar
una ensalada y se le ocurrir que un pimiento rojo podra ser un buen sustituto, pues aadira color y
sabor a la ensalada. Un agente cuya lista sea `tomates, cebolla amarilla, apio una zanahoria, carne
molida, leche, vino blanco, tagliatela", inferir que se trata de preparar una salsa a la boloesa (Hazan,
1973), por lo que no hay problema si hace el reemplazo con tomates enlatados.

Para hacer estas inferencias, el agente necesita comprender que los artculos de la lista de compras son
los necesarios para formar objetos ms complejos conocidos como platos, , que stos a su vez se
combinan para formar objetos conocidos como comidas y que a un objeto puede reconocrsele por sus
componentes. Nuestro agente tendr que hacer dos tipos de inferencia. La primera, de la lista de partes
deber inducir el objeto compuesto que estas partes conforman. Es difcil porque la combinacin de las
partes (los artculos de la lista de compras) puede dar por resultado varios objetos compuestos, y
tambin porque algunos de los ingredientes no aparecen en la lista (algunos ya estn en casa, en la
despensa). La segunda, el agente debe ser capaz de decidir cmo reemplazar una parte que no se
encuentra para complementar el objeto compuesto que interesa. Esto se puede hacer en dos niveles:
reemplazando un ingrediente por otro y completar as el plato o, de no ser esto posible, reemplazando
todo el plato por otro y completar as la comida. Parte del conocimiento necesario tiene que ver con
platos especficos y parte es de nivel tan general que podra servir para, por ejemplo, reemplazar el
silenciador averiado de un carro.

El primer paso consiste en convertir la lista de compras -una lista de palabras- en una lista de partes:
una lista de categoras. Se usa el diccionario para asociar palabras con sus referentes respectivos:

Referente("tomates", Tomates)

Referente("cebollas", Cebollas)
El siguiente paso consiste en describir los objetos en funcin de sus partes necesarias y de las
opcionales. Si de lo que realmente se trata es de ser capaz de preparar un plato, necesitamos saber
ms acerca de las relaciones que guardan entre s las partes. Pero para ir a comprar los ingredientes,
slo necesitamos la lista correspondiente. Definimos PartesRequeridas, y
PartesRequeridas({Lechuga,Aderezo}EnsaladasDeVerduras) significar que todo objeto que sea un
elemento de EnsaladasDe Verduras tiene una ParteRequerida que es un elemento de Lechuga, y otra
que es un elemento de Aderezo. El que la lechuga sea una parte requerida de las ensaladas de
verduras significa que en cada uno de los elementos de stas hay un elemento de lechuga que forma
parte de ellas. Un razonamiento semejante se aplia a PartesOpciona/es, excepto que slo algunos
elementos de una categora tienen que manifestar las partes opcionales:

b' r, w PartesRequeridas(r, w) ~ d p p e r_-:> ParteRequerida(p, w)

V o, w PartesOpcionales(o, w) ~ b' p p e o => PartesOpcionales(p, w)

t 7'r, w ParteDe(r, w) <_-> dccE w~3 i i e r A ParteDe(i, c)

b' o, w ParteOpcional(o, w) <_-> 3 c c e w => >3 i E O n ParteDe(o, c)

El paso siguiente consiste en describir comidas y platos en funcin de sus partes respectivas:

PartesRequeridas({PlatosPrincipales}, Comidas)

PartesOpciona/es({Entradas, Guarniciones, Ensaladas, Postres, ...}, Comidas)

PartesRequeridast (Lechuga, Aderezo}, EnsaladasDe Verduras)

PartesOpcionales({Tomates, Pepinos, Pimientos, Zanahorias,...), EnsaldasDe Verduras)

PartesRequeridas({Pasta, Sa/sa8oloesa}, PastaBoloesa)

PartesOpcionales( { QuesoRallado }, PastaBoloesa)

PartesRequeridas({Cebollas, Aceite Oliva, Mantequilla, Apio, Zanahoria, Carne Molida, Sal,


VinosB/ancos, Leche, Jugo Tomate), SalsaBoloesa)

Ahora necesitamos la siguiente infornacin taxonmica sobre platos y alimentos:

Ensaladas Verdes c

Ensaladas Ensaladas c

Platos

PastaBoloesa c-

Entradas Entradas

c3P/atos fornates
c- Jugo Tomate

TomatesEnlatados c
JugoDeTomate Tagliatela c

Pasta

Ahora tenemos que decidir qu platos se pueden preparar de la lista de compras "tomates, cebollas
amarillas, una zanahoria, carne molida, leche, vino blanco, tagliatela". Como se mencion
anteriormente, esto se complica por el hecho de que la sal, la mantequilla y el aceite de oliva necesarios
para el plato con salsa boloesa no figuran en la lista de compras. Definiremos el predicado
PuedePreparar para que sea vlido entre una lista de compras y un plato siempre y cuando las
categoras de la lista -cuando se combinen con ingredientes tpicos- provean todoslos ingredientes
indispensables o requeridos de un plato.

VI, d PuedePreparar(l, d) <_-> d e Platos A PartesNecesarias(p, d) A p c


Combinacin(l, Ingredientes)
{Sal, Mantequilla, AceiteDeOliva} c Ingredientes

Con lo que hasta ahora contamos podemos inferir que el nico plato que se puede preparar con lo que
hay en la lista de compras es la pasta a la boloesa. La siguiente pregunta es qu hacer si no
encontramos tomates frescos. Resulta que todo lo que hay que hacer es reemplazar la lista de compras
(o la parte de sta necesaria para preparar este plato) por la lista de categoras de partes
correspondientes al mismo plato. En este caso, quiere decir que Tomates se reemplazar por
JugoTomate, lo que se puede resolver utilizando una lata de TomatesEnlatados.

Navegacin

Si un agente busca un libro en una librera, puede recorrer sta de principio a fin, mirando cada libro
hasta dar con el que le interesa. Sin embargo, lo ms eficiente sera que mediante el nmero de
clasificacin del libro, y con un diagrama que le indicase en qu anaquel se encuentra dicho nmero,
localizase directamente el libro en cuestin. Sucede lo mismo en el caso de un supermercado, si bien el
catlogo de ste no es tan bueno como el de la librera. El agente de compras deber saber que los
Supermercados estn ordenados por pasillos, que en stos hay letreros en donde se explica de manera
sucinta qu hay en ellos y los objetos cercanos en la jerarqua taxonmica es muy probable que tambin
estn muy prximos fsicamente. Por ejemplo, los inmigrantes britnicos que viven en Estados Unidos
aprenden que los paquetes de t se encuentran en el pasillo sealado con el letrero "Caf". Buena parte
del problema de la navegacin es que el agente tiene que recordar en dnde empez su recorrido, y
puede calcular su ubicacin actual a partir de los movimientos que haya realizado hasta ese momento.
El agente tiene la posibilidad de encontrar mejores rutas siempre que est consciente de que por lo
general la distribucin de los supermercados se hace por pasillos. En los supermercados los pasillos
estn numerados, lo que le evita la pena de tener que hacer recorridos a ciegas. La segunda vez que
visita un supermercado puede ahorrar mucho tiempo si recuerda en dnde se encuentra cada cosa. Sin
embargo, no es prctico que recuerde la ubicacin exacta de cada artculo puesto que el tomate que
ahora se encuentra en la ubicacin [x,y], probablemente ya no est all el da de maana.
Un problema tpico de navegacin es el de la localizacin de los tomates. La siguiente estrategia se
considera funcional:

1. Si el agente sabe, gracias a una vista anterior, en dnde se encuentran los tomates, calcule la
ruta para ir de la ubicacin actual a ese sitio.
2. Pero si se sabe en qu pasillo estn las verduras, disee un ruta para ir a dicho pasillo.
3. De no ser el caso, desplcese al frente del supermercado hasta encontrar el letrero de las
verduras.
4. Si nada de lo anterior funcionara, desplcese y pregunte a alguien en dnde estn los tomates.
(De esto se habla en la seccin "Comunicacin".)
5. Una vez localizado el pasillo de las verduras, recorra ste con acercamientos de cmara, y
busque algo de color rojo. Cuando se localice esto, mediante un acercamiento determine si se
trata de tomates. (De esto se habla en la seccin "Recopilacin".)

Recopilacin

Una vez ubicado en el pasillo correcto, el agente tiene que ir encontrando los artculos de su lista Para
ello, debern coincidir las percepciones visuales y las percepciones esperadas de cada categora de
objetos. En el mundo del supermercado existen miles de objetos diferentes, muchos de ellos (como los
tomates y las manzanas) ofrecen percepciones semejantes. El agente nunca estar totalmente seguro
de que con base en sus percepciones haya logrado clasificar correctamente un objeto; lo que s puede
es darse cuenta de si una conjetura en efecto es correcta. El agente de compras puede recurrir a una de
las siguientes reglas de clasificacin:

1. S solamente una categora conocida corresponde a una percepcin, suponga que el objeto es
miembro de dicha categora. (Esto puede dar lugar a errores cuando se tiene ante la vista
objetos desconocidos.)
2. Si una percepcin corresponde a varias categoras a la vez, pero un letrero cercano permite
identificar una de ellas, suponga que el objeto es miembro de esa categora.
3. Si hay un letrero en un pasillo que identifica una categora (o una supercategora), suponga que
el objeto pertenece a dicha categora. Por ejemplo, si nos encontrramos en el pasillo
identificado como "Verduras", y no en el pasillo de las "Frutas", una percepcin redonda, roja, la
categorizaramos como un tomate, no como manzana. En un partido de cricket, podra
interpretarse como otra cosa.

Para implantar lo anterior, empezamos con un conjunto de reglas causales correspondientes a las
percepciones:

b'x x e Tomates ~-~-> ColorSuperficie(x, Rojo)


dx x E NaranJas _-:> ColorSupenrcie(x, Naranja)
b'x x e Manzanas =;> ColorSuperficie(x, Rojo) v ColorSuperficie(x, Verde) b'x x E Tomates ~ Forma(x,
Redonda)
b'x x E Naranjas ~ Forma(x, Redonda)

b'x ColorSuperficie(x, c) A Visible(x) =>

ProducePercepcinColor(x, c) dx Forma (x, s) A Visible(x) _-:>

ProducePercepcinForma(x, s)

Reglas como las anteriores, y otras ms semejantes, constituyen una muestra de una teora causal
acerca de cmo a partir de los objetos del mundo se forman las percepciones. Observe cun simplista
es. Por ejemplo, en ningn momento se habla sobre iluminacin. (Por fortuna, las luces siempre stn
encendidas en un supermercado). A partir de estas reglase el agente podr deducir todo un conjunto de
posibles objetos que pudieran explicar las percepciones recibidas. Mediante el conocimiento acerca de
qu tipos de objetos aparecen en dnde permitir eliminar todas las categoras, excepto una. Desde
luego, el hecho de que el agente slo sepa acerca de un tipo de objeto que pudiera producir una
percepcin determinada no significa necesariamente que tal percepcin haya sido producida realmente
por dicho objetos. D)esde luego es posible que existan otros tipos de objetos (p. ej., tomates de plstico)
que produzcan la misma percepcin que la de la categora conocida. Para resolver lo anterior se puede
utilizar el axioma de cierre de dominio, mediante el que se especifique que las categoras conocidas es
todo lo que existe, o mediante un supuesto previamente definido, que no se explica aqu.
La parte restante del problema de la recopilacin es la manipulacin: cmo tomar los objetos y
transportarlos. En el caso de nuestra simulacin, se supone que la accin realizada se reduce a la
primitiva toma de un objeto y a que el agente sea capaz de transportar todos los artculos que necesite
En el mundo real, las acciones necesarias para coger un racimo de pltanos sin estropearlos, o una
botella de leche de un litro sin derramar una gota, plantean serios problemas.

Comunicacin

Un eficiente comprador cabe cundo preguntar. (En dnde estn las anchoas?. ,Son estos tomates
verdes?) Desafortunadamente la de mantener una conversacin es una tarea difcil, por lo que
pospondremos su estudio. Por de pronto, hablaremos de una modalidad ms sencilla de comunicacin
unidireccional: la lectura de letreros. Si en el letrero de un pasillo aparece una palabra, los miembros
pertenecientes a la categora a la que se refiere esa palabra se encontrarn en dicho pasillo.

t ,' a ( a E Pasillos n 3. s, w LetreroDe(s, a) A w b E Palabras(s))_-_> 3 x, c Referente(w, c) AEn(x, a)

Si en un letrero pequeo aparece una palabra, los artculos que pertenecen a esa categora se
encontrarn en sus proximidades:

b' s, w, 1 (s e Signos A Tamao(x) < Metros(. 3) n w E Palabras(x) A En(s, 7)) => -3x, c Referente(w, c)
A x e c,,, En(x, AreaAlrededor(I))

Pago

El agente de compras debe contar con el suficiente conocimiento con el fin que no pague de ms por un
artculo. En primer lugar, debe conocer cules son los precios tpicos de los artculos, por ejemplo:

d g g e Tpica (CameMolida) A Peso(g) = Libras(I) ~--~> E(9) s PrecioJusto(g) _< E(2)

El agente deber saber que el precio total es aproximadamente proporcional a la cantidad, y tambin
que es frecuente obtener descuentos cuando se compran cantidades mayores. La regla siguiente
establece que el descuento puede ser de hasta 50%:

d q, c, w, p g e c A Peso(q) = w A Precio(q )= p=>


b' m, q2 m> 1 A Aq2 E cA Peso(g2)= m x w-~ ->

( 7 + (m - 7) / 2) ) X p _< PrecioJusto(q2) _< m X p

Es muy importante que el agente sepa que es un mal negocio pagar ms del precio justo por un artculo,
y todo lo que sea mal negocio es una mala accin: di Precio() > PrecioJusto(i) => Ma/aCompra(i) di
MalNegocio (i) => b'a Ma/a(Compra (a, i))

Los eventos de compra pertenecen a la categora Compra r(b,x, s, p): el comprador b compra el objeto x
con el vendedor s por el precio p. Aunque la descripcin completa de una compra es muy compleja,
corresponde al patrn general definido anteriormente para el caso del matrimonio. Entre las condiciones
previas figura el hecho de que p es el precio del objeto x; que b posee, al menos dinero equivalente al
precio, y en forma de uno o ms instrumentos monetarios; y que s es el propietario de x. El evento
incluye un intercambio monetario cuyo resultado final es una ganancia neta para s por el valor p y que b
se convierte en propietario de x.
Y algo ms que debe saber el agente acerca de las compras: no es correcto salir de una tienda
llevndose algo que todava es propiedad de sta.

V a, x, s, i s e Tiendas A T(Llevando(a, x) A En (x, s) A DeSuPropiedad(s x) ) => T(Mal(Exito(a)), i)

Todo agente cuya meta sea salir del supermercado utilizar esta meta para definir la submeta de
convertirse en propietario de todos los objetos que se est llevando. As, todo lo que necesitamos es
una descripcin de las partes correspondientes a un evento de compra, de manera que el agente pueda
realizarla. En el supermercado, el evento de la compra consiste en dirigirse a las cajas registradoras,
poner todos los artculos sobre el mostrador, esperar a que el cajero los contabilice, entregar una
cantidad de dinero igual al precio total marcado y recoger cada uno de los artculos. Note que si el total
es de E4, no se entregar al cajero el mismo billete de un euro cuatro veces.

V b , m , s , p , e e e Supermercado(b, m, s, p) =>
3 e,, e2, e3, e4, e5, e, = lr(b, c) A Caja(c) A
e2 = Poner(b, m, c) A e3 = PrecioTotal(s, m) ~
e4 = Poner(b, p, c) A e5 = Tomar(b, m) A
Antes(e,, e2) A Antes(e2, e3) A Antes(e3, e4) A Antes(e4, e5) ~
ParteDe(e,, e) A ParteDe(e2, e) A ParteDe(e3, e) n ParteDe(e4, e) A ParteDe(e5, e)

Hemos as comentado lo referente a todas las principales reas del conocimiento necesarias para que
un agente se desenvuelva adecuadamente en el mundo de las compras en un supermercado. De haber
realizado una especificacin exhaustiva, este ejercicio habra resultado excesivamente largo; se opt
ms bien por bosquejar el mtodo que se empleara para realizar dicha especificacin. No obstante el
arduo trabajo implicado, la elaboracin de este tipo de bases de conocimiento reales constituye una
valiossima experiencia.

Fuente:http://profesores.sanvalero.net/~w0467/iartificial4/Agentes%20Inteligentes
Capitulo 3

Complejidad de los problemas

Leccin 11
Teora De La Complejidad

Definicin: La complejidad se refiere a la condicin del cosmos que - a pesar de que el principio cuntico
(todo interacta con todo) lo integra en una realidad nica - es demasiado rico y variado como para ser
entendido por rutas lineales simples, que no conducen ni a novedades ni a asombros. Algunas
porciones del cosmos se entienden mediante dichas rutas, pero los fenmenos ms intrincados slo se
pueden entender por sus patrones generales, pero no en detalle. La teora de la complejidad, dentro de
la mecnica estadstica (captulo de la fsica), se preocupa del estudio de los atractores asociados a sus
dinmicas y de la teora de la innovacin, de la autoorganizacin, del aprendizaje, de la adaptacin, de
los sistemas disipativos (relacionados con la segunda ley) y no-lineales, de las transiciones de fase (en
especial las que ligan la fase caos con la fase orden), de las roturas de simetra en condiciones alejadas
del equilibrio, de la emergencia de nuevos fenmenos a partir de redes y de interacciones. Para
entender muchos fenmenos hasta ahora mal explicados, la ciencia se inclina hacia la teora del caos,
de los fractales y a sta de la complejidad.

Aplicada esta teora tan rica al cerebro, ste la pone de manifiesto a travs de su habilidad
impresionante para detectar detalles. Se interpreta que existe una tremenda presin evolucionaria para
que (en los animales con un atractor para su evolucin del tipo inteligencia-intensivo) los cerebros se
vuelvan especialistas en detalles y logros. Denominamos conciencia a un atributo de la arquitectura del
cerebro que se aplica innovativamente a detectar detalles, atributo que es de por s autorreferencial y
emergente, quizs el ms avanzado en su complejidad, no- linealidad, autoorganizacin y capacidad de
aprender del entorno. El logro ms misterioso es el de combinar una impresionante cantidad de
fragmentos sensoriales de la realidad, parcialmente estructurados, descubriendo a partir de ellos nuevos
detalles, que siempre se pueden aplicar a controlar alarmas. (Ideas de diversos autores, entre ellos de
Jack Cohen y Ian Stewart).
La moderna teora de la complejidad (Chaitin, 1975; Rabin, 1977) se basa en principios informacionales
y computacionales que intentan abordar con cierto nivel de abstraccin campos tales como el estudio de
la naturaleza y consecuencias de las interacciones y no-linearidades de sistemas con muchas variables,
con muchos objetos y que presentan mltiples objetivos. Incluye tpicos de teora general de sistemas,
vida artificial, autmatas celulares, caos, valles de atraccin en redes neurales, criticalidad, computacin
evolucionaria, algoritmos genticos, fractales, computacin paralela, sistemas autoorganizantes,
sistemas adaptivos compartimentalizados, sistemas dinmicos, inteligencia artificial, complejidad en
biologa.

10
http://club.telepolis.com/ohcop/compleji.html

Complejidad11

Definiciones del texto de Barral y von der Becke: "Diversos matemticos y cientficos han definido la
complejidad.
a. Supngase ya un sistema complejo y aplquense a l las ideas del premio Nobel Herbert Simon. Por
ms que se conozcan acabadamente todos sus subsistemas constituyentes, en realidad ello no alcanza
para conocer la funcin verdaderamente fundamental del sistema. Por qu? Porque el sistema no es
solamente suma ingenua de sus partes. Para ser un sistema, debe ser ms que la suma trivial. Una
bicicleta y un ciclista forman un sistema con una funcin ms all de la suma de las funciones aisladas
de ambos subsistemas. Cuanto mayor sea la diferencia entre la suma ingenua de las partes y la
operacin total, tanto ms significativa es la complejidad del sistema.

b. Los sistemas complejos muestran una dinmica propia que los hace acercarse a (aunque tambin
alejarse de) diversos ordenamientos posibles, ordenamientos que implican a veces autoorganizaciones
inesperadas para un observador desinformado. Esos diferentes ordenamientos o estructuras disipativas
de Prigogine, estn separados entre s por transiciones de fase, que incluso pueden ocurrir en cascada.
Cuanto mayor sea el nmero de grados de libertad de un sistema complejo (que tambien lo es porque
los tiene muy numerosos) tanto mayor es la posibilidad que se vuelque sobre s mismo en el espacio de
grados de libertad y como resultado se obtenga algo inesperado.

c. Gregorio Chaitin identifica complejidad como principio de la codificacin de longitud mnima. Para
codificar todo lo que realiza un sistema complejo se necesitan mucho ms instrucciones que para
codificar lo que ejecuta un sistema simple. Entonces la longitud de la codificacin de longitud mnima
permite discriminar entre sistema complejo y sistema simple. Un sistema muy simple es una sucesin de
n ceros. Para codificarlo basta con dos instrucciones muy breves. "Imprimir un cero. Repetir esto n
veces." Pero para codificar lo que hace un cerebro, pese a que un sabio logre finalmente una
codificacin de longitud mnima que lo describa, sin duda que se necesitar mucho ms longitud en las
instrucciones. La codificacin del sistema complejo "ciclista pedaleando", por ms mnima que sea,
aporta elementos nuevos y realimentaciones que no estn en cada uno de los dos subsistemas. La
bicicleta depende del status econmico del ciclista y el ciclista depende de la bicicleta que adquiri.

d. Se pueden ubicar en un plano x versus y la siguiente coleccin de informaciones.

y = b0 (para todo x). Ser una paralela a x ubicada a la altura b0.


y = b0 + b1.x. Ser una recta de ordenada al origen b0 y pendiente b1.
y = b0 + b1.x + b2. x2. Ser una parbola.

11
http://victorian.fortunecity.com/brutalist/560/H/0000001.html

y = b0 + b1.x1 + b2 2.x2. x2 + b3.x1.x2 + b4.x12 + b5. x22 (2) Ser un paraboloide de revolucin.

Estos son modelos relativamente simples, que se vuelven ms y ms complejos a medida que se les
agreguen nuevos sumandos (como b6.x1.x2) o nuevas variables independientes (x3 , x4, ...). La
complejidad se define por la cantidad de informacin mnima necesaria para su reconocimiento.

Para muchos autores, cuanto ms regular y ordenado sea un modelo, tanto menor es la cantidad de
informacin que encierra. Para describir la posicin y la velocidad de molculas de gas en el equilibrio,
se necesita un juego de informaciones diferente para cada molcula: hay que enumerarlas a todas para
intentar cumplir con el requisito de lograr una codificacin de mnima longitud. La distribucin de la
direccin y sentido de las trayectorias es muy amplia. Al salir del equilibrio gaseoso empieza a haber
una coherencia de trayectorias (tendencia hacia la avalancha) para anular las fuerzas impulsoras
presentes, por imperativo de la segunda ley de la termodinmica. La simplicidad, la regularidad y el
orden, as como el apartamiento del equilibrio en el caso de los gases, se caracterizan todos ellos por su
tendencia a requerir comparativamente poca cantidad de informacin. Todo lo contrario sucede con la
complejidad, las irregularidades y el desorden, as como la aproximacin y acceso al equilibrio en el
caso de los gases, pues, comparativamente, su codificacin de longitud mnima es muy exigente en lo
que se refiere a la cantidad de informacin requerida."

Definir si un sistema es simple o complejo es bastante subjetivo: es observador- dependiente. Tiene


mucho que ver con los intereses que el observador tiene al considerar la complejidad de un sistema.

Ahora vamos a tomar en cuenta la complejidad de los problemas enfocada a la resolucin de los
problemas y los algoritmos.

Anlisis de Algoritmos: Complejidad12

La resolucin prctica de un problema exige por una parte un algoritmo o mtodo de resolucin y por
otra un programa o codificacin de aquel en un ordenador real. Ambos componentes tienen su
importancia; pero la del algoritmo es absolutamente esencial, mientras que la codificacin puede
muchas veces pasar a nivel de ancdota.

A efectos prcticos o ingenieriles, nos deben preocupar los recursos fsicos necesarios para que un
programa se ejecute. Aunque puede haber muchos parmetros, los mas usuales son el tiempo de
ejecucin y la cantidad de memoria (espacio). Ocurre con frecuencia que ambos parmetros estn
fijados por otras razones y se plantea la pregunta inversa: cual es el tamao del mayor problema que
puedo resolver en T segundos y/o con Mbytes de memoria? En lo que sigue nos centraremos casi
siempre en el parmetro tiempo de ejecucin, si bien las ideas desarrolladas son fcilmente aplicables a
otro tipo de recursos.

12
http://www.lab.dit.upm.es/~lprg/material/apuntes/o/index.html Documento Completo

Para cada problema determinaremos un medida N de su tamao (por nmero de datos) e intentaremos
hallar respuestas en funcin de dicho N. El concepto exacto que mide N depende de la naturaleza del
problema. As, para un vector se suele utilizar como N su longitud; para una matriz, el nmero de
elementos que la componen; para un grafo, puede ser el nmero de nodos (a veces es mas importante
considerar el nmero de arcos, dependiendo del tipo de problema a resolver); en un fichero se suele
usar el nmero de registros, etc. Es imposible dar una regla general, pues cada problema tiene su
propia lgica de costo.

Tiempo de Ejecucin

Una medida que suele ser til conocer es el tiempo de ejecucin de un programa en funcin de N, lo
que denominaremos T(N). Esta funcin se puede medir fsicamente (ejecutando el programa, reloj en
mano), o calcularse sobre el cdigo contando instrucciones a ejecutar y multiplicando por el tiempo
requerido por cada instruccin. As, un trozo sencillo de programa como

S1; for (int i= 0; i < N; i++) S2;


Requiere

T(N)= t1 + t2*N

Siendo t1 el tiempo que lleve ejecutar la serie "S1" de sentencias, y t2 el que lleve la serie "S2".

Prcticamente todos los programas reales incluyen alguna sentencia condicional, haciendo que las
sentencias efectivamente ejecutadas dependan de los datos concretos que se le presenten. Esto hace
que mas que un valor T(N) debamos hablar de un rango de valores

Tmin(N) <= T(N) <= Tmax(N)

Los extremos son habitualmente conocidos como "caso peor" y "caso mejor". Entre ambos se hallara
algn "caso promedio" o ms frecuente.

Cualquier frmula T(N) incluye referencias al parmetro N y a una serie de constantes "Ti" que
dependen de factores externos al algoritmo como pueden ser la calidad del cdigo generado por el
compilador y la velocidad de ejecucin de instrucciones del ordenador que lo ejecuta. Dado que es fcil
cambiar de compilador y que la potencia de los ordenadores crece a un ritmo vertiginoso (en la
actualidad, se duplica anualmente), intentaremos analizar los algoritmos con algn nivel de
independencia de estos factores; es decir, buscaremos estimaciones generales ampliamente vlidas.

Asintotas

Por una parte necesitamos analizar la potencia de los algoritmos independientemente de la potencia de
la mquina que los ejecute e incluso de la habilidad del programador que los codifique. Por otra, este
anlisis nos interesa especialmente cuando el algoritmo se aplica a problemas grandes. Casi siempre
los problemas pequeos se pueden resolver de cualquier forma, apareciendo las limitaciones al atacar
problemas grandes. No debe olvidarse que cualquier tcnica de ingeniera, si funciona, acaba
aplicndose al problema ms grande que sea posible: las tecnologas de xito, antes o despus, acaban
llevndose al lmite de sus posibilidades.

Las consideraciones anteriores nos llevan a estudiar el comportamiento de un algoritmo cuando se


fuerza el tamao del problema al que se aplica. Matemticamente hablando, cuando N tiende a infinito.
Es decir, su comportamiento asinttico.

Sean "g(n)" diferentes funciones que determinan el uso de recursos. Habr funciones "g" de todos los
colores. Lo que vamos a intentar es identificar "familias" de funciones, usando como criterio de
agrupacin su comportamiento asinttico.

A un conjunto de funciones que comparten un mismo comportamiento asinttico le denominaremos un


orden de complejidad'. Habitualmente estos conjuntos se denominan O, existiendo una infinidad de
ellos.

Para cada uno de estos conjuntos se suele identificar un miembro f(n) que se utiliza como representante
de la clase, hablndose del conjunto de funciones "g" que son del orden de "f(n)", denotndose como

g IN O(f(n))

Con frecuencia nos encontraremos con que no es necesario conocer el comportamiento exacto, sino
que basta conocer una cota superior, es decir, alguna funcin que se comporte "an peor".
La definicin matemtica de estos conjuntos debe ser muy cuidadosa para involucrar ambos aspectos:
identificacin de una familia y posible utilizacin como cota superior de otras funciones menos malas:

Dcese que el conjunto O(f(n)) es el de las funciones de orden de f(n), que se define como

O(f(n))= {g: INTEGER -> REAL+ tales que Existen las constantes k y N0 tales que para todo N > N0,
g(N) <= k*f(N) }

en palabras, O(f(n)) esta formado por aquellas funciones g(n) que crecen a un ritmo menor o igual que el
de f(n).

De las funciones "g" que forman este conjunto O(f(n)) se dice que "estn dominadas asintticamente"
por "f", en el sentido de que para N suficientemente grande, y salvo una constante multiplicativa "k", f(n)
es una cota superior de g(n).

Leccin 12
rdenes de Complejidad

Se dice que O(f(n)) define un "orden de complejidad". Escogeremos como representante de este orden a
la funcin f(n) ms sencilla del mismo. As tendremos

O(1) orden constante


O(log n) orden logartmico
O(n) orden lineal
O(n log n)
O(n2) orden cuadrtico
O(na) orden polinomial (a > 2)
O(an) orden exponencial (a > 2)
O(n!) orden factorial

Es ms, se puede identificar una jerarqua de rdenes de complejidad que coincide con el orden de la
tabla anterior; jerarqua en el sentido de que cada orden de complejidad superior tiene a los inferiores
como subconjuntos. Si un algoritmo A se puede demostrar de un cierto orden O1, es cierto que tambin
pertenece a todos los rdenes superiores (la relacin de orden ota superior de' es transitiva); pero en la
prctica lo til es encontrar la "menor cota superior", es decir el menor orden de complejidad que lo
cubra.

Impacto Prctico

Para captar la importancia relativa de los rdenes de complejidad conviene echar algunas cuentas.

Sea un problema que sabemos resolver con algoritmos de diferentes complejidades. Para compararlos
entre si, supongamos que todos ellos requieren 1 hora de computador para resolver un problema de
tamao N=100.

Qu ocurre si disponemos del doble de tiempo? Ntese que esto es lo mismo que disponer del mismo
tiempo en un computador el doble de potente, y que el ritmo actual de progreso del hardware es
exactamente ese:
"duplicacin anual del nmero de instrucciones por segundo".

Qu ocurre si queremos resolver un problema de tamao 2n?

O(f(n)) N=100 t=2h N=200


log n 1h 10000 1.15 h
n 1h 200 2h
n log n 1h 199 2.30 h
n2 1h 141 4h
n3 1h 126 8h
2n 1h 101 1030 h

Los algoritmos de complejidad O(n) y O(n log n) son los que muestran un comportamiento ms "natural":
prcticamente a doble de tiempo, doble de datos procesables.

Los algoritmos de complejidad logartmica son un descubrimiento fenomenal, pues en el doble de


tiempo permiten atacar problemas notablemente mayores, y para resolver un problema el doble de
grande slo hace falta un poco ms de tiempo (ni mucho menos el doble).

Los algoritmos de tipo polinmico no son una maravilla, y se enfrentan con dificultad a problemas de
tamao creciente. La prctica viene a decirnos que son el lmite de lo "tratable".

Sobre la tratabilidad de los algoritmos de complejidad polinmica habra mucho que hablar, y a veces
semejante calificativo es puro eufemismo. Mientras complejidades del orden O(n2) y O(n3) suelen ser
efectivamente abordables, prcticamente nadie acepta algoritmos de orden O(n100), por muy
polinmicos que sean. La frontera es imprecisa.

Cualquier algoritmo por encima de una complejidad polinmica se dice "intratable" y slo ser aplicable
a problemas ridiculamente pequeos.

A la vista de lo anterior se comprende que los programadores busquen algoritmos de complejidad lineal.
Es un golpe de suerte encontrar algo de complejidad logartmica. Si se encuentran soluciones
polinomiales, se puede vivir con ellas; pero ante soluciones de complejidad exponencial, ms vale seguir
buscando.

No obstante lo anterior

... si un programa se va a ejecutar muy pocas veces, los costos de codificacin y depuracin son los que
ms importan, relegando la complejidad a un papel secundario.

... si a un programa se le prev larga vida, hay que pensar que le tocar mantenerlo a otra persona y,
por tanto, conviene tener en cuenta su legibilidad, incluso a costa de la complejidad de los algoritmos
empleados.
... si podemos garantizar que un programa slo va a trabajar sobre datos pequeos (valores bajos de N),
el orden de complejidad del algoritmo que usemos suele ser irrelevante, pudiendo llegar a ser incluso
contraproducente.

Por ejemplo, si disponemos de dos algoritmos para el mismo problema, con tiempos de ejecucin
respectivos:

algoritmo tiempo complejidad


f 100 n O(n)
g n2 O(n2)

asintticamente, "f" es mejor algoritmo que "g"; pero esto es cierto a partir de N > 100.
Si nuestro problema no va a tratar jams problemas de tamao mayor que 100, es mejor solucin usar
el algoritmo "g".

El ejemplo anterior muestra que las constantes que aparecen en las frmulas para T(n), y que
desaparecen al calcular las funciones de complejidad, pueden ser decisivas desde el punto de vista de
ingeniera. Pueden darse incluso ejemplos ms dramticos:

algoritmo tiempo complejidad


f n O(n)
g 100 n O(n)

an siendo dos algoritmos con idntico comportamiento asinttico, es obvio que el algoritmo "f" es
siempre 100 veces ms rpido que el "g" y candidato primero a ser utilizado.

... usualmente un programa de baja complejidad en cuanto a tiempo de ejecucin, suele conllevar un
alto consumo de memoria; y viceversa. A veces hay que sopesar ambos factores, quedndonos en
algn punto de compromiso.

... en problemas de clculo numrico hay que tener en cuenta ms factores que su complejidad pura y
dura, o incluso que su tiempo de ejecucin: queda por considerar la precisin del clculo, el mximo
error introducido en clculos intermedios, la estabilidad del algoritmo, etc. etc.

Leccin 13

Propiedades de los Conjuntos O(f)

No entraremos en muchas profundidades, ni en demostraciones, que se pueden hallar en los libros


especializados. No obstante, algo hay que saber de cmo se trabaja con los conjuntos O() para poder
evaluar los algoritmos con los que nos encontremos.

Para simplificar la notacin, usaremos O(f) para decir O(f(n))

Las primeras reglas slo expresan matemticamente el concepto de jerarqua de rdenes de


complejidad:

A. La relacin de orden definida por

f < g <=> f(n) IN O(g)

es reflexiva: f(n) IN O(f)

y transitiva: f(n) IN O(g) y g(n) IN O(h) => f(n) IN O(h)


B. f IN O(g) y g IN O(f) <=> O(f) = O(g)

Las siguientes propiedades se pueden utilizar como reglas para el clculo de rdenes de complejidad.
Toda la maquinaria matemtica para el clculo de lmites se puede aplicar directamente:

C. Lim(n->inf)f(n)/g(n) = 0 => f IN O(g)


=> g NOT_IN O(f)

=> O(f) es subconjunto de O(g)

D. Lim(n->inf)f(n)/g(n) = k => f IN O(g)

=> g IN O(f)

=> O(f) = O(g)

E. Lim(n->inf)f(n)/g(n)= INF => f NOT_IN O(g)

=> g IN O(f)
=> O(f) es superconjunto de O(g)

Las que siguen son reglas habituales en el clculo de lmites:

F. Si f, g IN O(h) => f+g IN O(h)

G. Sea k una constante, f(n) IN O(g) => k*f(n) IN O(g)

H. Si f IN O(h1) y g IN O(h2) => f+g IN O(h1+h2)

I. Si f IN O(h1) y g IN O(h2) => f*g IN O(h1*h2)

J. Sean los reales 0 < a < b => O(na) es subconjunto de O(nb)

K. Sea P(n) un polinomio de grado k => P(n) IN O(nk)

L. Sean los reales a, b > 1 => O(loga) = O(logb)

La regla [L] nos permite olvidar la base en la que se calculan los logaritmos en expresiones de
complejidad.

La combinacin de las reglas [K, G] es probablemente la ms usada, permitiendo de un plumazo olvidar


todos los componentes de un polinomio, menos su grado. Por ltimo, la regla [H] es la basica para
analizar el concepto de secuencia en un programa: la composicin secuencial de dos trozos de
programa es de orden de complejidad el de la suma de sus partes.

Leccin 14
Reglas Prcticas
Aunque no existe una receta que siempre funcione para calcular la complejidad de un algoritmo, si es
posible tratar sistemticamente una gran cantidad de ellos, basndonos en que suelen estar bien
estructurados y siguen pautas uniformes.

Loa algoritmos bien estructurados combinan las sentencias de alguna de las formas siguientes:

sentencias sencillas

secuencia (;)

decisin (if)

bucles

llamadas a procedimientos

Sentencias sencillas

Nos referimos a las sentencias de asignacin, entrada/salida, etc. siempre y cuando no trabajen sobre
variables estructuradas cuyo tamao este relacionado con el tamao N del problema. La inmensa
mayora de las sentencias de un algoritmo requieren un tiempo constante de ejecucin, siendo su
complejidad O(1).

Secuencia (;)

La complejidad de una serie de elementos de un programa es del orden de la suma de las


complejidades individuales, aplicndose las operaciones arriba expuestas.

Decisin (if)

La condicin suele ser de O(1), complejidad a sumar con la peor posible, bien en la rama THEN, o bien
en la rama ELSE. En decisiones multiples (ELSE IF, SWITCH CASE), se tomara la peor de las ramas.

Bucles

En los bucles con contador explcito, podemos distinguir dos casos, que el tamao N forme parte de los
lmites o que no. Si el bucle se realiza un nmero fijo de veces, independiente de N, entonces la
repeticin slo introduce una constante multiplicativa que puede absorberse.

Ej.- for (int i= 0; i < K; i++) { algo_de_O(1) } => K*O(1) = O(1)

Si el tamao N aparece como lmite de iteraciones ...

Ej.- for (int i= 0; i < N; i++) { algo_de_O(1) } => N * O(1) = O(n)

Ej.- for (int i= 0; i < N; i++) { for (int j= 0; j < N; j++) { algo_de_O(1) } } tendremos N * N * O(1) = O(n2)
Ej.- for (int i= 0; i < N; i++) { for (int j= 0; j < i; j++) { algo_de_O(1) } }

el bucle exterior se realiza N veces, mientras que el interior se realiza 1, 2, 3, ... N veces
respectivamente. En total,

1 + 2 + 3 + ... + N = N*(1+N)/2 -> O(n2)

A veces aparecen bucles multiplicativos, donde la evolucin de la variable de control no es lineal (como
en los casos anteriores)

Ej.- c= 1; while (c < N) { algo_de_O(1) c= 2*c; }

El valor incial de "c" es 1, siendo "2k" al cabo de "k" iteraciones. El nmero de iteraciones es tal que 2k
>= N => k= eis (log2 (N)) [el entero inmediato superior] y, por tanto, la complejidad del bucle es O(log n).

Ej.- c= N; while (c > 1) { algo_de_O(1) c= c / 2; }

Un razonamiento anlogo nos lleva a log2(N) iteraciones y, por tanto, a un orden O(log n) de
complejidad.

Ej.- for (int i= 0; i < N; i++) { c= i; while (c > 0) { algo_de_O(1) c= c/2; } }

Tenemos un bucle interno de orden O(log n) que se ejecuta N veces, luego el conjunto es de orden O(n
log n)
Llamadas a procedimientos

La complejidad de llamar a un procedimiento viene dada por la complejidad del contenido del
procedimiento en s. El coste de llamar no es sino una constante que podemos obviar inmediatamente
dentro de nuestros anlisis asintticos.

El clculo de la complejidad asociada a un procedimiento puede complicarse notablemente si se trata de


procedimientos recursivos. Es fcil que tengamos que aplicar tcnicas propias de la matemtica
discreta, tema que queda fuera de los lmites de esta nota tcnica.

Ejemplo: evaluacin de un polinomio

Vamos a aplicar lo explicado hasta ahora a un problema de fcil especificacin:


disear un programa para evaluar un polinomio P(x) de grado N;

class Polinomio {
private double[ ] coeficientes; Polinomio (double[ ] coeficientes) {
this.coeficientes= new double[coeficientes.length];System.arraycopy(coeficientes, 0, this.coeficientes, 0,
coeficientes.length);
}
double evalua_1 (double x) {
double resultado= 0.0;
for (int termino= 0; termino < coeficientes.length; termino++) {
double xn= 1.0;
for (int j= 0; j < termino; j++)
xn*= x; // x elevado a n resultado+= coeficientes[termino] * xn;
}

return resultado;
}
}

Como medida del tamao tomaremos para N el grado del polinomio, que es el nmero de coeficientes
en C. As pues, el bucle ms exterior (1) se ejecuta N veces. El bucle interior (2) se ejecuta,
respectivamente

1 + 2 + 3 + ... + N veces = N*(1+N)/2 => O(n2)

Intuitivamente, sin embargo, este problema debera ser menos complejo, pues repugna al sentido
comn que sea de una complejidad tan elevada. Se puede ser ms inteligente a la hora de evaluar la
potencia xn:

double evalua_2 (double x) {

double resultado= 0.0;


for (int termino= 0; termino < coeficientes.length; termino++) {
resultado+= coeficientes[termino] * potencia(x, termino);
}
return resultado;

private double potencia (double x, int n) {

if (n == 0)
return 1.0;
// si es potencia impar ...
if (n%2 == 1)
return x * potencia(x, n-1);
// si es potencia par ...
double t= potencia(x, n/2);
return t*t;

El anlisis de la funcin Potencia es delicado, pues si el exponente es par, el problema tiene una
evolucin logartmica; mientras que si es impar, su evolucin es lineal. No obstante, como si "j" es impar
entonces "j-1" es par, el caso peor es que en la mitad de los casos tengamos "j" impar y en la otra mitad
sea par. El caso mejor, por contra, es que siempre sea "j" par.

Un ejemplo de caso peor seria x31, que implica la siguiente serie para j:

31 30 15 14 7 6 3 2 1

cuyo nmero de trminos podemos acotar superiormente por

2 * eis (log2(j)),

donde eis(r) es el entero inmediatamente superior (este clculo responde al razonamiento de que en el
caso mejor visitaremos eis(log2(j)) valores pares de "j"; y en el caso peor podemos encontrarnos con
otros tantos nmeros impares entremezclados).

Por tanto, la complejidad de Potencia es de orden O(log n).


Insertada la funcin Potencia en la funcin EvaluaPolinomio, la complejidad compuesta es del orden O(n
log n), al multiplicarse por N un subalgoritmo de O(log n). As y todo, esto sigue resultando extravagante
y excesivamente costoso. En efecto, basta reconsiderar el algoritmo almacenando las potencias de "X"
ya calculadas para mejorarlo sensiblemente:

double evalua_3 (double x) {

double xn= 1.0;


double resultado= coeficientes[0];
for (int termino= 1; termino < coeficientes.length; termino++) {
xn*= x;
resultado+= coeficientes[termino] * xn;
}
return resultado;

Que queda en un algoritmo de O(n).


Habiendo N coeficientes C distintos, es imposible encontrar ningun algoritmo de un orden inferior de
complejidad.

En cambio, si es posible encontrar otros algoritmos de idntica complejidad:

double evalua_4 (double x) {


double resultado= 0.0;
for (int termino= coeficientes.length-1; termino >= 0; termino--) {
resultado= resultado * x +
coeficientes[termino];
}
return resultado;
}
No obstante ser ambos algoritmos de idntico orden de complejidad, cabe resaltar que sus tiempos de
ejecucin sern notablemente distintos. En efecto, mientras el ltimo algoritmo ejecuta N
multiplicaciones y N sumas, el penltimo requiere 2N multiplicaciones y N sumas. Si, como es frecuente,
el tiempo de ejecucin es notablemente superior para realizar una multiplicacin, cabe razonar que el
ltimo algoritmo ejecutar en la mitad de tiempo que el anterior.

Leccin 15
Medidas de laboratorio

La siguiente tabla muestra algunas medidas de la eficacia de nuestros algoritmos sobre una
implementacin en Java:

grado evalua_1 evalua_2 evalua_3 evalua_4


1 0 10 0 0
2 10 0 0 0
5 0 0 0 0
10 0 10 0 0
20 0 10 0 0
50 40 20 0 10
100 130 60 0 0
200 521 140 0 10
500 3175 400 10 10
1000 63632 1171 872 580

Problemas P, NP y NP-completos

Hasta aqu hemos venido hablando de algoritmos. Cuando nos enfrentamos a un problema concreto,
habr una serie de algoritmos aplicables. Se suele decir que el orden de complejidad de un problema es
el del mejor algoritmo que se conozca para resolverlo. As se clasifican los problemas, y los estudios
sobre algoritmos se aplican a la realidad.

Estos estudios han llevado a la constatacin de que existen problemas muy difciles, problemas que
desafan la utilizacin de los ordenadores para resolverlos. En lo que sigue esbozaremos las clases de
problemas que hoy por hoy se escapan a un tratamiento informtico.

Clase P.-

Los algoritmos de complejidad polinmica se dice que son tratables en el sentido de que suelen ser
abordables en la prctica. Los problemas para los que se conocen algoritmos con esta complejidad se
dice que forman la clase P. Aquellos problemas para los que la mejor solucin que se conoce es de
complejidad superior a la polinmica, se dice que son problemas intratables. Seria muy interesante
encontrar alguna solucin polinmica (o mejor) que permitiera abordarlos.

Clase NP.-

Algunos de estos problemas intratables pueden caracterizarse por el curioso hecho de que puede
aplicarse un algoritmo polinmico para comprobar si una posible solucin es vlida o no. Esta
caracterstica lleva a un mtodo de resolucin no determinista consistente en aplicar heursticos para
obtener soluciones hipotticas que se van desestimando (o aceptando) a ritmo polinmico. Los
problemas de esta clase se denominan NP (la N de no-deterministas y la P de polinmicos).

Clase NP-completos.-

Se conoce una amplia variedad de problemas de tipo NP, de los cuales destacan algunos de ellos de
extrema complejidad. Grficamente podemos decir que algunos problemas se hayan en la "frontera
externa" de la clase NP. Son problemas NP, y son los peores problemas posibles de clase NP. Estos
problemas se caracterizan por ser todos "iguales" en el sentido de que si se descubriera una solucin P
para alguno de ellos, esta solucin sera fcilmente aplicable a todos ellos. Actualmente hay un premio
de prestigio equivalente al Nobel reservado para el que descubra semejante solucin. y se duda
seriamente de que alguien lo consiga!
Es ms, si se descubriera una solucin para los problemas NP-completos, esta sera aplicable a todos
los problemas NP y, por tanto, la clase NP desaparecera del mundo cientfico al carecerse de
problemas de ese tipo. Realmente, tras aos de bsqueda exhaustiva de dicha solucin, es hecho
ampliamente aceptado que no debe existir, aunque nadie ha demostrado, todava, la imposibilidad de su
existencia.

Ejemplos de anlisis de complejidad en un algoritmo:


http://www.olimpiadadeinformatica.org.mx/material%20de%20estudio/cursos/analisis_de_complejidad.ht
m

Problema: Retomar la explicacin dada en el primer captulo

Tres Monjes y tres canbales se encuentran juntos con un bote el mismo lado del ro, el bote puede
transportar como mximo 2 personas. La nica manera segura de hacerlo es que en cada orilla del ro
nunca puedan haber mas canbales que Monjes, Como podemos trasladar a las 6 personas de un lado
del ro al otro?

Estado inicial: 3 canbales y 3 Monjes estn al lado izquierdo del ro El estado lo definirn 5 valores
(CI,MI,CD,MD,DEB).

CI: Canbales lado izquierdo

MI: Monjes lado izquierdo

CD: Canbales lado derecho

MD: Monjes lado derecho

DEB: Donde esta el bote -> si esta a la izquierda es 0 , si esta a la derecha es 1


por lo tanto el estado inicial es el siguiente (3,3,0,0,0)

Limitaciones: NO pueden haber ms canbales que Monjes en cualquiera de las dos orillas del ro -> CI

la restriccin dice: la cantidad de canbales del lado izquierdo debe ser menor o igual que la cantidad de
Monjes del lado izquierdo y la cantidad de canbales del lado derecho debe ser menor o igual que la
cantidad de Monjes del lado derecho.
Operaciones: hay 5 posibles operaciones que se pueden realizar siempre y cuando cumplan con las
limitaciones anteriormente descritas.

OP1: cruzar 1 canbal y 1 misionero

OP2: cruzar 2 canbales y 0 misionero

OP3: cruzar 0 canbal y 2 Monjes

OP4: cruzar 0 canbal y 1 misionero

OP5: cruzar 1 canbal y 0 misionero

Estado final: Los 3 canbales y los tres Monjes se encuentran al lado derecho del rio ->(0,0,3,3,1)
Solucin: la solucin correcta la podemos encontrar en 11 pasos, Como haran un programa de
bsqueda para encontrar la solucin de una manera ptima.

Actividades complementarias
A continuacin se presentan algunas actividades complementarias que pueden realizarse para afianzar
los conocimientos adquiridos en la primera undiad.

Captulo 1. Objetivos y aplicaciones de la IA

1. Defina con sus propias palabras "Inteligencia Artificial".


2. Nombre los cuatros enfoques de la "Inteligencia Artificial", y explique cada uno de ellos
brevemente.
3. En qu consiste el Test de Turing?
4. Indique algunos hechos relevantes de la historia de la IA.
5. Nombre 3 Aplicaciones de la IA.
6. Desarrolle la hiptesis del Sistema de Smbolos Fsicos que dice: "Un sistema de smbolos
fsicos tiene los medios suficientes y necesarios para la accin inteligente".
7. Escriba, de manera sucinta, las biografas de los padres de la inteligencia artificial, debe incluir
entre otros a: Marvin Minsky, John McCarthy, Claude Shannon , Nataniel Rochester, Allen
Newell y Herbert Simon.
8. (opcional)Lea el artculo original (Turing, A.M. Computing machinery and intelligence. Mind, 59:
433-460. 1950.) de Alan Turing sobre la IA. En este articulo Turing predijo que para el ao 2000
es probable que una computadora tenga 30% de oportunidad de aprobar una prueba de Turing
con duracin de cinco minutos aplicada por un evaluador inexperto. Considera razonable lo
anterior?
9. Son bien conocidos ciertos tipos de problemas inmanejables por los computadores, as como
otros que probablemente evidencian que ningn computador puede tomar
decisiones. Significa esto entonces que la IA es un imposible?.
10. Algunos consideran que la percepcin y las habilidades motoras son la parte ms importante de
la inteligencia y que las capacidades de "alto nivel" son ms bien parsitas (meros agregados a
las capacidades bsicas). Es un hecho que la mayor parte de la evolucin y del cerebro se han
concentrado en la percepcin y las habilidades motoras, en tanto se ha encontrado que en la IA
tareas como juegos e inferencia lgica resultan ms sencillas, en muchos sentidos, que percibir
y actuar en el mundo real. Considerara usted que ha sido un error la concentracin tradicional
de la IA en las capacidades cognoscitivas de alto nivel?.
11. Desarrollar un mapa conceptual sobre inteligencia artificial, donde se establezcan los conceptos
y sus relaciones.
Captulo 2. Agentes inteligentes

1. Defina con sus palabras un Agente Inteligente. Dentro de qu enfoque de la IA se circunscriben


los Agentes Inteligentes. Por qu?
2. Nombre y explique los elementos de un Agente Inteligente y sus Interaccin.
3. Mencione y explique al menos 5 caractersticas de los Agentes. De ejemplos.
4. Cul es la estructura de un Agente Inteligente?
5. En qu consiste el anlisis PAMA?
6. Desarrolle un anlisis PAMA de un Agente de un sistema medidor de los ritmos cardiacos de un
paciente
7. Desarrolle un anlisis PAMA de un Agente buscador de Internet.
8. Desarrolle un anlisis PAMA de un Operador de Telfono automtico.
9. Mencione y explique 3 tipos de agentes. En qu se diferencian?
10. Mencione y explique 4 propiedades de los ambientes.
11. Analice el ambiente de los puntos 6, 7 y 8.

Captulo 3: Complejidad de los problemas

1. Desarrolle un anlisis de complejidad detallado del peor caso (O-grande) del algoritmo de
ordenamiento burbuja.
2. Sealar cul es la complejidad de T1(n) = 3nlogn, T2(n) = 2n +n3 +25 y T3(n,k) = k +n con k n.
Ordenar de menor a mayor las complejidades resultantes. Desarrollar una tabla en el que
indique el tiempo de ejecucin requerido en una maquina capaz de ejecutar 109 pasos de
programa por segundo (1000 MIPS) para T1, T2 y T3.
3. Explique en cul es la diferencia entre problema abierto y cerrado.
4. Explique en qu consiste las clases P, NP y NP completo.
5. Seale y explique 3 problemas NP. Por qu se consideran problemas NP?

Actividades adicionales:

El problema del vendedor viajero, tambin conocido como TSP consiste en que se tienen n
ciudades y el vendedor desea visitar todas las ciudades pasando por ellas una nica vez al
menor costo posible. Es decir se desea hacer un circuito hamiltoniano de menor costo. Se
asume que todas las ciudades estn conectadas entre ellas. Responder:

a) El problema del TSP es de clase P o NP. Justifique.


b) Dada n ciudades Cuntas rutas posibles existen sabiendo que se parte de la ciudad 1 y se llega a la
misma ciudad?.
c) Desarrollar un algoritmo que encuentre una posible solucin (No determinista).
d) Desarrollar un algoritmo determinista que evale la solucin.
e) Entregue una cota superior en inferior al problema del TSP.
f ) Suponiendo que existen 5, 10, 100, 500 ciudades, y que se usa un algoritmo que deba probar todas
las soluciones posibles, es decir, de bsqueda exhaustiva, para encontrar la solucin de menor costo.
Cuanto tiempo tomara en un computador evaluar todas las soluciones, suponiendo que el algoritmo
tarda 10-3 segundos en evaluar cada solucin?. Graficar.
Buscar un problema NP y realizar un estudio como el de la pregunta 1.
(Ejemplos: time tabling, coloration de grafos, VRP, biparticin de grafos). Explique claramente en qu
consiste el problema escogido.

Desarrollar los mtodos de bsqueda en profundidad y en anchura en un grafo dirigido. Por


ejemplo, usar un mapa de carreteras e ir de una ciudad a otra.

Resolver problemas de juegos clsicos de la IA, empleando un lenguaje simblico: gato, damas
chinas, el agente viajero, Monjes y canbales, el problema de las jarras. (Si se emplea Jess, se
pueden implementar en el algn sitio servidor WEB).

Вам также может понравиться