Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación...

86
Cómo ser artificialmente Inteligente Un libro de Agentes y Lógica Computacional escrito por el Profesor Emérito Robert A. Kowalski <[email protected] > Imperial College, Reino Unido Traducido, con permiso del Autor, por Jacinto Dávila <[email protected] > a partir del texto original: (How to be artificially intelligent) http://www-lp.doc.ic.ac.uk/~rak/rak.html (Universidad de Los Andes, Venezuela). (version preliminar, Enero 2006) Por favor, reportar errores y omisiones a [email protected] -------- Contenido:

Transcript of Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación...

Page 1: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Cómo ser artificialmente Inteligente

Un libro de Agentes y Lógica Computacional

escrito por el

Profesor Emérito Robert A. Kowalski <[email protected]>

Imperial College, Reino Unido

Traducido, con permiso del Autor, por Jacinto Dávila <[email protected]>

a partir del texto original:

(How to be artificially intelligent)

http://www-lp.doc.ic.ac.uk/~rak/rak.html

(Universidad de Los Andes, Venezuela).

(version preliminar, Enero 2006)

Por favor, reportar errores y omisiones a [email protected]

--------

Contenido:

Page 2: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Capítulo 1. Qué hacer en caso de

emergencia

Imagine que Ud viaja en el metro de Londres (o el de cualquier ciudad) y

repentinamente siente una mano ajena en uno de sus bolsillos. Para su fortuna, ve Ud un

aviso que le dice exactamente qué debe hacer.

Emergencias

Pulse el botón de la alarma

para alertar al conductor.

El conductor se detendrá

si alguna parte del tren está dentro de una estación.

de lo contrario, el tren continuará hasta la siguiente estación,

donde será más fácil conseguir ayuda.

Se penalizará con 50 libras

el uso inapropiado.

El Aviso de Emergencia del Metro de Londres

entendido como un programa lógico

El propósito del Aviso de Emergencia es el de regular la conducta de los pasajeros en

caso de emergencias. En este sentido, funciona como un programa, no para controlar un

computador, sino para controlar a las personas.

Para cumplir con su propósito, el Aviso no debe ser ambigüo, de tal forma que no se

pueda mal-interpretar el significado establecido. Además, debe ser fácil de entender, de

manera que el lector le pueda procesar con el mínimo de esfuerzo. Al igual que un

programa para un computador, debe también ser eficiente, alcanzando su propósito

(obtener ayuda, en este caso) tan rápido como sea posible.

La naturaleza computacional del Aviso de Emergencia es más fácil de notar en a primer

oración.

Pulse el botón de la alarma

para alertar al conductor.

Esta oración tiene la forma de un procedimiento de reducción de metas:

Reduzca la meta de alertar al conductor

a la sub-meta de presionar el botón de alarma.

En general, buena parte de nuestra comunicación entre humanos puede ser entendida en

tales términos computacionales, en los que un humano intenta programar a otros, para

obtener una respuesta que desea. En este caso, la gerencia del Metro intenta programar a

los pasajeros para que se comporten con efectividad y eficiencia en caso de emergencia.

Page 3: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Esta interpretación de la comunicación humana puede ser indignante a primera vista,

porque parece contemplar a la gente como meras máquinas. Esa no es mi intención. Lo

que intento proponer es que el pensar en las personas como agentes computacionales

puede, algunas veces, ayudarnos a formular formas de comunicarnos con ellas en

términos más efectivos y más eficientes. Más efectivos porque nuestros "programas"

servirán mejor a nuestras intenciones. Más eficientes porque el receptor podrá procesar

y reaccionar al programa con menos esfuerzo.

La lógica de la segunda y tercer oración del Aviso de

Emergencia

La comunicación humana, sin embargo, también puede ser comprendida en términos

lógicos. Así entendida, una comunicación es una colección de oraciones con una forma

subyacente que le proporciona su significado. Para entender una oración en lenguaje

natural, el lector o quien escucha tiene que descifrar su estructura superficial para

extraer su significado. Necesita luego asimilar su significado para acomodarlo en su red

de creencias. Estas creencias incluyen tanto creencias generales fundamentales como

aquellas obtenidas de oraciones anteriores en la misma comunicación.

Luego de extraer esa colección de significados, el receptor de la comunicación puede

usarlos para resolver problemas que surjan en su ambiente y en los que esos

significados sean relevantes. En ese sentido, las oraciones del lenguaje natural son como

un programa para el computador. El proceso de extraer los significados lógicos de las

oraciones es como el compilar un programa de su forma externa a su forma interna, y el

proceso de usar esos significados para resolver problemas es como el ejecutar el

programa compilado.

En el ejemplo del Aviso de Emergencia, la relación entre la forma externa de la oración

en Español (o en Inglés) y su forma lógica interna es más evidente en los casos de la

segunda y la tercera oración del Aviso, gracias mayormente a su uso de los términos

lógicos como "si", "alguna" y "de lo contrario".

Uno puede verse tentado a afirmar que el Aviso es tan fácil de entender debido a que la

estructura superficial de su forma externa es tan cercana a la forma interna del

significado pretendido para esas oraciones.

De hecho, la segunda y la tercera oración son más ambigüas de lo que parece a primera

vista. En particular, la segunda oración no dice claramente que es lo que el conductor

dejará de hacer (se detendrá, de qué?). Es poco probable que sea, por ejemplo, que:

El conductor dejará de causar la emergencia si alguna parte del tren está dentro de una estación.

En lugar de eso, es casi seguro que signifique que:

El conductor detendrá el tren en una estación si alguna parte del tren está dentro de esa estación.

Sin embargo, incluso esta interpretación no termina de capturar el significado

pretendido para la oración. Si se le ubica en el contexto de la primer oración, la segunda

oración tiene una condición adicional implícita, es decir, que el conductor ha sido

Page 4: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

alertado acerca de una emergencia. Por lo tanto, el significado pretendido de la segunda

oración es:

El conductor detendrá el tren en una estación si él está al tanto de una emergencia y alguna parte del tren está dentro de esa estación.

Sin la condición adicional, la oración significa literalmente que el conductor detendrá el

tren cuando quiera que el tren esté en una estación, haya o nó una emergencia. Si ese

fuese el caso, un tren nunca podría salir de la estación una vez que llegara a ella. Para

entender la oración, el lector del Aviso necesita tanto conocimiento contextual general

acerca del cómo se comportan normalmente los conductores de trenes así como

conocimiento específico del contexto de las oraciones anteriores en el Aviso.

Siguiendo con nuestra interpretación de la segunda oración, es claro ahora que el significado

pretendido para la tercera oración es:

El conductor detendrá el tren en la siguiente estación y allí se puede brindar ayuda mejor que entre las estaciones. si ha sido alertado de una emergencia y ninguna parte del tren está en una estación

En el lenguaje natural, es costumbre omitir condiciones tales como “parte del tren está

en una estación”, que se pueden obtener del contexto. En lógica formal, sin embargo, las

oraciones no pueden confiarse al contexto y deben ser planteadas con claridad.

Puesto que las oraciones en lógica formal no pueden confiarse al contexto, Ud bien

podría tomar una colección de oraciones escritas en lógica formal, arrojarlas al aire,

como con un mazo de cartas, y atraparlas en cualquier orden. La colección resultante de

oraciones tiene el mismo significado que la colección en el orden original.

Así que, en teoría, si este libro fuese escrito es forma puramente lógica, Ud podría leerlo

al revés, al derecho o en cualquier orden y, en todo caso, tendría el mismo significado.

De hecho, en buena medida, el trabajo de escribir un libro como este está en encontrar

un orden apropiado para presentar las ideas, de manera que sean tan fáciles de entender

como sea posible.

Labor

La primera oración del Aviso de Emergencia vista

como un Programa Lógico.

La primera oración del Aviso ha sido escrita en forma de un procedimiento, lo cual

oculta su forma lógica subyacente. En general, un procedimiento para reducir metas

con la forma:

Reduzca meta a sub-metas.

oculta una implicación lógica como: meta si sub-metas.

Page 5: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

La conducta reductora de metas de ese procedimiento pueden obtenerse de esta

implicación razonando hacia atrás:

Para concluir que una meta puede ser resuelta,

muestre que las sub-metas pueden ser resueltas

De manera que la primera oración del Aviso de Emergencia tiene esta forma lógica

oculta:

Ud alerta al conductor

si pulsa el botón de la señal de alarma.

El uso del razonamiento hacia atrás para convertir implicaciones en procedimientos de

redución de metas se conoce como programación lógica. Las implicaciones así

dispuestas son llamadas programas lógicos. La programación lógica fue bastante

popular durante un tiempo en la década de los 1980 y luego cayó en desuso. Una de las

metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para

hacer computación, sino también para el razonamiento humano.

El razonamiento hacia atrás contrasta con el razonamiento hacia adelante que,

probablemente, es más familiar para más personas. Dada una implicación con la forma:

si condiciones entonces conclusión.

y una colección de oraciones que puedan compararse y aparearse con las condiciones, el

razonamiento hacia adelante deriva la conclusión como una consecuencia lógica de las

condiciones.

Cuando debemos usar razonamiento hacia atrás o hacia adelante es uno de los asuntos más

importantes investigados en este libro[1].

La cuarta oración del Aviso de Emergencia como una

restricción

En los lenguajes naturales, las implicaciones frecuentemente se ocultan bajo la

superficie, bien en forma de procedimientos, bien en forma declarativa. Por ejemplo, la

última oración del Aviso es una oración declarativa con la siguiente forma lógica

subyacente:

Ud obtiene una multa de 50 libras

si pulsa el botón de alarma cuando no es apropiado.

Razonando hacia atrás, esta implicación se convierte en el procedimiento:

Para obtener una multa de 50 libras,

pulse el botón de alarma cuando no es apropiado.

Page 6: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Es poco probable que un pasajero quiera ganarse una multa de 50 libras y, por tanto, es

poco probable que el pasajero quiera razonar hacia atrás para reducir esa tan poco

atractiva meta a sus sub-metas.

Es más probable que el pasajero use el razonamiento hacia adelante para derivar que

usar la señal de alarma cuando no es apropiado tendrá consecuencias no deseables. Así

que oración actúa como una restricción sobre la conducta del pasajero, antes que como

un generador.

Puesto que los procedimientos de reducción de metas restringen las implicaciones al

razonamiento hacia atrás, la forma procedimental de esa oración no es la apropiada.

Esto explica porque esa oración es escrita declarativamente y no en forma de

procedimiento.

De hecho, sólo la primera oración del Aviso de Emergencia es escrita en forma

procedimental, y sólo esta oración del Aviso funciona como un programa normal, para

invocar la conducta deseada en los pasajeros del tren. La cuarta oración, por su parte,

funciona como una restricción, para evitar conductas indeseadas.

Las oraciones segunda y tercera, por otro lado, describen parte de un programa que debe

ser ejecutado por un agente diferente: el conductor del tren. Estas oraciones son escritas

declarativamente y no procedimentalmente, precísamente porque deben ser ejecutadas

por un agente diferente, no por el agente que observa la emergencia en primer lugar.

Programas con propósitos

Se sobreentiende que el propósito[2] (o meta) del Aviso es explicar a los pasajeros como pueden

obtener ayuda en una emergencia. Esta es la razón para que la tercera oración incluya la frase: donde será más fácil conseguir ayuda.

Esta frase explica el porqué el conductor no detiene el tren inmediatamente cuando no

está en una estación.

La primera oración del Aviso podría ser reescrita con tres oraciones, para hacer

explícito su propósito:

Si ocurre una emergencia, consiga ayuda.

Ud consigue ayuda si alerta al conductor.

Ud alerta al conductor si pulsa el botón de la señal de alarma.

Aquí, para variar, he escrito las oraciones segunda y tercera como programas lógicos.

Usados para razonar hacia atrás, se comportan como los procedimientos:

Para conseguir ayuda, alerte al conductor.

Para alertar al conductor, pulse el botón de la señal de alarma.

La primera oración también tiene la forma de una implicación. Pero su conclusión es

imperativa (consiga ayuda) antes que declarativa (Ud conseguirá ayuda). Es como una

Page 7: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

regla de condición-acción, pero más general, puesto que su conclusión es una meta, en

lugar de ser sólo una acción.

Las implicaciones con conclusiones imperativas (incluyendo reglas de condición-

acción) pueden ser usadas para “razonar hacia adelante”, como las implicaciones

lógicas. Sin embargo, aquellas no tienen todas las propiedades de las implicaciones

lógicas con conclusiones declarativas. Las implicaciones lógicas pueden ser usadas para

razonar hacia adelante y hacia atrás, pero las implicaciones con conclusiones

imperativas sólo pueden ser usadas para razonar hacia adelante. Las oraciones

declarativas pueden ser ciertas o falsas. Las oraciones imperativas sólo pueden ser

obedecidas o des-obedecidas. Veremos en capítulos posteriores como las oraciones

imperativas pueden ser transformadas a formas declarativas asignándoles el estatus de

metas y distinguiendolas de las creencias.

¿Hacia donde vamos?

Este capítulo pretende dar una impresión general del resto del libro. Muestra, con un

ejemplo, como las oraciones en Español (y también en el original en Inglés) pueden ser

vistas tanto en términos lógicos como en términos computacionales. También muestra

como estas dos visiones se integran en la programación lógica, un caso particular de la

lógica computacional, tópico de este libro.

La lógica computacional ha sido usada para desarrollar aplicaciones para computadores,

especialmente en la Inteligencia Artificial. Sin embargo, en este libro me concentro en

las potencialidades de su uso para que las personas mejoren su propias habilidades de

razonamiento y comunicación.

La lógica tradicional fue, originalmente, un modelo del razonamiento humano, que ha

caído en descrédito en los últimos años. Otros modelos tales como las reglas de

condición-acción han tomado buena parte de su espacio. Uno de los propósitos

principales de este libro es mostrar como las reglas de condición-acción y la lógica

pueden ser reconciliadas y combinadas.

Una buena parte del problema con la lógica tradicional es su falta de consideración para

con una cantidad de asuntos muy importantes para el razonamiento de lo humanos.

Entre tales cosas, la necesidad de:

distinguir entre metas y

creencias. estar abierta a cambios en el mundo. vincular el pensar acerca de las acciones con el hecho de realizarlas vincular el uso de la lógica para pensar con el uso de la probabilidad y de la utilidad

para decidir cuál acción realiza. razonar por omisión y con reglas con excepciones. combinar argumentos tanto a favor como en contra de una conclusión.

Veremos cómo la lógica computacional contempla estos problemas en los siguientes capítulos. Además, compararemos y trataremos de reconciliar la lógica computacional con puntos de vista

rivales acerca del razonamiento humano, tales como: Reglas de condición-acción.

Page 8: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Búsqueda. Modelos mentales. Orientación a objetos. Esquemas y estereotipos. Redes neuronales. .

Finalmente, investigaremos la aplicación de la lógica computacional a dos áreas mayores:

Razonamiento legal. Comunicación humana.

El problema que este libro contempla puede ser ilustrado de esta manera:

[1] Es normal en la lógica formal el escribir implicaciones en dirección hacia adelante,

así: si condiciones entonces conclusiones. Esta es la razón por la que el razonamiento

desde las condiciones y hacia las conclusiones es llamado razonamiento hacia adelante.

Lo cierto es que las implicaciones lógicas se pueden usar para razonar tanto hacia

adelante como hacia atrás, no importa cómo estén escritas. Sin embargo, solemos

escribirlas de una manera en lugar de la otra cuando tenemos una dirección preferida en

mente.

[2] Los términos “meta” y “propósito” son intercambiables. Otros términos que algunas

veces tienen el mismo significado son “motivación”, “razón”, “interes”, “deseo”,

“objetivo”, “misión”, “objeto”, “blanco”, etc (N.T. Hemos agregado algunos términos

en la lista, respecto al original en inglés, i.e. “blanco” en el sentido de “tiro al blanco”

que se aborda con la palabra inglesa “target”. Es notable que meta y propósito son

también intercambiables en Español, aunque en el uso cotidiano “propósito” es más

trascendente. Otro término que se confunde o intercambia con “meta” y “propósito”,

especialmente con este último, es “intención”).

Page 9: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Capítulo 2 La Zorra y el Cuervo

Algunas personas son proactivas. Les gusta planificar por adelantado, prever obstáculos

y llevar una vida ordenada. Otra gente es reactiva. Les gusta permanecer abiertos a lo

que ocurre alrededor, aprovechar nuevas oportunidades y ser espontáneos. La mayoría

de las personas son tanto proactivos como reactivos, en momentos diferentes y en varios

niveles.

En este capítulo, veremos cómo el pensamiento proactivo puede ser modelado usando la

lógica para razonar acerca del mundo y para reducir metas a sub-metas. En el siguiente

capítulo, veremos cómo el pensamiento reactivo puede ser modelado con reglas de

condición-acción. Y, en el capítulo subsiguiente, cómo los dos tipos de pensamiento se

pueden combinar reformulando las reglas de condición-acción en forma lógica.

La Zorra y el Cuervo

Es muy probable que el lector conozca la antigua fábula Griega, atribuida a Esopo,

según la cúal una zorra proactiva engaña a un cuervo reactivo. El cuento comienza,

inocentemente, con un cuervo descansando en la rama de un árbol y sosteniendo un

queso en su boca. Aparece entonces la zorra, que quiere comerse el queso.

Page 10: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

En esta versión de la historia, veremos el cuento desde el punto de vista de la zorra. Para

modelar su forma proactiva de pensar, representaremos sus creencias y sus metas en

forma lógica.

Meta Yo tengo el queso.

Creencias El cuervo tiene el queso.

Un animal tiene un objeto

si el animal está cerca del objeto

y el animal toma el objeto.

Yo estoy cerca del queso

si el cuervo tiene el queso

y el cuervo canta.

El cuervo canta si Yo alabo al cuervo.

Como pueden ver, la zorra no sólo es una lógica, sino también una física. En particular,

la creencia acerca de su proximidad al queso cuandoquiera que el cuervo cante combina

una declaración simple sobre su ubicación con el conocimiento de las leyes de la

gravedad.

Razonando informalmente:

La zorra sabe que si el cuervo canta, tendrá que abrir su pico y entonces el queso caerá a

tierra junto al árbol. La zorra también sabe que, puesto que ella está junto al árbol,

estará entonces cerca del queso. De esta forma, la zorra sabe que estará cerca del queso

si el cuervo canta.

La zorra también es una psicóloga conductista. Como conductista, está únicamente

interesada en la conducta externa, de entrada-salida, del cuervo y no en los mecanismos

internos al cuervo que podrían estar causando su conducta. De hecho, aunque ella

representa sus propias creencias acerca del cuervo en términos lógicos, no asume que el

cuervo usa lógica para representar sus creencias acerca del mundo. Por lo que concierne

a la zorra, la conducta del cuervo bien podría ser generada por medio de reglas de

condición-acción sin forma lógica. O, quizás, podrían estar “cableadas” directamente en

su cuerpo, sin ni siquiera pasar por su cerebro.

Justo como vimos con las creencias de la zorra acerca de su proximidad al queso si el

cuervo cantaba, las creencias de la zorra acerca de la conducta del cuervo bien podrían

derivarse de otras creencias suyas – Quizás a partir de unas creencias más generales

acerca del cómo un agente reactivo e ingenuo responde a las alabanzas, sin pensar en las

posibles consecuencias de sus acciones.

La zorra, además, está dotada con el ordinario sentido común. Sabe que un animal

tendrá un objeto si está cerca del objeto y lo recoge (lo toma). Sabe la zorra que esta es

una ley general, que se aplica universalmente a cualquier animal y a cualquier objeto

(aunque pareciera no entender que la ley también se aplica a los robots, a menos que

crea que los robots son una especie de animal). Sabe también, la zorra, suficiente lógica

Page 11: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

como para instanciar la ley general y aplicarla al caso particular en el que la zorra es el

animal y el queso el objeto.

Las creencias de la zorra como un Programa Lógico

Las creencias de la zorra, no sólo tienen forma lógica, sino que también tienen la forma

de un programa lógico. Como vimos antes, un programa lógico es una colección de

implicaciones con la forma:

Conclusión si Condiciones.

Tanto la conclusión como las condiciones se escriben en forma declarativa.

Las implicaciones se escriben hacia atrás, la conclusión primero, para indicar se pueden

usar para razonar hacia atrás, de las conclusiones a las condiciones. Como consecuencia

de razonar hacia atrás, cada implicación se comporta como un procedimiento reductor

de metas[1]:

Para derivar la Conclusión, derive las Condiciones.

Aún los “hechos”, que registran observaciones, tales como la creencia de que el cuervo

tiene el queso, pueden ser considerados como implaciones que tienen una conclusión,

pero no tienen condiciones:

Conclusión si nada.

Estos hechos también se comportan como procedimientos:

Para derivar la Conclusión, [no] haga nada.

(N.T. El [no] lo usamos para acomodar la oración al Español, en el que usamos la doble

negación en forma opuesta al sentido formal en Lógica).

Por lo tanto, las creencias de la zorra pueden ser usadas como una colección de

procedimientos:

Para [ob]tener un objeto,

esté (ubíquese) cerca del

objeto

y tome el objeto.

Para [ob]tener el queso,

verifique que el cuervo tiene el queso

y haga que el cuervo cante.

Para hacer que el cuervo cante,

alabe al cuervo.

Para verificar que el cuervo tiene el queso, [no] haga nada.

Estos procedimientos pueden ser aplicados, uno después del otro, para reducir la meta

superior:

Page 12: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Yo tengo el queso.

a las sub-metas con las dos acciones:

Yo alabo al cuervo y Yo tomo el queso.

Juntas, estas dos acciones constituyen un plan para alcanzar la meta original.

Grafos de reducción de metas

La reducción que hace la zorra trocando su meta original en las dos acciones sub-metas,

puede ser representada con la ayuda de un grafo en el cual las implicaciones con la

forma:

Conclusión if Condición1 and Condición2; son representadas por sub-grafos con la forma

siguiente:

El grafo tiene la forma de un árbol al revés, con la meta superior en la llamada raíz del

árbol (que está al tope de la figura):

Page 13: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Para que la zorra pueda resolver la meta superior es suficiente si “crece” el árbol,

comenzando desde la raíz, reduciendo metas a sub-metas hasta que no es posible reducir

más. Si todas las metas en las “hojas” del árbol son acciones irreductibles, entonces

estas acciones constituyen un plan para resolver la meta superior.

Razonamiento hacia atrás

La operación de resolver una meta a una sub-meta pueder también ser vista, en términos

lógicos, como razonamiento hacia atrás con una implicación, apareando la meta con la

conclusión de la implicación y derivando las condiciones de la implicación como sub-

metas.

Por ejemplo, la meta superior:

Page 14: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Yo tengo el queso.

se aparea con la conclusión de la implicación general:

Un animal tiene un objeto

si el animal está cerca del objeto

y el animal toma el objeto.

Razonando hacia atrás podemos obtener las dos sub-metas:

Yo estoy cerca del queso y Yo tomo el queso.

Reemplazando por los términos específicos “Yo” y “el queso”, los más generales “el

animal” y “el objeto” respectivamente (N.T. Noten que en Español tenemos que lidiar

con algunos otros ajustes morfológicos, como la conjugación verbal. Así, en el apareo

anterior, el “toma” se convierte en “tomo” y el “está” en “estoy”). .

La segunda de estas dos sub-metas es una acción que no corresponde con la conclusión

de ninguna implicación. Sólo puede ser resuelta si se le ejecuta exitosamente. La

primera sub-meta, por su parte, puede ser reducida a otras sub-metas con tres pasos más

de razonamiento hacia atrás.

El resultado final de esta cadena de razonamiento hacia atrás es una prueba lógica de

que la zorra tiene el queso si alaba al cuervo y toma el queso. La prueba tiene la misma

estructura de árbol que el grafo de reducción de metas que vimos antes.

En lógica tradicional, es más común mostrar las pruebas en la dirección hacia adelante.

En este caso, la prueba tradicional sería algo como esto:

Yo alabo el cuervo.

Por lo tanto El cuervo canta. El cuervo tiene el queso.

Por lo tanto Yo estoy cerca del queso.

Yo tomo el queso.

Por lo tanto Yo tengo el queso.

¿Fin de la historia?

Para un fundamentalista de la lógica, este sería el fin del cuento. No hay diferencia entre

el mundo de la zorra y sus creencias sobre ese mundo, y no hay diferencia entre el plan

de la zorra para obtener el queso y el que ya lo tenga.

Sin embargo, el sentido común nos dice que hay más en la vida que el sólo pensar – y,

quizás, más en el pensar que la mera lógica. Además de pensar, un agente inteligente

necesita observar los cambios en el mundo y, quizás como respuesta, actuar para

cambiarlo. Y podría haber otras maneras de pensar – maneras que no usen la lógica e

incluso quizás maneras que no usan ninguna representación mental del mundo.

Page 15: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Regresaremos a esta historia y a la discusión de estos temas en los siguientes capítulos.

Pero antes:

¿Cuál es la moraleja del cuento?

Se supone que la fábula de Esopo tiene un propósito – Una lección que nos dice que no

es bueno confiar en las palabras y en las acciones de otro agente, sin antes tratar de

entender sus metas e intenciones. O, puesto aún más simple, que antes de hacer algo,

debes pensar acerca de sus posibles consecuencias.

El cuervo en el cuento responde a las alabanzas de la zorra espontáneamente – sin

pensar, se podría decir. Un cuervo más inteligente reflexionaría sobre las acciones que

pretende, antes de realizarlas, para establecer si acaso pudieran tener consecuencias no

previstas o no deseables.

Si tan sólo el cuervo supiera lo que sabe la zorra, podría razonar como sigue:

Yo quiero cantar.

Pero si canto, la zorra se acercará (estará cerca) del queso.

Si la zorra está cerca del queso y lo toma (al queso),

entonces la zorra tendrá el queso.

Quizás la zorra quiere el queso y, entonces, lo tomaría.

Pero si la zorra toma el queso, yo no tendré (más) el queso.

Así que, puesto que Yo quiero el queso, Yo no canto.

(N.T. En Español, la variedad de los tiempos y conjugaciones verbales es mayor y

perturba el aparear de los términos y de los verbos al razonar).

Note que esta línea de razonamiento que traza el cuervo usa varias creencias que tiene

también la zorra, pero los usa hacia adelante, no hacia atrás como en aquel caso.

Investigaremos este uso dual de las creencias para razonar hacia adelante o hacia atrás,

dentro de dos capítulos.

Entretanto, note que, aunque el usar la lógica podría no ser siempre la forma más natural

de pensar, podría ayudarnos (y también al cuervo) algunas veces a pensar y

comportarnos con más efectividad.

Resumen

La visión de la lógica en la mente de un agente inteligente, como hemos visto en este

capítulo, es algo así:

Page 16: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Esa visión será enriquecida mucho más en los siguiente capítulos.

[1] En Español, hay una transformación morfológica considerable al pasar del

procedimiento a la forma declarativa. Los procedimientos, por ejemplo, se suelen

plantear con el verbo en infinitivo. En la forma declarativa este se usa muy poco.

Page 17: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Capítulo 3. El Piojo y el explorador de

Marte

El Fundamentalismo Lógico, que concibe la vida como puro pensamiento sin acción, le

ha dado a la lógica una mala reputación. Además, ha ocultado a su cercano familiar, la

Lógica Tolerante, que reconoce que la lógica es sólo una forma de pensar y que el

pensar no lo es todo.

La anti-tesis del Fundamentalismo Lógico es el Conductismo Extremo, el cual niega

cualquier forma de Vida Mental y que, por el contrario, ve la vida completamente en

términos de conducta. El Conductismo Extremo, a su vez, puede ser fácilmente

confundido con el modelo del pensar que constituyen las reglas de condición-acción.

Conductismo

Imagine que Ud está analizando la conducta del termostato, que regula la temperatura

de un cuarto calentándolo cuando está muy frio y enfriándolo cuando está muy caliente.

Ud bien podría describir la conducta de entrada-salida del termostato en forma de

condiciones-acciones:

Si la temperatura actual es T grados y la temperatura deseada es T’ y T < T’ - 2°

entonces el termostato aumenta la temperatura.

Si la temperatura actual es T grados y la temperatura deseada es T’ y T > T’ + 2°

entonces el termostato reduce la temperatura.

Pero seguramente Ud no le atribuiría al termostato una mente que manipula tales

descripciones para generar su conducta.

Tal como Ud ve el termostato en este ejemplo, el conductista ve a los agentes en

general.

Por tanto, en el cuento de la zorra y el cuervo, un conductista, incapaz por principios de

considerar el estado mental, interno de la zorra, explicaría su conducta de la misma

forma en que la zorra explica la conducta del cuervo:

Si la zorra ve que el cuervo tiene un queso entonces la zorra alaba al cuervo. Si la zorra está cerca del queso entonces la zorra toma el queso.

La descripción conductista de la zorra comienza y termina la conducta de la zorra

observable “desde afuera”. El conductista justifica su rechazo a la atribución de

cualquier actividad mental interna a la zorra, en el hecho de que es imposible verificar

tales atribuciones por el supuesto método científico de la observación y la

experimentación.

De acuerdo con el conductista, la zorra es un agente puramente reactivo, que

simplemente responde a los cambios en el mundo a su alrededor. Si, durante el proceso

Page 18: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

de reaccionar a esos cambios, la zorra obtiene el queso, entonces este resultado es

meramente un efecto indirecto “emergente”, nunca uno causado deliberadamente por la

zorra gracias a su razonar proactivo y orientado a una meta.

El conductista tampoco ve ninguna razón para distinguir entre la conducta del

termostato y la de un humano. El conductista podría usar una implicación

Si un pasajero observa una emergencia en el metro,

entonces el pasajero pulsa el botón de la señal de alarma.

Para describir la conducta de un pasajero del metro. Pero el uso de esta implicación no dice

nada acerca de cómo genera el pasajero esa conducta. Por lo que concierne al conductista,

pulsar el botón de la señal de alarma cuando hay una emergencia podría ser simplemente un

instinto, cuyo propósito el pasajero ignora completamente.

El conductismo es apoyado circunstancialmente por el Darwinismo, puesto que este

sostiene que los organismos evolucionaron a través de adaptaciones frente al ambiente,

en lugar de por un proceso de auto-mejora dirigido a metas.

El conductismo también comparte con las reglas de condición-acción esa orientación a

modelar la conducta como reacciones a cambios en el ambiente. Sin embargo, mientras

el conductismo restringe su atención a las descripciones de la conducta, las reglas de

condición-acción son usadas en los llamados sistemas de producción para generar

conductas.

Sistemas de Producción

Son pocos los psicólogos que, hoy en día, suscriben incluso las versiones moderadas del

conductismo. Por el contrario, la mayoría se adhiere al punto de vista de las ciencias

cognitivas, según el cual, los agentes inteligentes realizan cierta forma de pensar que

bien puede ser entendida como la aplicación de procedimientos computacionales a

representaciones mentales del mundo.

Paul Thagard declara en su libro La Mente: una introducción a la Ciencia Cognitiva

(Mind: Introduction to Cognitive Science) que, entre los varios modelos del pensar

investigados en las ciencias cognitivas, los sistemas de producción son “los que tienen

más aplicaciones en psicología” (página 51). Steven Pinker en Cómo trabaja la mente

(How the Mind Works) también utiliza sistemas de producción como su principal

ejemplo de un modelo computacional de la mente (página 69).

Un sistema de producción es una colección de reglas de condición-acción imbuídas en

el componente pensante del ciclo observación-pensamiento-decisión-acción de un

agente.

Las reglas de condición-acción (también llamadas reglas de producción) son muy

parecidas a las descripciones de conducta de los conductistas. Sin embargo, puesto que

son usadas por cada agente internamente para generar su conducta, sus conclusiones

pueden ser expresadas en modo imperativo en lugar del declarativo.

Si (estas) condiciones (se cumplen) entonces haga (estas) acciones.

Page 19: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Los sistemas de producción fueron inventados en la década de 1930 por el lógico Emil

Post, pero fueron propuestos como un modelo computacional de la inteligencia humana

por Alan Newell.

El ciclo del Sistema de Producción

Los sistemas de producción incorporan las reglas de condición-acción en ciclo de

observación-pensamiento-decisión-acción del agente:

Para “ciclar” o para que cicle, observe el mundo, piense, decida cuáles acciones realizar, actúe, cicle de nuevo.

El pensar es, así, una forma de razonamiento hacia adelante, que comienza con una

observación que se aparea con una de las condiciones de una regla de condición-acción.

En tales casos, se dice que la observación dispara la regla de condición-acción. Tal

como en lógica, si las restantes condicciones también se verifican, se deriva la

conclusión.

En lógica, la conclusión es una consecuencia inescapable de las condiciones. Sin

embargo, en los sistemas de producción, se trata solamente de una recomendación de

realizar las acciones que están en la conclusión. Si sólo una de las reglas es disparada

por las observaciones, entonces las recomendación es, de hecho, una orden inequívoca.

Pero, si más de una regla es disparada, el agente debe escoger entre las varias

recomendaciones, para decidir cuál acción realizar. Está decisión es normalmente

etiquetada como resolución de conflicto, puesto que las recomendaciones pueden

contradecirse unas a otras.

Por ejemplo:

Si alguien me ataca, responde igual.

Si alguien me ataca, consigue ayuda.

Si alguien me ataca, trata de escapar.

Decidir que hacer, cuando hay conflicto entre las recomendaciones, puede ser más

difícil que generar las recomendaciones. Volveremos al problema de decisión más

adelante.

Sistemas de Producción sin ninguna representación del

mundo

En el caso más simple, el estado mental del agente podría consistir únicamente de reglas

de producción, sin ninguna representación mental del mundo. En tal caso, las

condiciones de una regla se verifican por apareo directo con las observaciones actuales

Page 20: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

del agente. En este caso, se puede decir (y se ha dicho) que el mundo sirve como su

propia representación: Si quieres averiguar acerca del mundo, no pienses al respecto,

sólo observa!.

Observar el estado actual del mundo es mucho más fácil que tratar de predecirlo a partir

de las observaciones pasadas y suposiciones acerca de la persistencia de los estados

pasados. Y es mucho más confiable, porque las suposiciones de persistencia fácilmente

pueden ser erróneas, especialmente cuando hay otros agentes alrededor, cambiando el

mundo a placer. Es muy pronto aún, para discutir este tema en este capítulo, pero

volveremos a él más tarde, cuando revisemos en detalle que implica el razonar acerca de

la persistencia de estados en el tiempo.

Qué se siente ser un Piojo

Para entender en qué consiste ser un sistema de producción sin ninguna representación

del mundo, imagine que Ud es un piojo de la madera y que toda su conducta de vida se

puede resumir en las siguiente tres reglas:

Si al frente está libre entonces me muevo adelante.

Si hay un obstáculo al frente entonces volteo a la derecha.

Si estoy cansando, entonces me detengo.

Puesto que es Ud tan elemental forma de vida, su visión se limita a la porción del

mundo que está directamente en frente suyo. Además, puede Ud sentir cuando está

cansado. Es decir, su cuerpo es parte del mundo, externo a su mente. Tal como ocurre

con otros objetos externos, su cuerpo genera observaciones como estar cansado o estar

hambriento, que deben ser atendidas por su mente.

No importa de donde provienen las reglas. Si son un producto del proceso evolutivo o si

le fueron otorgadas por un Gran Diseñador. Lo importante es que, ahora que las tiene,

ellas gobiernan y regulan su vida.

Suponga, para propósitos ilustrativos, que Ud percibe la siguiente secuencia de

observaciones:

Al frente está libre.

Al frente está libre.

Hay un obstáculo al frente.

Al frente está libre y estoy cansado.

Apareando las observaciones, en ese mismo orden, con las condiciones de sus reglas, se

obtiene la siguiente secuencia combinada de observaciones y acciones:

Observe: Al frente está libre.

Haga: Me muevo adelante.

Observe: Al frente está libre.

Haga: Me muevo adelante.

Observe: Hay un obstáculo al frente.

Haga: Volteo a a derecha.

Observe: Al frente está libre y estoy cansando.

Page 21: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

En este punto, las observaciones actuales disparan dos reglas diferentes y las acciones

correspondientes que ellas recomiendan están en conflicto. Ud no puede moverse

adelante y detenerse al mismo tiempo. Necesita un método para resolver el conflicto,

para decidir que hará.

Existen muchas estrategias para resolver conflictos. Pero, en este, como en muchos otros casos,

el conflicto puede resolverse simplemente[1] asignando prioridades distintas a las reglas y

seleccionando la acción generada por la regla con la mayor prioridad. En nuestro caso, es obvio

que la tercer regla debe tener mayor prioridad que la segunda (NT: lo es?. Suponemos que el

cansancio impide el movimiento). Así que la acción apropiada es:

Haga: Me detengo.

Una vez que un piojo ha aprendido sus reglas, su estado interno permanece fijo. Las

observaciones vienen y van y las acciones asociadas se realizan sin que se les registre o

recuerde. El precio a pagar por esta simplicidad es que el piojo vive en el aquí y ahora

solamente y no tiene idea de grandioso mundo que le rodea. Pero, para un piojo, ese es,

probablemente, un pequeño precio a pagar por el disfrute de una vida simple.

Sistemas de Producción con Memoria

Aunque la vida simple pueda parecer atractiva, la mayoría de las personas

probablemente preferiría algo más excitante. Para tenerlo, Ud necesita, por lo menos, un

sistema de producción con una memoria interna. La memoria puede ser usada, no sólo

para registrar las observaciones del estado actual del mundo, sino también para

almacenar los registros históricos de las observaciones pasadas.

Normalmente, una observación individual tiene la forma de una oración atómica [2], llamada

así porque no se puede subdividir en subpartes que sean también oraciones. Esto

implica que la forma lógica de una observación no contiene a ninguna de las conectivas

lógicas “y”, “o”, “si” y “no”, que transforman oraciones simples en otras más

complejas. Cada oración atómica es también llamada átomo.

En un sistema de producción con memoria, una regla se dispara con una observación

que se aparee con una de las condiciones de la esa regla. Todas las otras condiciones

son también verificadas evaluándo si corresponden a los registros de observaciones

pasadas, futuras y las del momento. Si todas las condiciones concuerdan con

observaciones, las acciones de la regla se separan como candidatas para ejecución.

Qué se siente se un Explorador de Marte

Para imaginar cómo es ser un sistema de producción con memoria, imagine que Ud ha

superado su vida como piojo y ha reencarnado como un robot que fue enviado a Marte

en busca de rastros de vida marciana.

Por fortuna, su vida anterior como piojo le da a Ud una buena idea de como comenzar

esta nueva reencarnación. Más aún, siendo un robot, Ud nunca se cansa y nunca tiene

Page 22: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

que descansar. No obstante, todavía hay 2 problemas que debe resolver: cómo reconocer

la vida cuando la vea y cómo evitar caminar en círculos.

Para el primer problema, sus diseñadores lo han equipado a Ud con un módulo de

reconocimiento de vida, que le permite identificar signos de vida, y también con un

transmisor para informar al centro de control de sus descubrimientos. Para el segundo

problema, necesita Ud una memoria que le permita reconocer cuando ya ha estado en un

lugar antes, de manera que evite visitarlo de nuevo.

Un sistema de producción con memoria, que es una versión mejorada del sistema de

producción de un piojo, podría verse así:

Si el espacio adelante está libre

y yo no he estado en ese espacio antes,

entonces vaya a ese espacio.

Si el espacio adelante está libre

y he estado en ese espacio antes,

entonces volteo a la derecha.

Si hay un obstáculo adelante

y no muestra signos de vida,

entonces volteo a la derecha.

Si hay un obstáculo adelante

y muestra signos de vida,

entonces lo reporto al centro de control

y volteo a la derecha.

Para saber si Ud ha estado en un lugar antes, necesita Ud un mapa del terreno. Puede

hacerlo, por ejemplo, dividiendo el terreno en espacios cuadrados e identificando cada

espacio con unas coordenadas, (E, N), donde E es la distancia hacia el Este desde el

centro del cuadrado y hasta un punto de origen o referencia, mientras que N es la

distancia al Norte desde ese origen. Ud comienza en el cuadrado (0,0).

Para que esto funcione, cada cuadrado tiene que tener el mismo tamaño que el paso que

Ud da al moverse adelante. Suponiendo que Ud conoce las coordenadas de su posición

actual, Ud puede usar aritmética simple para calcular las coordenadas tanto del

cuadrado adelante, como del cuadrado a la derecha, con lo que estaría obteniendo las

coordenadas de su siguiente posición.

Cada vez que Ud pasa a un nuevo cuadrado, registra su observación del cuadrado con

sus coordenadas. Así, para establecer si ha estado ya en ese lugar antes, sólo tiene que

consultar su memoria de observaciones pasadas.

Page 23: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Suponga que, por ejemplo, Ud está en el origen, mirando al Este. Suponga, también,

que las siguientes oraciones atómicas describen el mundo a su alrededor:

Vida en (2,1)

Libre el (1, 0)

Libre el (2, 0)

Obstáculo en (3, 0)

Obstáculo en (2, -1)

Obstáculo en (2, 1).

Aunque hay vida en su vecindario, Ud no puede verla. Al arrancar, lo único que Ud

sabe del mundo es que está libre en (1,0).

Suponga también que, aún cuando su misión es buscar vida, Ud es la única cosa que se

mueve. Esta descripción del mundo se cumple en todos los estados del mundo que

encontrará (suponiendo que, cuando Ud ocupe un lugar, este se considerará libre).

Dadas esas suposiciones, Ud no tiene elección. Su conducta está completamente

predeterminada:

Observe: Libre el (1, 0)

Haga: Vaya a (1, 0)

Observe: Libre el (2, 0)

Haga: Vaya a (2, 0)

Observe: Obstáculo en (3, 0)

Haga: Volteo a la derecha

Observe: Obstáculo en (2, -1)

Haga: Volteo a la derecha

Observe: Libre el (1, 0)

Recuerde: Visité (1, 0)

Haga: Volteo a la derecha

Observe: Obstáculo en (2, 1) y Vida en (2, 1)

Haga: Reporte vida en (2, 1) al centro de control.

Haga: Volteo a la derecha.[3]

Observe que el reportar su descubrimiento de vida al centro de control es simplemente

otra acción más, como moverse adelante o voltear a la derecha. Ud no tiene idea de que,

para sus creadores, esta es su misión fundamental.

Sus diseñadores lo han dotado con un sistema de producción que logra la meta de

descubrir vida como una propiedad emergente. Quizás, incluso para ellos, esta meta es

una sub-meta de otra de nivel todavía superior, tal como satisfacer su propia curiosidad

científica. Pero ninguna de esas metas o sub-metas es evidente para Ud.

El uso de los sistemas de producción para simular la

reducción de metas

Los sistemas de producción han sido usados, no sólo para construir modelos

computacionales de agentes inteligentes, sino también para construir aplicaciones, con

frecuencia con la forma de sistemas expertos. En muchas de esas aplicaciones, se usan

Page 24: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

reglas de condición-acción para simular explícitamente la reducción de metas, en lugar

de confiar en las propiedades emergentes para procurar metas de nivel superior

implícitamente.

Por ejemplo, la reducción de la Zorra que obtiene de la meta de tener el queso, la de estar cerca

del queso y tomarlo, puede ser simulada con la siguiente regla de condición-acción[4]:

Si yo quiero tener un objeto

entonces paso a creer que yo quiero estar cerca de ese objeto

y tomo el objeto.

Aquí la Meta se representa anotando en la memoria del sistema una pseudo-creencia

con la siguiente forma:

Yo quiero Meta.

La reducción de Meta a Sub-metas se simula con una regla de condición-acción que

tiene por condición a Meta y cuyas acciones bien pueden tener la forma:

Agrega a mis creencias que yo quiero Sub-metas

que se convierte luego en una actualización interna de la memoria de sistema , o bien

pueden ser acciones genuinas realizadas externamente.

El problema principal con este método simulado es que pierde la conexión entre la

reducción de la meta y la creencia que la justifica, en este caso, con la creencia:

Un animal tiene un objeto

si el animal está cerca del objeto y el animal toma el objeto.

Como hemos visto, la conexión a la que nos referimos es que la reducción de la meta es lo

mismo que razonar hacia atrás con la creencia, tal como se postula en la idea principal de la

programación lógica.

Thagard (página 45) da un ejemplo similar con una regla de condición-acción, pero la usa para

ilustrar su afirmación de que “a diferencia de la lógica, los sistemas basados en reglas pueden

también representar fácilmente información estratégica acerca de lo que hay que hacer”:

si Ud quiere ir a casa y tiene Ud el dinero del pasaje del bus entonces Ud puede tomar el bus.

Razonando hacia adelante con la regla se puede reducir la meta (ir a casa) a la sub-meta

(tomar el bus), lo cual simula el razonamiento hacia atrás con la creencia[5]:

Vas a casa si tienes el pasaje del bus y tomas un bus.

Así pues, el argumento de Thagard en contra de la Lógica puede, por el contrario, ser

visto como un argumento en favor de la programación lógica porque esta puede

“representar fácilmente información estratégica acerca de lo que hay que hacer” (lo que un

Agente debe hacer).

Page 25: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

De hecho, tal parece que todos los argumentos de Thagard en favor de la reglas de

producción pueden ser entendidos como argumentos en favor de la lógica

computacional. Esto se debe a que él confunde reglas de producción:

Si condiciones entonces haga acciones.

con implicaciones lógicas:

Si condiciones entonces conclusiones.

Una lamentable confusión

La confusión de Thagard es quizás más evidente cuando escribe (en página 47) que “las

reglas se pueden usar para razonar bien hacia adelante o bien hacia atrás”. Esto, sin

embargo, no es cierto de las reglas de producción sino más bien es una característica de

las implicaciones lógicas.

Puesto que las condiciones en las reglas de producción aparecen primero y las acciones

ocurren después, las verdaderas reglas de producción sólo pueden ser usadas hacia

adelante, cuando se cumplen las condiciones para derivar acciones sugeridas. Mientras

que debido a que, en lógica, las conclusiones siempre se expresan en modo declarativo,

las implicaciones lógicas se pueden usar para razonar bien hacia adelante o hacia atrás.

Thagard, entonces, erróneamente le atribuye a las reglas de producción una propiedad

que no tienen, pero que sí tienen las implicaciones lógicas, para luego usar esa

atribución para argumentar que “las reglas” son mejores que la lógica.

Siendo justos, debemos reconocer que Thagard sólo está exhibiendo una confusión muy

generalizada. En este caso, la regla que él usa como ejemplo simula reducción de

metas, que es un caso especial de razonamiento hacia atrás con una creencia

expresada en forma lógica. Veremos también, como la reducción de metas y las reglas

de producción se pueden combinar en un contexto más general que usa lógica tanto para

creencia como para metas.

Page 26: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Resumen

El uso de los sistemas de producción para generar la conducta de un agente inteligente,

como hemos visto en este capítulo, se puede perfilar así:

[1] Un método todavía más simple es evitar tener que resolver los conflictos, cambiando

las reglas con una condición extra “y Ud no está cansado” en las primera y segunda

regla. Un método más complicado es a través de la llamada Teoría de Decisiones, que

compararía las diferentes alternativas y seleccionaría la alternativa con el máximo

beneficio esperado. Sin importar como se haga, sin embargo, en este caso el resultado

seguramente será el mismo: mejor descansar cuando Ud está cansado que forzarse y

seguir en contra de todo.

[2] Aquí se asume que la experiencia de un agente en el mundo se puede expresar en

términos lingüisticos. Esto, ciertamente, no es cierto del lenguaje natural ordinario, pero

podría, con un esfuerzo de la imaginación, servir para el “Lenguaje del Pensamiento”.

Más de esto más adelante.

[3] Le dejo al lector el derivar que pasa después, y me disculpo por adelantado.

[4] La regla puede ser parafraseada en Español con mayor naturalidad, aunque quizás

menos precisa, así: Si quiero tener un objeto, entonces debo estar cerca del objeto y

tomar el objeto.

[5] En esta forma es, quizás, menos obvio que el procedimiento servirá sólo si el bus que

Ud toma pasa por su casa.

Page 27: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Capítulo 4 Un Sistema Lógico que combina reducción de metas,

reglas de condición-acción y otros recursos lógicos

¿Qué tienen en común el pasajero del metro, la zorra, el piojo, el explorador marciano e,

incluso, el termostato?. Seguramente no se trata de su manera de vestir, sus compañías o

sus modales. Se trata de que todos ellos están constantemente ocupados en lidiar con el

cambiante mundo – Una lidia que algunas veces amenaza su existencia y otras veces les

provee con oportunidades para sobreponerse y prosperar.

Para que la lógica sea relevante en tal contexto, tiene que resolver primero un gran

problema: la lógica tradicional, tal como se le entiende normalmente, está cerrada ante

los cambios en el mundo. Para recuperar su relevancia, la lógica debe ser puesta primero

en el lugar adecuado: en el componente pensante de ciclo del agente:

Para ciclar, observa el mundo,

piensa,

decide cuáles acciones realizar,

actúa, cicla de nuevo.

A este nivel, el más alto, el ciclo del agente es igual que el ciclo de los sistemas de

producción, pero no pierde generalidad y así, puede acomodar otros tipos de

pensamiento, incluyendo el razonamiento lógico. Imbuída como el componente

pensante del ciclo del agente, la lógica queda tanto para asimilar las entradas que el

agente recibe de su mundo, como para producir las salidas que el agente usa para

cambiar ese mundo.

La lógica de las metas y creencias

Otra limitación importante en la lógica tradicional es que no le presta atención a la

distinción entre las metas de un agente y sus creencias. Esta distinción es fundamental

para la supervivencia de los agentes y los inteligentes la aprovechan tanto como pueden.

Las metas de un agente representan la visión de cómo le gustaría que fuese el mundo a

ella o él. Las metas incluyen acciones que el jagente puede realizar. También incluyen

metas por lograr, para alcanzar algun estado futuro deseado, metas de mantenimiento,

para preservar alguna relación deseada entre el agente y el cambiante estado de mundo,

y restricciones, para prevenir estados indeseable. Voy a proponer que las reglas de

condición-acción sean entendidas como metas de mantenimiento y también voy a

mostrar que, en general, las metas pueden ser descritas naturalmente en forma lógica.

Las creencias del agente, por otro lado, representan su visión del mundo tal como

realmente es, gústele o nó. Incluyen oraciones atómicas que registran las observaciones

del agente. También incluyen sus creencias acerca de las leyes de la naturaleza, además

de las definiciones y taxonomías que el agente usa para clasificar y organizar sus

experiencias. Voy a insistir en que muchas, quizás todas, las creencias pueden

expresarse naturalmente en forma de programas lógicos.

Page 28: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

El cuento de la zorra y el cuervo revisado

El cuento en el capítulo 2 comienza cuando la zorra adquiere la meta de tener el queso

del cuervo. Pero, ¿de donde vino la meta de la zorra?

Quizás, como un muchachito malcriado, la zorra quiere tener todo lo que ella ve que

otros tienen. O quizás, ella simplemente está buscando su siguiente comida. En

cualquier caso, la meta de la zorra de tener el queso proviene de una meta de nivel

superior – bien la meta de poseer cualqueir cosa que otro tenga o la meta de tener que

comer cuando tenga hambre.

Así, la meta de la zorra de tener el queso puede verse como una meta por lograr cierto

estado futuro en el mundo, que corresponde al observar un cambio en el mundo que

dispara una meta de nivel superior de mantener cierta relación con el mundo que la

rodea.

Démosle el beneficio de la duda a la zorra y asumamos que ella quiere el queso

simplemente porque tiene hambre (y no debido a algún problema de conducta). Esto se

puede representar así como una meta de nivel superior:

Si me da hambre entonces necesito tener comida y comer-la comida

Esta meta puede ser parafraseada de muchas maneras. Por ejemplo, en forma imperativa

(y jugando un poco con la auto-disciplina en Español):

Si me da hambre, consigue comida y cóme-la comida.

Esta formulación imperativa se asemeja a una regla de condición-acción, salvo porque

la conclusión contiene la meta “consigue comida” en lugar de una acción simple que

puede ser realizada sin más.

Por otro lado, la meta puede ser planteada en modo declarativo, pero con una indicación

de que se trata de una meta en lugar de una creencia.

Meta: si tengo hambre, entonces (ob)tengo comida y como la comida.

La ventaja de expresar la meta como una declaración es que, entonces, obtiene una

forma lógica. La forma lógica puede ser usada para verificar si la proposición es

verdadera o falsa y puede usarse en deducciones lógicas con razonamiento hacia

adelante, hacia atrás y de otros tipos. El hecho de que es una meta, no una creencia,

implica que el agente debe procurar que se haga cierta.

Para mostrar que una implicación

Si condiciones entonces conclusión

es cierta, es necesario mostrar que cuando quiera que las condiciones son ciertas,

entonces la conclusión es también cierta. El que sea una meta o un creencia es

irrelevante.

Page 29: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Sin embargo, para hacer cierta una implicación, siendo una meta, no es sólo que hace

falta hacer que la conclusión sea cierta cuando quiera que las condiciones lo son, sino

que es todo lo que hay que hacer. No sólo es una condición necesaria, sino que es

suficiente también.

En teoría, es posible hacer que la implicación sea cierta haciendo ciertas tanto las

condiciones como la conclusión. Sin embargo, hacer que las condiciones sean ciertas es

un trabajo innecesario. En la práctica, el agente no intenta hacer que las condiciones de

las metas en forma de implicación sean satisfechas expresamente. O bien es el mundo el

que las hace ciertas, o bien el agente las hace ciertas por algún otro motivo[1].

En un mundo abierto y en constante cambio, puede no ser posible hacer que las

implicaicones permanezcan ciertas para siempre. Puede que sea necesario mantener su

verdad por un periodo indefinido, haciendo que las instancias individuales de cada

condición sean ciertas en cada ocasión en que surgan. El proceso completo consiste de

los siguientes tres pasos:

razonar hacia adelante, apareando nuevas observaciones con algunas

condiciones de la implicación, generando una nueva instancia de la implicación.

Razonar hacia adelanta o hacia atrás, para verificar todas las restantes

condiciones de esa instancia de la implicación.

Derivar la nueva meta de hacer la conclusión cierta.

La nueva meta es una sub-meta de una meta de mantenimiento de nivel superior.

Normalmente es una meta de alcance, para obtener cierto estado final.

Veamos como funciona la derivación de una meta de alcance a partir de una meta de

mantenimiento, en esta versión de la Zorra y el Cuervo:

Meta: si me da hambre, consigue comida y come la comida.

Creencias:

El cuervo tiene el queso.

Un animal tiene un objeto

si el animal está cerca del objeto

y el animal toma el objeto.

Estoy cerca del queso

si el cuervo tiene el queso y el cuervo canta.

El cuervo canta si alabo/halago/adulo al cuervo

El queso es un tipo de comida.

La comida es un tipo de objeto.

Para que este cuento funcione, la Zorra necesita el conocimiento taxonómico de que el

queso es un tipo de comida y de que la comida es un tipo de objeto. Este conocimiento

puede ser representado de varias maneras y hay, inclusive, lógicas especializadas para

cada propósito. Sin embargo, para el simple propósito de recontar el cuento, esos

detalles no tienen importancia. Es suficiente reconocer que este conocimiento es

necesario simplemente para asistir el razonamiento, como veremos más adelante.

Page 30: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Para ver como es que funciona el derivar una meta de alcance a partir de una meta de

mantenimiento en este ejemplo, suponga que la Zorra tiene la meta y la creencia que se

indicó antes y, de pronto, su cuerpo le dice que tiene hambre.

Observe: Me da hambre.

Puesto que su cuerpo es parte del mundo, la Zorra se hace-vuelve consciente de su

hambre por medio de una observación. La observación dispara la meta de alto-nivel y el

razonar hacia adelante deriva la sub-metas:

Sub-metas: Tengo comida y Como la comida.

Así, la verdadera meta de mantenimiento no es tan específica como obtener el queso del

cuervo, sino la más general de obtener cualquier clase de comida. Pero esta meta de

mantenimiento es apenas la mitad de la historia. La otra mitad es que la Zorra también

necesita comerse esa comida. Tener comida y no comerla es una tontería.

Derivar sub-meta de mantenimiento a partir de metas de más alto nivel es una

generalización del derivar acciones a partir una regla de condición-acción, porque las

sub-metas pueden ser (pero no necesariamente son) acciones atómicas (ejecutables de

inmediato). En el caso general, las sub-metas son, a su vez, metas que deben se

reducidas a otras sub-metas de nivel inferior. Esta es también una generalización de las

reglas de condición-acción porque las reglas de alcance así derivadas podrían ser para

alcanzar en algún momento en el futuro y no sólo en el siguiente instante de tiempo.

El Factor Tiempo

Nuestra nueva versión del cuento de la Zorra y el Cuervo es todavía una gran

simplificación debido, principalmente, a que ignora el tema del tiempo. No distingue

entre distintas ocurrencias de tener hambre en momentos diferentes. Tampoco se indica

cuanto tiempo ha transcurrido entre la observación del hambre y el momento de comer.

De hecho, no se indica que la Zorra necesita tener la comida antes de que pueda

comerla.

Ese ejercicio de ignorancia del tiempo fue hecho a propósito, porque resulta que el

razonamiento de sentido común sobre el tiempo es mucho más complicado de lo que

parece. Volveremos sobre ese problema más adelante. Entretanto, seguiremos usando

esta versión supersimplificada del cuento, sin tiempo, tanto para simplificar el ejemplo

como para concentrarnos en cómo la Zorra entrelaza su razonamiento con sus

observaciones y acciones en el contexto del ciclo del agente.

Page 31: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Incorporando la historia en el ciclo de los

agentes

Vamos a recontar el cuento, comenzando en esta ocasión en el instante en el que la

Zorra comienza a tener hambre. Para que la historia sea más interesante, asumimos que

la Zorra sólo tiene tiempo para realizar un paso de razonamiento en cada ciclo. También

asumiremos que la Zorra observa si sus acciones tienen éxito o fallan.

El primer ciclo.

Observación: Me da hambre.

Razonando hacia adelanta, sub-metas: Tengo la comida y como la comida.

No hay acciónes por ejecutar.

Este es el caso clásico de una observación que dispara una meta de mantenimiento y

produce una meta de alcance.

El segundo ciclo.

Ninguna observación.

Razonando hacia atrás, nuevas sub-metas: Estoy cerca de la comida y Tomo

la comida y Como la comida.

Ninguna acción por ejecutar.

El único pensar que la Zorra puede hacer en este ciclo es razonar hacia atrás, para

reducir la sub-meta de obtener la comida a la sub-metas de estar cerca de la comida y

tomarla. Este razonar incorpora el razonamiento taxonómico que aparea “comida” con

“objeto”.

El tercer ciclo.

Observación: El cuervo tiene el queso

Razonando hacia adelante, nueva creencia: Estoy cerca del queso si el cuervo

canta.

Ninguna acción por ejecutar.

En este ciclo, la Zorra tiene la alternativa de continuar el razonamiento hacia atrás a

partir de sus sub-metas actuales o de razonar hacia adelante a partir d e esta nueva

observación. Normalmente es una buena idea darle mayor prioridad al razonar con las

nuevas observaciones, porque puede tratarse de una emergencia que requiere atención

inmediata o una oportunidad que no debiera desperdiciarse.

La observación se aparea con una de las condiciones de su creencia:

Estoy cerca del queso si el cuervo tiene el queso y el cuervo canta.

Puesto que su creencia está expresada en forma lógica, puede ser usada para razonar

tanto hacia adelante como hacia atrás. Si se usa para razonar hacia adelante, como en

este caso, produce una nueva creencia:

El cuarto ciclo.

Page 32: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Ninguna observación.

Razonando hacia atrás, la nueva sub-metas: El cuervo canta y Tomo el queso y

Como el queso

Ninguna acción por ejecutar.

La Zorra usa sus nueva creencia hacia atrás, para reducir la meta de estar cerca de la

comida a la sub-meta de hacer que el cuervo cante. Para hacerlo, aparea “comida” con

“el queso”. Esto tiene el efecto colateral de precisar qué es lo que va a comer su la

nueva sub-meta termina con éxito.

El quinto ciclo.

Ninguna observación.

Razonando hacia atrás, la nueva sub-metas: Adulo al cuervo y Tomo el queso y

Como el queso.

Acción: Adulo al cuervo.

La Zorra reduce la meta de hacer que el cuervo cante a la sub-meta de adular al cuervo.

Luego intenta resolver esta nueva sub-meta realizando la acción. No hay otras acciones

pendientes para ejecutar en este momento, así que no hay necesidad de resolver ningún

conflicto entre acciones.

El sexto ciclo.

Observación: Adulo al cuervo.

Razonando hacia adelante, nuevas sub-metas: Tomo el queso y Como el queso.

Acción: Tomo el queso.

La Zorra observa el resultado de la acción que acaba de intentar en el ciclo anterior. La

observación, que confirma que ha tenido éxito, resuelve la primera de las tres sub-

metas, dejando las otras dos para tratar luego. La siguiente sub-meta también es una

acción y hay otras acciones candidatas a ser realizadas en este momento.

El séptimo ciclo.

Observación: No tomo el queso.

No piensa.

Acción: Tomo el queso.

La Zorra observa el resultado de su acción. Sin embargo, esta vez suponemos que falla,

bien porque el Cuervo todavía no ha comenzado a cantar, bien porque el queso no ha

llegado al suelo, bien debido a su ineptitud física[2] . Supondremos, además, que la

Zorra intentará la misma acción otra vez[3].

El octavo ciclo.

Observación: Tomo el queso.

Razonamiento hacia adelante, nuevas sub-metas: Como el queso.

Acción: Como el queso.

La Zorra observa que, esta vez, la acción ha sido exitosa. La observación resuelve la

sub-meta acción asociada, dejando pendiente solamente la última acción, que la Zorra

decide tratar en el siguiente ciclo:

Page 33: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

El noveno ciclo.

Observación: Como el queso.

La observación resuelve la última de las sub-metas acción. Noten que la meta de

mantenimiento todavía permanece allí, para ser disparada en otra ocasión futura.

Este patrón general de razonamiento de este ejemplo, que se despliega sobre varios

otros ciclos y, posiblemente, se entrelaza con otras observaciones y acciones, es algo

así:

Observación: Un evento ocurre.

Razonamiento hacia adelante: El evento se aparea con las condiciones

de una meta de mantenimiento o de una creencia

Meta de logro o alcance: En algún momento la conclusión una meta de

mantenimiento es convertida en una meta de logro o alcance.

Razonamiento hacia atrás: Las creencias son usadas para reducir las metas

de logro en acciones.

Acciones: Una sub-meta acción es seleccionada para ser

ejecutada.

Observación: El agente verifica si la acción tiene éxito o falla.

Este patrón no es excepcional. Algo parecido ocurre en el ejemplo del metro de Londres

con su Aviso de Emergencias.

De vuelta en el metro

Recuerde nuestra última versión del ejemplo::

Si hay una emergencia entonces consiga ayuda.

Ud consigue ayuda si alerta al conductor.

Ud alerta al conductor si presiona el botón de la señal de alarma.

La primera oración presenta una meta de mantenimiento. Podemos reescribirla como

una oración declarativa, indicando al lado que se trata de una meta y no de una creencia.

Entretanto, para capturar mejor el significado pretendido de la segunda y tercera

oración, reemplazamos la segunda persona “Ud” por la tercera persona.

Meta: Si hay una emergencia entonces Yo consigo ayuda.

Creencias: Una persona consigue ayuda si la persona alerta al conductor. Una persona alerta al conducto si presiona el botón de la señal de alarma.

Para establecer hay una emergencia, necesitamos creencias adicionales. Por ejemplo:

Creencias: Hay una emergencia si hay fuego. Hay una emergencia si una persona ataca a otras.

Hay una emergencia si alguién se enferma gravemente.

Hay una emergencia si hay un accidente.

Page 34: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Podríamos continuar esta reducción de los conceptos abstractos de alto nivel hacia los

mas concretos de bajo nivel hasta cualquier nivel de detalle deseado. Por ejemplo,

tratándose de reconocer el fuego, podríamos agregar:

Creencia adicionales: Hay fuego si hay llamas. Hay fuego si hay humo.

Con todo, pronto nos parecerá cada vez más difícil definir todo los conceptos de bajo

nivel en términos lingüísticos. Al final, debe haber un punto en el que hay un nivel

mínimo, que es irreductible y en el cual el sistema sensorial del agente transforma las

sensaciones que recibe del ambiente en observaciones que pueden ser representadas en

términos conceptuales.

Suponga, en este ejemplo, que el concepto de reconocer el fuego es ese nivel mínimo.

Suponga, más aún, que Ud está viajando en el metro y observa humo:

Observación: Hay llamas.

Razonando hacia adelante, nueva creencia: Hay fuego.

Razonando hacia adelante, nueva creencia: Hay una emergencia.

Razonando hacia adelante, meta de logro: Yo consigo ayuda!

Razonando hacia atrás, sub-meta: Yo alerto al conductor!

Razonando hacia atrás, acción: Yo presiono el botón de la señal

de alarma!

En tres pasos de razonamiento hacia adelante, Ud deriva la meta de alcance de obtener

ayuda. En el primer paso, Ud reconoce que hay fuego. En el segundo, que hay una

emergencia. En el tercero, Ud usa la meta de mantenimiento para derivar la meta de

alcance de obtener ayuda. Luego, en dos paso de razonamiento hacia atrás, Ud reduce la

meta de obtener ayuda a la sub-meta de acción de presionar el botón de alarma.

La acción de presionar el botón de alarma, en forma similar a como dijimos de la

observación de la emergencia, puede ser reducida aún más a términos de nivel inferior.

Por ejemplo, mover primero su dedo y luego empujar el botón con ese dedo. Mover su

dedo hacia el botón puede, a su vez, ser reducida a todavía más bajas sub-metas, tales

como primero mover su brazo cerca de botón y luego mover el dedo hacia el botón. Con

todo, al final tiene que haber un punto donde su cuerpo releva a la mente y realiza las

acciones por su propia cuenta.

Toda esta pensadera toma un tiempo durante el cual Ud puede que tenga que dar cuenta

de otras observaciones y realizar otras acciones. Programar estas acciones, de manera

que todo se realice en el momento apropiado, es una tarea para el componente que toma

decisiones en el ciclo del agente. Hemos preservado los ejemplos del capítulos tan

simples muy a propósito para evitar ese tipo de decisiones sobre el tiempo. Vamos a

referirnos a esos temas en el siguiente capítulo.

Page 35: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Resumen

Los ejemplos en este capítulo muestran como la lógica puede ser usada en el contexto

del ciclo de observación-pensamiento-decisión-acción de un agente. Puesta en este

contexto, la lógica es usada por los niveles superiores del pensar tanto para razonar

hacia adelante, a partir de las observaciones, disparando metas de mantenimiento y

derivando metas de alcance, como para razonar hacia atrás, para reducir metas de

alcance en acciones.

Bajo el nivel lógico, los procesos de percepción transforman las sensaciones crudas en

observaciones y los procesos motores transforman las representaciones conceptuales en

actividad física en el ambiente.

Todo esto se puede representar así:

Hemos visto que el razonamiento hacia adelante con metas en forma de implicación

sirve como generalización de las reglas de condición-acción, mientras que el

razonamiento hacia atrás con creencias en forma de implicación sirve para generalizar

los procedimientos de reducción de metas. En el siguiente capítulo, veremos cómo es

que el razonamiento hacia atrás puede ser usado para inferir las consecuencias de las

soluciones que se deriven en ciertos momentos. También veremos como la combinación

de búsqueda más inferencia provee información para la siguiente etapa del ciclo, de

forma que las soluciones alternativas puedan ser comparadas y que se tome así, una

decisión final con más información.

[1] También es posible hacer que la implicación sea cierta, haciendo que sus condiciones

se vuelva falsas. En el caso de la Zorra, ella podría tratar de satisfacer su meta evitando

sentir hambre.

[2] Esta complicación sirve para indicar una limitación de nuestra formulación del ciclo

del agente: No hay chequeo explícito en el ciclo para determinar si las acciones de bajo

Page 36: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

nivel de hecho alcanzan las metas de nivel superior. El ciclo chequea si las acciones

tienen éxito o no, pero no chequea si ese éxito conduce al éxito de las metas superiores

que se propuso alcanzar. Si las creencias que fueron usadas para reducir esas metas a

sub-metas se pudieran garantizar como ciertas, entonces estos chequeos serían

innecesarios. Así que una manera de corregir esta limitación es agregar al ciclo un

componente de aprendizaje general y de verificación de validez. Volveremos con esto

más tarde.

[3] Esto supone que hay un tiempo asociado antes del cuál debe ser realizada la acción y

que tal tiempo no ha sido alcanzado. Veremos como se hace esto, con todo detalle, más

adelante cuando revisemos la representación del tiempo.

Page 37: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Unidad 5. Pensar = Inferencia +

Búsqueda + Inferencia.

Jonathan Baron (1994) en su libro“Pensando y Decidiendo” escribe, en la página 4:

“El pensar acerca de acciones, creencias y metas personales puede todo

ser descrito en términos de un mismo marco referencial, en el cual se explique

que el pensar consiste de búsqueda e inferencia. Buscamos ciertos objetos y

luego inferimos a partir y acerca de los objetos que hemos encontrado”

A diferencia de Baron, quien ve el papel de la lógica limitado exclusivamente a la

inferencia, en nuestro modelo basado en lógica del pensar, la búsqueda es realizada por

el razonar hacia atrás y la inferencia por el razonar hacia adelante. Aquello por lo que

buscamos son las metas. Como Baron, distinguimos entre el papel del pensar, para

generar candidatas a soluciones y derivar sus consecuencias, y el papel del decidir, para

evaluar las diversas soluciones y escoger entre ellas.

Al parecer es común creer que la lógica no tiene nada que ver con la búsqueda. De

hecho, Paul Thagard, en la introducción a su libro Cognitive Science (pg. 45) dice “En

los sistemas basados en lógica, la operación fundamental del pensamiento es la

dedución lógica, pero desde la perspectiva de los sistemas basados en reglas, la

operación fundamental del pensamiento es la búsqueda”.

Para ver como la lógica está relacionada con la búsqueda, considere el siguiente

problema:

Ir de A a B.

Todo tenemos una idea del cómo buscar objetos en un espacio físico y del cómo

solucionar para llegar de un lugar otro:

Para ir de A a B,

si A está directamente conectado a B entonces

vaya directamente de A a B.

Para ir de A a B,

si C está entre A y B entonces

vaya de A a C y

vaya de C a B.

(NT: Para traducir estas oraciones a la forma lógica que sugiere Kowalski es mejor

escribirlas así:

(Para ir de A a B,

vaya directamente de A a B)

si A está directamente conectado a B.

Para ir de A a B,

vaya de A a C y

vaya de C a B

si C está entre A y B.

aunque se vean un poco extrañas en Español y en Lógica).

En términos más generales y dispuestos en forma lógica:

Page 38: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Un agente va de A a B si

A está directamente conectado a B y

ese agente va directamente de A a B.

Un agente va de A a B si

C está entre A y B y

el agente va de A a C y

ese agente va de C a B.

Estos procedimientos y creencias sirven, no sólo para desplazarse en espacios físicos,

sino también para lugares conceptuales como “pobres” y “ricos”.

Los procedimientos de reducción de metas son un caso especial de las creencias. Son el

caso especial en el cuál las creencias son usadas para razonar hacia atrás y “el agente”

es el mismo agente que los usa para reducir metas a sub-metas. A diferencia de los

procedimientos, las creencias puede también ser usadas para razonar hacia adelante, por

ejemplo para determinar las consecuencias de las observaciones acerca de la conducta

de otro agente.

Puede que haya muchas maneras de escoger un lugar C, entre A y B. Por ejemplo, Ud

puede ir de pobre a rico bien consiguiendo un buen empleo, bien robando un banco. De

la misma manera, puede haber muchas formas de ir de A a C y de ir de C a B. Por

ejemplo, Ud puede conseguir un buen empleo comenzando justo después de graduarse

o haciendo un postgrado antes para luego ir a trabajar mejor calificado.

Algunas decisiones al escoger el lugar intermedio C podrían no ser buenas para resolver

las otras sub-metas de ir desde A a C o desde C a B. Por ejemplo, aunque Ud pudiera

conseguir un buen trabajo justo al terminar su pregrado, puede que, aún así, no alcance

a volverse rico.

En general, por tanto, para resolver la meta de ir de A a B, Ud necesita buscar la

solución. En lugar de buscar en un espacio material, Ud puede ahorrarse algún esfuerzo

(físico quizás), haciendo parte de la búsqueda en su cabeza.

Ud puede aprovechar sus creencias, por ejemplo, si Ud está planificando sus

vacaciones, para obtener un plan para ir de A a B, mucho antes de que comiencen sus

vacaciones. Podría Ud explorar planes alternativos, o inclusive, buscar un plan que

optimice el resultado, quizás minimizando sus costos o maximizando sus beneficios.

Más aún, Ud puede entrelazar ese planificar con otras actividades, suspendiéndolo

cuando tenga compromisos más úrgentes que atender, y reanundándolo cuando no

tenga algo más importante que hacer.

Cómo ir hasta la Riviera Francesa

Si aún no se convence, considere la meta:

Meta: Yo voy desde Wimbledon a la Riviera Francesa.

Suponga que tengo la siguiente información:

Page 39: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Crencias: Niza está entre Wimbledon y la Riviera Francesa

París está entre Wimbledon y la Riviera Francesa

Heathrow está entre Wimbledon y la Riviera Francesa

Gatwick está entre Wimbledon y Niza

Clapham Junction está entre Wimbledon y Gatwick.

Wimbledon está directamente conectado a Clapham Junction.

Clapham Juction está directamente conectado a Gatwick.

Gatwick está directamente conectado a Niza.

Niza está directamente conectada a la Riviera Francesa.

etc.

Yo podría tener toda esta información almacenada previamente en mi memoria,

directamente como una colección de hechos. O podría obtenerla de otras fuentes.

Razonando hacia atrás, tengo dos planes alternativos para tratar de resolver mi meta:

Wimbledon está directamente conectado a la Riviera Francesa y

yo voy (va) directamente desde Wimbledon a la Riviera Francesa.

O puedo usar las sub-metas:

C está entre Wimbledon y la Riviera Francesa y

yo voy de Wimbledon y C y

yo voy de C y la Riviera Francesa.

A cuáles de estos genero primero o si genero todos simultáneamente depende de mi

estrategia de búsqueda. Si genero el primero de primero, tengo que decidir sobre cuál

sub-meta trabajar primero: la sub-meta Wimbledon está directamente conectado a la

Riviera Francesa o la sub-meta Voy de Wimbledon a la Riviera Francesa directamente.

Imagine que decido trabajar en la primer sub-meta primero. Con sólo las creencias que

listé arriba, no puedo resolver esta sub-meta. Debo, por tanto, abandonar o suspender

esta línea de pensamiento (de búsqueda) o, por el contrario, debo realizar alguna acción

sobre el ambiente para procurar información adicional en caso de que exista alguna

conexión de la que aún no sé. Suponga ahora que decido suspender esta línea de

búsqueda.

Me queda la alternativa de tratar de resolver mi meta superior:

C está entre Wimbledon y la Riviera Francesa y

Yo voy de Wimbledon a C y

Yo voy de C a la Riviera Francesa

Suponga que decido trabajar en la primera de las tres sub-metas (no tiene sentido

trabajar en una de las otras dos puesto que aún no he seleccionado el lugar intermedio

C). Dada la poca información que he listado antes, hay tres formas de resolver esta sub-

meta. Debo decidir cuál tratar primero.

De esta manera continúa la búsqueda, considerando alternativas, decidiendo sobre

cuáles sub-metas tratar primero y decidiendo acerca de las acciones (en el ambiente)

que debo realizar para obtener más información, hasta que consigo una o más

Page 40: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

soluciones. En este caso, si decido no hacer ninguna acción externa, la única solución es

el plan:

Yo voy de Wimbledon a Clapham Junction directamente y

Yo voy de Clapham Junction a Gatwick directamente y

Yo voy de Gatwick a Niza directamente y

Yo voy de Niza a la Riviera Francesa directamente.

Puedo derivar este plan, buscando en mi mente, bien hacia adelante a partir de

Wimbledon o hacia atrás a partir de la Riviera Francesa, dependiendo en cada caso de

sobre cuál sub-metas decida trabajar primero.

Sin embargo, en ambos casos, busco en mi mente realizando un razonamiento hacia

atrás desde las metas hacia las sub-metas.

Por supuesto, si tuviera más información, podría encontrar más soluciones para alcanzar

mi meta original. Necesitaría entonces escoger entre las alternativas, no sólo para

decidir cual plan ejecutar, sino también y antes de eso, para seguir buscando la solución.

Puesto que el propósito del pensar, en este caso, es finalmente decidir que hacer, podría

usar los mismo criterios que use para escoger entre las soluciones - por ejemplo, el

criterio de mayor beneficio por menor costo – como una estrategia de búsqueda,

explorando las líneas de pensamiento o búsqueda más prometedoras solamente o por lo

menos, antes que las menos prometedoras.

Razonamiento lógico = Búsqueda + Inferencia

Hay, sin embargo, otra forma muy interesante para explicar, en lógica, como se

combinan la búsqueda y la inferencia – es la forma en que Johathan Baron explica el

pensar en genera: “Buscamos ciertos objetos y luego inferimos a partir y sobre los

objetos que hemos encontrado”.

En nuestro marco lógico conceptual, buscamos por soluciones razonando hacia atrás a

partir de las metas. Sin embargo, para ayudarnos a decidir entre soluciones alternativas,

exploramos ese espacio de las inferencias hacia adelante, para prever cualquier

consecuencia adicional, deseable o indeseable, de las soluciones.

Para ilustrar el sentido en el que el pensar combina búsqueda e inferencia, Baron

presenta el ejemplo de una estudiante tratando de decidir que curso electivo tomar.

Primero considera ella un curso en historia moderna, que suena interesante pero exige

demasiado. Luego considera otro curso en historia moderna que también suena

interesante, pero que quizás no demande tanto. Entonces trata de encontrar a alguien

que haya tomado ese curso antes para ver que tanto trabajo realmente exige.

Este ejemplo de Baron es muy parecido a nuestro ejemplo del viaje de vacaciones a la

Riviera Francesa, pero además illustra la importancia de las acciones en procura de

información.

Muestra que Ud no puede confiar que tiene, en su memoria desde el principio, toda la

información que requiere para resolver un problema. Es posible que tenga que consultar

fuente externas.

Page 41: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

El propósito principal de este ejemplo es ilustrar el uso de la inferencia para derivar las

consecuencias de las soluciones candidatas, para ayudar a decidir que hacer. En el

ejemplo de Baron la inferencia es simple: Si la estudiante toma el primer curso, tendrá

que trabajar muy duro.

Decidir que hacer, sobre la base de estas inferencias es mas complicado. Implica

comparar las ventajas y desventajas de distintos candidatos a cursos de acción. Puesto

que es poco probable que algún curso supere a todos los demás en todos las aspectos

relevantes, es muy probable que se tenga que tomar algunas decisiones difíciles, quizás

comprometiendo las ventajas de un curso para evitar algunas de sus desventajas. Para

complicar las cosas todavía más, el estudiante tendrá que basar sus estimados de costos

y beneficios de las diversas altenativas en información incierta, quizás hasta de caracter

estocástico.

Incertidumbre

La incertidumbre acerca de la circunstancias futuras fuera de nuestro control es

característica de la mayoría de las situaciones y problemas en la vida. Considere,

nuevamente el problema de pasar de pobre a rico y suponga que estoy considerando el

robo de un banco como una manera de hacerme rico. Robar un banco no es una opción

fácil. Voy a tener que pensar mucho para construir un plan que tenga algún chance de

tener éxito. Tendré que escoger un banco, decidir si iré solo o con una banda organizada

para ayudarme, decidir si lo haré en plena luz del día o en la oscuridad y planificar mi

escape.

Pero antes de construir un plan con todos sus detalles, podría explorar en mi mente las

consecuencias más probables de robar el banco, para establecer si hay otros efectos

deseables o indeseables. Separando cualquier consideración moral, si robo un banco y

me atrapan y me condenan, terminaré en la cárcel. Pero yo no quiero ir a la cárcel.

Puedo decidir si trataré o no de robar el banco. Pero no puedo controlar si seré

capturado o condenado al intentarlo. No sólo es que estas posibilidades están

completamente fuera de mi control. Es que no puedo siquiera predecir su probable

ocurrencia con un nivel de certeza predefinido. Lo más lejos que pueda llegar es a

estimar esas probabilidades.

Si creo que los chances de ser capturado y luego convicto son muy altos, no robaré el

banco, puesto que no quiero ir a la carcel. Ni siquiera comenzaría a considerar el cómo

robarlo, pues todas la alternativas tienen la misma conclusión indeseable.

Pensar el robo de banco no sólo muestra el valor de inferir las consecuencias de cada

solución, sino que también expone la necesidad calcular o estimar probabilidades

asociadas a circunstancias fuera de nuestro control.

Esa combinación de estimaciones de probabilidad con evaluaciones de la utilidad de las

diferentes resultados es el tema de lo que se conoce como Teoría de Decisiones.

Volveremos a ese tema más adelante. Entretanto, es suficiente con notar que en muchos

casos, pensar, entendido como la búsqueda de las opciones y el cálculo de sus

consecuencias, puede con frecuencia ser mucho más fácil que decidir que hacer.

Page 42: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Pensar sin buscar

Esa caracterización de pensar como búsqueda más inferencia constituye un gran avance

con respecto a otras teorías en las que el pensar es visto como apenas algo más que sólo

búsqueda. No obstante, no sirve para dar cuenta del tipo de pensar que es necesario para

lidiar con cambios en el ambiente – especialmente cuando tales cambios requieren una

respuestas rápida y no hay mucho tiempo para buscar la solución óptima.

Pensar, buscando e infiriendo consecuencias es suficiente en muchas situaciones, como

cuando Ud está planificando sus vacaciones, planificando un curso electivo o el robo de

un banco, ocasiones todas en las que Ud dispone de todo el tiempo necesario para

buscar soluciones alternativas. Sin embargo, hay otras situaciones, como las de

emergencia, cuando Ud no tiene tiempo para considerar todas las alternativas y no tiene

tiempo para terminar su pensar antes de comenzar a actuar.

Suponga, por ejemplo, que Ud es un explorador de Marte, tipo 2, equipado con toda la

capacidad para pensar lógicamente. Ud se encuentra buscando vida en Marte cuando un

Exterminador Marciano se atravieza en su camino. Afortunadamente, Ud ha sido

advertido de tales emergencias y está equipado con la meta de mantenimiento

apropiada:

Meta: Si el Exterminador Marciano está a la vista, entonces vaya desde donde estoy

hacia la nave espacial.

Observación: El Exterminado Marciano está a la vista.

Razonando hacia adelante,

Meta de logro Vaya desde donde estoy hacia la nave espacial.

En teoría, Ud podría simplemente sentarse a pensar en todas la formas de volver a la

seguridad de su nave espacial, tal como si Ud estuviera planificando sus vacaciones en

la Riviera Francesa. Pero, en la práctica, su vida terminaría antes de que pudiera

comenzar con esos planes.

Lo que Ud necesita es pensar rápido, con el mismo conocimiento que Ud usa al

planificar las vacaciones, pero sin explorar todo el espacio mental de alternativas.

Debe Ud escoger un lugar C contiguo al lugar donde Ud está y más cerca de su nave

espacial y, de inmediato, comenzar a moverse hacia ese lugar, incluso antes de ponerse

a pensar que hará despues. Cuando haya llegado a C, Ud selecionará otro lugar C'

contiguo a su nueva posición C y también en dirección a la nave y, de nuevo, se moverá

hacia allá. Ud seguirá de esta forma, pensando donde ir y moviendose hacia allá, hasta

que llegue a la nave espacial si es que tiene la suerte de su lado. O será capturado por el

Exterminador Marciano si no está de suerte.

Pensando en el tiempo

En el caso general, para lograr el balance perfecto entre pensar y actuar, un agente

necesita pensar en el tiempo – Tanto acerca de los tiempos en que debe realizar las

acciones, como en la duración del pensar dado el tiempo disponible para hacerlo. Este

tema del pensar acerca del tiempo será tratado muy pronto en este libro.

Page 43: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Pensar = Inferencia + Búsqueda + Inferencia

Tenemos ahora una visión más completa del papel de la lógica en el ciclo de

observación-pensamiento-decisión-acción:

El significado de la Vida

No parece muy atractivo ser un Explorador de Marte y no saber que nuestro propósito

en la vida es encontrar vida en Marte. Pero es todavía peor ser un piojo de la madera y

no tener nada más que hacer en la vida que seguir unas reglas sin sentido.

Metas: Si está libre al frente, entonces muévete adelante. Si hay un obstáculo al frente, entonces voltea a la derecha.

Si estoy cansando, entonces descansa.

De hecho, es peor que el sinsentido.

Si comida, el piojo morirá y sin hijos, los genes del piojo desaparecerán. ¿De qué sirve

merodear por allí si no se ocupa de comer y tener hijos?.

Parte del problema es que el cuerpo del piojo no le está dando las señales adecuadas –

no le hace sentir hambre cuando se le está acabando la energía y no le hace sentir el

deseo de aparearse cuando debería estar reproduciendose. Su cuerpo también debería ser

capaz de reconocer el alimento y comerlo, y debería identificar parejas potenciales y

procurarlas.

¿Qué puede hacer entonces el piojo?. Si llegó hasta aquí por la evolución entonces ya no

puede ir ningún otro sitio (como individuo) y está camino a la muerte.

Pero si le debe su vida a alguna Gran Diseñadora, entonces le puede rogar que lo

rediseñe, esta vez desde arriba hacia abajo. La Gran Diseñadora tendrá que re-pensar las

Page 44: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

metas superiores del piojo, decidir cómo se les debe reducir a sub-metas y derivar, en

ese proceso, una nueva especificación de la conducta de entrada-salida del piojo.

Imagine ahora que la Gran Diseñadora establece las siguientes metas superiores para el

piojo:

Metas superiores El piojo vive tanto tiempo como sea posible y

El piojo tiene tantos hijos como es posible.

Por supuesto, algún crítico ateo bien podría preguntar: ¿A cuál propósito sirven estas

metas? Y ¿Por qué esas metas y no otras?. Quizás sobrevivir sea sólo otra sub-meta de

tener hijos. Y, quizás, tener hijos sea solamente una forma de promover la supervivencia

de nuestros genes. Tarde o temprano, sin embargo, nuestro crítico tendrá que dejar de

preguntar. No puede seguir preguntando para siempre (NT: ¿No?).

Para reducir las metas superiores a sub-metas, la Diseñadora necesita usar sus creencias

acerca del mundo, que incluyen sus creencias acerca de las capacidades del cuerpo del

piojo. Más aún, podría aprovechar su diseño anterior, con el que el piojo terminaba

moviendose sin propósito, y modificarlo para darle propósito a esos movimientos.

Podría usar creencias como:

Creencias:

El piojo vive tanto tiempo como es posible,

si cuandoquiera que está hambriento, busca comida y

cuando tiene comida enfrente, la come, y

cuandoquiera que está cansado, descansa, y

cuandoquiera que es amenazado, se defiende.

El piojo tiene tantos hijos como es posible,

si cuandoquiera que desea aparearse, busca pareja, y

cuando tiene la pareja al frente, trata de encargar bebés.

El piojo busca un objeto,

si cuandoquiera que está libre al frente, se mueve adelante, y

cuandoquiera que hay un obstáculo al frente y

no es el objeto buscado, entonces voltea a la derecha, y

cuando el objeto está al frente, entonces se detiene.

El piojo se defiende si ataca primero.

La comida es un objeto.

Una pareja es un objeto.

Si el piojo fuese tan inteligente como la diseñadora, la diseñadora podría simplemente

explicarle estas creencias directamente al propio piojo. El piojo podría entonces razonar

para adelante o para atrás, cuando sea necesario, y no tendría problema alguno para

alcanzar sus metas, siempre, claro, que las creencias de las Gran Diseñadora sean

válidas.

Pero el piojo no tiene ni el intelecto de la Diseñadora, ni cuerpo de supermodelo, ni

educación universitaria. Así que la Diseñadora tiene que, no sólo precisar los

requerimientos del piojo, sino también derivar una especificación de entrada-salida de la

conducta del piojo que pueda ser implantada (implementada) en el piojo con sus

limitadas capacidades físicas y mentales.

Page 45: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Una forma para el proceder de la diseñadora es que ella misma razone por el piojo

antes.

Puede comenzar razonando hacia atrás a partir de las metas superiores del piojo, para

generar el siguiente nivel de sub-metas:

Sub-metas:

Cuandoquiera que el piojo está hambriento, busca comida y

cuando la comida está al frente, la come, y

cuandoquiera que el piojo está cansado, descansa, y

cuandoquiera que el piojo es amenazado, se defiende, y

cuandoquiera que el piojo desea aparearse entonces busca pareja, y

cuando tiene la pareja al frente, trata de encargar bebés.

Las palabras “cuandoquiera” y “cuando” se pueden interpretar como el “si” condicional

pero también tienen una implicación temporal. Nos distraeriamos mucho si explicamos

ese punto aquí. Por esta razón, es útil re-escribir esas sub-metas en términos lógicos más

convencionales. Al mismo tiempo, nos aprovecharemos de esa re-escritura para eliminar

la ambigüedad asociada con al “alcance” de las palabras “y cuando”.

Sub-metas:

Si el piojo está hambriento entonces busca de comer, y

Si el piojo está hambriento y tiene comida al frente entonces se la come, y

Si el piojo está cansado entonces descansa, y

Si el piojo está amenazado entonces se defiende, y

Si el piojo desea aparearse entonces busca pareja, y

Si el piojo desea aparearse y hay una pareja al frente entonces trata de encargar bebés.

Sin embargo, el trabajo de la Diseñadora no ha terminado aquí. Alguna de las conclusiones de

las sub-metas implican otras metas (como buscar comida, defenderse y buscar pareja) que

deben ser reducidas a otras sub-metas de nivel aún más bajo. Por fortuna, para la

Diseñadora, esto es fácil. Sólo hace falta un poco más de razonamiento hacia atrás y

algo de simplificaciones lógicas[3], para derivar una especificación de la que estaría

orgullosa cualquier conductista.

Nuevas metas:

Si el piojo está hambriento y está libre al frente entonces el piojo se mueve adelante.

Si el piojo está hambriento y hay un obstáculo al frente y no es comida entonces el piojo

voltea a la derecha.

Si el piojo está hambriento y hay comida adelante entonces el piojo se detiene y come la

comida.

Si el piojo está cansado entonces el piojo descansa.

Si el piojo está amenazado entonces el piojo ataca primero.

Si el piojo desea aparearse y está libre al frente entonces el piojo se mueve adelante.

Si el piojo el piojo desea una pareja y hay un obstáculo al frente y no es una pareja

entonces el piojo voltea a la derecha.

Si el piojo desea aparearse y hay un obstáculo al frente y es una pareja entonces el piojo

se detiene y trata de encargar bebés.

Page 46: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Las nuevas metas definen la conducta de entrada-salida del piojo y pueden ser

implementadas directamente como un sistema de producción sin memoria. Sin

embargo, hay inconsistencias potenciales. Si el piojo desea aparearse y está hambriento

al mismo tiempo puede que se encuentre en una situación difícil, por ejemplo, en la que

debiera tanto detenerse y comer como voltear a la derecha y buscar pareja, todo al

mismo tiempo. Para evitar tales inconsistencias, el piojo tendrá que resolver los

conflictos.

Pero, si era demasiado esperar que el piojo razonara con lógica, es quizás también

pedirle demasiado que resuelva los conflictos. Menos aún que aplique Teoría de

Decisiones para que pese las ventajas relativas de satisfacer su hambre con las de

satisfacer su deseo de aparearse. La solución más simple es la Diseñadora tome esas

decisiones por el piojo y se las incluya en la especificación.

Si el piojo está hambriento y no está amenazado y está libre al frente

entonces el piojo se mueve adelante

Si el piojo está hambriento y no es amenazado y hay un obstáculo al frente y no es comida y no desea aparearse entonces el piojo voltea a la derecha.

Si el piojo está hambriendo y no es amenazado y hay comida al frente

entonces el piojo se detiene y come la comida.

Si el piojo está cansado y no es amenazado y

no tiene hambre y no desea aparearse entonces el piojo descansa.

Si el piojo es amenazado entonces el piojo ataca primero

Si el piojo desea aparearse y no está amenazado y está libre al frente

entonces el piojo se mueve adelante.

Si el piojo desea aparearse y no está amenazado y no está hambriendo y hay un obstáculo adelante y no es una pareja entonces el piojo voltea a la derecha.

Si el piojo desea aparearse y no está amenazado y hay una pareja al frente

entonces el piojo se detiene y trata de encargar bebés.

Si el piojo desea aparearse y está hambriento y no es amenazado y hay un obstáculo al frente y no es una pareja y no es comida entonces el piojo voltea a la derecha.

La nueva especificación es una colección de asociaciones entrada-salida que le otorga

prioridad máxima al reaccionar contra un ataque, pioridad mínima a descansar cuando

está cansado e igual prioridad a aparearse y comer. Ahora, la única situación en la que

Page 47: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

podría surgir el conflicto es cuando hay comida y pareja al frente al mismo tiempo. Uno

tiene que preocuparse por las cosas importantes.

El problema mente-cuerpo

Normalmente, el trabajo de una diseñadora termina cuando ha construido una

descripción declarativa de la conducta de entrada-salida de su objeto de estudio. El

cómo se “implante” esa conducta dentro del objeto no es asunto suyo.

En Computación, esta distinción entre el diseño de un objeto y su implementación es

llamada encapsulamiento. La implementación (implantación) queda encapsulada en el

objeto. Los objetos pueden interactuar con otros objetos, considerando solamente su

conducta de entrada-salida.

La noción de encapsulamiento es una justificación parcial del método conductista. No

es solamente que resulta imposible en muchos casos determinar lo que hay dentro del

otro objeto, sino también que, para muchos propósitos prácticos, es innecesario e

incluso indeseable.

Nuestro piojo no es la excepción. Sería fácil, dada la especificación de entrada-salida,

implementar la conducta del piojo con un sistema de producción primitivo sin memoria

y sin resolución de conflictos. ¿Acaso el piojo necesita una mente – para representar

conceptos como hambre y comida y para derivar representaciones simbólicas de sus

acciones?. De verdad ¿un piojo necesita cargar con todo este aparato mental, cuando

toda la conducta instintiva necesaria podría ser “cableada”, como una colección de

asociaciones de entrada-salida, directamente en el cuerpo del piojo[4]?

De la misma manera, una diseñadora podría especificar el diseño de un termostato en

términos simbólicos:

Metas:

Si la temperatura actual es T grados y la temperatura deseada es T' y T < T’ - 2°

entonces el termostato aumenta el calor.

Si la temperatura actual es T grados y la temperatura deseada es T' y T > T’ + 2°

entonces el termostato disminuye el calor.

Pero esto no implica que el termostato manipule expresiones simbólicas para generar su

conducta. Muchas personas estarían satisfechas si el diseño se implantara en un

dispositivo mecánico o electrónico simple.

De la misma forma como la conducta del termostato puede ser vista desde afuera en

términos de lógica simbólica, sin que esto implique que el propio termostato manipule

expresiones simbólicas, la conducta de nuestro piojo podría ser implantada como una

colección de asociaciones entrada-salida en un cuerpo sin mente.

Estas posibilidades se pueden ilustrar así:

Page 48: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

La gente no es así Aún cuando mucha de nuestra conducta es instintiva e, incluso, inconsciente, casi

siempre podemos separarnos de lo que hacemos, reflexionar con cuidado sobre nuestros

propósitos finales y, hasta cierto punto, controlar nuestra conducta para alcanzar mejor

nuestra metas. Es como si pudiéramos ser un piojo y la diseñadora del piojo al mismo

tiempo.

Esta es, de hecho, la meta superior de este libro – investigar cómo podemos usar la

lógica para supervisar nuestra conducta y cómo podemos alcanzar nuestra metas más

efectivamente como resultado de esa supervisión. Para ello, debemos investigar la

relación entre pensamiento instintivo y pensamiento lógico. Hemos visto un ejemplo de

esta relación en este capítulo. Pero, en este ejemplo, los niveles lógico e instintivos

estaban separados en individuos diferentes. En el próximo capítulo, veremos como

pueden estar presentes en el mismo individuo.

[1] Es muy interesante notar que tanto la interpretación temporal como la lógica de la

claramente ambigüa palabra “entonces” tienen sentido aquí.

[2] Por simplicidad, asumimos que atacar primero, descansar y tratar de encargar bebés

son todas acciones que el piojo puede ejecutar directamente sin reducirlas a otras sub-

metas de nivel inferior.

[3] Esta simplificación reemplaza las oraciones con la forma “si A, entonces si B

entonces C”, con oraciones “si A y B entonces C”.

[4] Este argumento ha sido presentado, entre otros por Rodney Brooks del MIT, quien

ha implementado varias generaciones de robots sin procesador, muy parecidos a un

piojo, que despliegan conductas inteligentes muy impresionantes.

Page 49: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Niveles de Conciencia

Hay un sentido en el que la conciencia puede ser entendida tanto en términos

computacionales como en términos lógicos. Me refiero a cuando se dice que un agente

está conciente cuando está al tanto de lo que está haciendo y del porqué lo está

haciendo. Sea o no conciente un agente (en este sentido), la manifestación exterior de su

conducta es la misma. Sin embargo, si el agente está conciente de lo que hace, entonces

su conducta es “a propósito” y está bajo su control (NT: ¿Bajo “su reflexión”?). Si no

está conciente, entonces su conducta es automática e instintiva.

La interpretación computacional de la conciencia como el “estar al tanto” dice que

cuando un agente está conciente su conducta es generada por un programa de alto nivel,

que manipula símbolos que tienen significado en el ambiente. Por otro lado, cuando un

agente no es conciente, entonces su conducta es producida por un programa de bajo

nivel o un dispositivo físico, cuya estructura está determinada, en todo caso, por las

características del cuerpo del agente.

La interpretación lógica es que, cuando un agente es conciente, su conducta es

producida por el razonar con metas y creencias. Cuando el agente no está conciente,

entonces su conducta está determinada por asociaciones entrada-salida de bajo nivel.

Estas asociaciones se puede representar, a su vez, a diferentes niveles, incluyendo un

nivel lógico-simbólico y el más básico nivel físico del cuerpo del agente.

Ambas interpretaciones se encuentran en la lógica computacional:

Conciencia en el metro

Recuerde nuestra última versión del ejemplo del Aviso en el Metro:

Metas: Si hay una emergencia entonces Yo obtengo ayuda.

Creencias: Una persona obtiene ayuda si la persona alerta al conductor.

Una persona alerta al conductor si la persona presiona el botón de la señal de alarma.

Hay una emergencia si hay fuego.

Hay una emergencia si una persona ataca a otra.

Hay una emergencia si alguien se enferma gravemente.

Hay una emergencia si hay un accidente.

Hay fuego si hay llamas.

Hay fuego si hay humo.

Un pasajero puede usar la meta y las creencias explícitamente, razonando hacia adelante

a partir de las observaciones, para reconocer cuando hay una emergencia y derivar la

meta de conseguir (ob-tener) ayuda, y luego, razonando hacia atrás, conseguir ayuda al

presionar el botón de la señal de alarma.

Sin embargo, el pasajero podría llegar a la misma conducta usando asociaciones de

entrada-salida de bajo nivel o reglas de condición-acción, que puede también ser

representadas en forma lógica.

Page 50: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Metas: Si hay llamas entonces Yo presiono el botón de la señal de alarma.

Si hay humo entonces Yo presiono el botón de la señal de alarma.

Si una persona ataca a otra entonces Yo presiono el botón de la señal de alarma.

Si alguien se enferma gravemente entonces Yo presiono el botón de la señal de

alarma.

Si hay un accidente entonces Yo presiono el botón de la señal de alarma.

La nueva meta es más eficiente que la meta y la creencia original. Sólo requieren un

paso de razonamiento hacia adelante para asociar la acción apropiada de salida con la

observación relevante en la entrada. Al respecto, se asemejan a un programa escrito en

un lenguaje de bajo nivel, que es más eficiente que un programa con la misma

funcionalidad en un lenguaje de nivel más alto.

De hecho, en este caso, ambos programas están escritos en el mismo lenguaje lógico. El

programa original está escrito a mayor nivel, lo cual requiere, no solamente más

recursos computacionales, sino también mecanismos de razonamiento más sofisticados.

En Computación, los lenguajes de diferentes niveles y las representaciones de diferentes

niveles en el mismo lenguaje tienen diferentes ventajas y son complementarios. Las

representaciones de bajo nivel son más eficientes. Pero las de alto nivel son más

flexibles, fáciles de desarrollar y fáciles de cambiar.

En este ejemplo, la representación de bajo nivel “no está al tanto”, lo que si ocurre con

la representación de mayor nivel, de la meta de conseguir ayuda que es el propósito de

presionar el botón de la señal de alarma. Si algo sale mal con la representación de bajo

nivel, por ejemplo si el botón no sirve o el conductor no consigue ayuda, entonces el

pasajero podría no darse cuenta que hay un problema. Además, si el ambiente cambia, y

se desarrollan métodos nuevos y mejores para resolver emergencias, será más difícil

modificar la representación para adaptarla al cambio.

En Computación, ambos niveles de representación son útiles. Típicamente, la

representación de nivel superior es la primera en ser desarrollada, algunas veces ni

siquiera en la forma de un programa, sino como un análisis de los requerimientos del

programa[1]. Esta representación de alto nivel es luego transformada, bien

manualmente o por medio de programas que algunas veces se llaman compiladores, en

un representación de más bajo nivel que se puede ejecutar más eficientemente.

El proceso inverso también es posible. Los programas de bajo nivel pueden, en ciertas

circunstancias, ser decompilados en programas equivalentes de mayor nivel. Esto es

muy útil cuando el programa de más bajo nivel debe ser modificado, quizás porque debe

operar en un ambiente diferente o porque se ha descubierto que tiene una falla de

programación. La representación de alto nivel puede entonces ser modificada y

recompilada en una nueva forma de bajo nivel mejorada.

Este proceso inverso, sin embargo, no siempre es posible. Los llamados sistemas

legados, desarrollados directamente en lenguajes de bajo nivel y que han sido

modificados durante años pueden carecer de la estructura necesaria para que se pueda

identificar sus metas sin ambiguedades y se les pueda decompilar en la forma de nivel

superior. Pero inclusive en estos casos, se les podría decompilar parcialmente y

aproximar con programas de alto nivel. Este proceso de reconstrucción racional pueden

Page 51: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

servir para mejorar la mantenibilidad de los sistemas legados, aún cuando una re-

implementación completa no sea posible.

Compilando por medio del razonamiento adelantado.

Uno puede realizar parte del trabajo de compilar un programa de alto nivel en una

forma de bajo nivel, realizando por adelantado algo de la computación que se realizaría

al invocar el programa original.

En el ejemplo del metro, en lugar de aguardar a que ocurra la emergencia, un

compilador puede anticipar la necesidad de reducir la conclusión de la meta de

mantenimiento de nivel superior:

Meta: Si hay una emergencia entonces consigue ayuda.

Haciendo todo el razonamiento hacia atrás necesario, por adelantado. En dos de esos

pasos de inferencia, la meta puede ser transformada en una versión declarativa de una

regla de condición-acción:

Meta: Si hay una emergencia entonces presiono el botón de la señal de alarma.

De la misma manera, el compilador puede anticipar la necesidad de reconocer que hay

una emergencia, haciendo todo el razonamiento hacia adelante por adelantado. En dos

pasos de inferencia, que corresponden a las dos maneras de reconocer que hay fuego, el

compilador puede derivar las nuevas creencias:

Creencias: Hay una emergencia si hay llamas. Hay una emergencia si hay humo.

En cinco pasos adicionales de inferencia, que corresponden a los cinco tipos de

emergencia, el compilador obtiene las asociaciones simples de entrada-salida que vimos

antes:

Metas:

Si hay llamas entonces presiono el botón de la señal de alarma.

Si hay humo entonces presiono el botón de la señal de alarma.

Si una persona ataca a otra entonces presiono el botón de la señal de alarma.

Si alguien se enferma gravemente entonces, presiono el botón de la señal de

alarma.

Si hay un accidente entonces presiono el botón de la señal de alarma.

Esta representación es tan baja como puede serlo, pero preserva la forma lógica. Sin

embargo, es posible bajar más aún, si esas asociaciones son implantadas con conexiones

físicas directas entre las partes relevantes de los sistemas sensoriales y motores

humanos. Esto último equivale a implantar el software en el hardware.

Page 52: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Combinando el pensamiento racional con

el pensamiento intuitivo.

En la psicología cognitiva se ha hace una distinción similar a la discutida en la sección

anterior entre el pensamiento racional (deliberative thinking) y el pensamiento

intuitivo (intuitive thinking). El pensamiento racional, conciente de sí mismo y

controlado, incluye al pensar lógico. El pensamiento intuitivo, que es opaco y

automático, lleva los procesos de percepción hasta los niveles subconcientes del pensar.

Los psicologos cognitivistas han propuesto varios modelos de procesamiento dual del

pensamiento humano, en los cuáles interactúan esos dos tipos de pensamiento.

La interacción más simple ocurre el pensamiento racional se desplaza hacia el nivel

intuitivo con el paso del tiempo, por ejemplo, cuando una persona aprende a usar el

teclado, tocar un instrumento musical o conducir un carro. Esta migración del

pensamiento racional hacia el intuitivo es equivalente a compilar un programa de alto

nivel en un programa de nivel inferior – pero no razonando por adelantado, sino

razonando con los hechos. Luego de usar la misma combinación de procedimientos de

propósito general de alto nivel durante mucho tiempo (o muchas repeticiones), la

combinación colapsa en un “atajo computacional” de bajo nivel. Este atajo es un

procedimiento especializado que alcanza el mismo resultado que el procedimiento

general original, pero con mayor eficiencia.

Algunas veces podemos ir en la dirección opuesta, reflexionando sobre el conocimiento

subconciente y representándolo concientemente en términos explícitos – Por ejemplo,

cuando un lingüista trata de construir una gramática formal para un lenguaje. Mientras

el hablante nativo de un lenguaje conoce la gramática tácita y subconcientemente, el

lingüista intenta formular una gramática explícita. Un maestro podría usar la gramática

resultante para enseñar a los estudiantes. Si estos practican lo suficiente, llegarán a

compilar la gramática explícita en sus propios subconcientes y aprenderán a hablar el

lenguaje con mayor correctitud y eficiencia.

De la misma manera que muchos programa de bajo nivel no pueden ser completamente

decompilados, sino que sólo se les puede aproximar con programas de nivel superior, es

probable que mucho de nuestro pensar subconciente sólo pueda ser aproximado hasta

cierto punto por el pensar conciente. Las gramáticas formales de los lingüistas siguen

siendo un buen ejemplo.

En el pensar humano, los dos niveles del pensar pueden operar en cascada. En el

modelo dual de Kahneman-Tverksy, el nivel subconciente e intuitivo “rápidamente

propone respuestas intuitivas a los problemas de elección en la medida en que surgen”,

mientras que el nivel conciente, racional “supervisa la calidad de esas propuestas y

puede apoyarlas, corregirlas o reemplazarlas”[2].

El uso de la gramática formal para supervisar y corregir el uso instintivo del lenguaje

natural es un ejemplo familiar.

Page 53: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

La lógica como el lenguaje de alto nivel

del pensamiento.

La imagen de la lógica que emerge de estas consideraciones es la de un lenguaje de alto

nivel para el pensamiento racional, controlado y conciente. En ese alto nivel, el

razonamiento lógico reduce metas a sub-metas, deriva las consecuencias de las

observaciones e infiere las consecuencias de las candidatas a acciones. Este

razonamiento se puede hacer cuando haga falta para actuar o se le puede hacer por

adelantado. Cuando se hace por adelantado, sirve para transformar representaciones de

alto nivel de metas y creencias en representaciones de bajo nivel más eficientes. En este

nivel inferior de representación, la conducta es instintiva, automática y subconciente.

Todas esta relaciones se puede apreciar en este figura:

[1] Como en el ejemplo de la diseñadora del piojo.

[2] “Representatividad revisada: Substitución de atributos en juicio intuitivo”-

“Representativeness revisited: Attributive substitution in intuitive judgement”, Daniel

Kahneman and Shane Frederick. In Heuristics of Intuitive Judgement: Extensions and

Applications, Cambridge University Press, 2002.

Page 54: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

El Dilema del Prisionero

Imagine que, en su desesperación por enriquecerse tan rápido como sea posible, Ud

considera varias alternativas, infiere sus consecuencias más probables y decide que la

mejor es asaltar el banco más cercano. Persuade Ud a su mejor amigo, Keith, conocido

por su meticulosidad y atención a los detalles, de que le ayude a planear y ejecutar el

crimen. Gracias al esfuerzo coordinado, ambos tienen éxito en entrar al Banco durante

la noche, abrir la bóveda y huir con un buen millón de libras esterlinas (1.65 millones de

dólares al momento de escribir esto) como botín que guardan en el compartimiento de

las maletas de su vehículo.

Desafortunamente, tanto tiempo en la pobreza se reflejan en el estado de ese vehículo y

Ud es detenido por la policía que le reclama conducir de noche sin uno de los faros. Al

revisar su vehículo, los policias descubren el buen millón en la cajuela. Ud se declara

ignorante del origen del dinero, pero tanto Ud como su amigo son arrestados como

sospechosos de un robo.

Sin testigos y sin confesión alguna, la policia no puede condenarlos salvo por poseer

propiedad robada, que apenas implica una pena de 1 año. Sin embargo, si alguno

confiesa el crimen (en detrimento del otro) y el otro no confiesa, el primero obtiene la

libertad plena y el segundo es condenado a 6 años de cárcel. Si ambos confiesan,

entonces ambos compartirán la pena de 3 años de cárcel.

Este es un ejemplo con el clásico Dilema del Prisionero. En teoría de Juegos, el

problema de decidir entre esas alternativas de acción se presenta frecuentemente como

una tabla, en la que las filas y columnas representan las acciones de los agentes y las

celdas representan los resultados esperados. En este caso, la tabla es así:

Ud confiesa Ud no confiesa

Keith confiesa Ud se gana 3 años de cárcel

Keith se gana 3 años de cárcel

Ud se gana 6 años de cárcel

Keith se gana 0 años de cárcel

Su amigo no confiesa Ud se gana 0 años de cárcel

Keith se gana 6 años de cárcel

Ud se gana 1 año de cárcel

Keith se gana 1 año de cárcel

Si los dos prisioneros pudieran consultarse, se pondrían, obviamente (??) de acuerdo de

que la mejor opción para ambos es no confesar y evitar perjudicar al otro. Para evitar

esto, la policía los separa antes de que puedan hablarse. Así que cada uno debe decidir

que hacer sin saber lo que el otro hará.

La lógica del Dilema del Prisionero.

El Dilema del Prisionero tiene una representación natural en términos de las metas y

creencias del Prisionero.

Meta: Si me arrestan entonces confieso o no confieso.

Creencias: Me arrestan.

Page 55: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Un prisionero es condenado a 0 años de cárcel

si el prisionero confiesa

y el otro prisionero no confiesa.

Un prisionero es condenado a 6 años de cárcel

si el prisionero no confiesa

y el otro prisionero confiesa

Un prisionero es condenado a 3 años de cárcel

si el prisionero confiesa

y el otro prisionero también confiesa.

Un prisionero es condenado a 1 año de cárcel

si el prisionero no confiesa

y el otro prisionero tampoco confiesa

En todo se asume, desde luego, que los prisioneros creen lo que les dice la policía.

También se asume que ambos prisioneros saben que el mismo trato le ha sido ofrecido

al otro prisionero. Sin embargo, el análisis que hacemos al final de este capítulo puede

ser fácilmente modificado para cubrir otros casos.

La Lógica de los Juegos.

En general, cualquier juego de dos que se represente con una tabla puede también ser

representado con metas y creencias. Por ejemplo, la tabla:

Primer jugador hace A Primer jugador hace B

Segundo jugador hace

C

Primer jugador se gana AC

Segundo jugador se gana CA

Primer jugador se gana BC

Segundo jugador se gana CB

Segundo jugador hace

D

Primer jugador se gana AD

Segundo jugador se gana DA

Primer jugador se gana BD

Segundo jugador se gana DB

Puede ser representada con metas y creencias que, en el caso del primer jugador, son:

Meta: El primer jugador realiza acción A o El primer jugador realiza acción B.

Creencias: El primer jugador obtiene el resultado AC

si El primer jugador realiza la acción A

y el segundo jugador realiza la acción C.

El primer jugador obtiene el resultado BC

si El primer jugador realiza la acción B

y el segundo jugador realiza la acción C.

El primer jugador obtiene el resultado AD

si El primer jugador realiza la acción A

y el segundo jugador realiza la acción D.

Page 56: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

El primer jugador obtiene el resultado BD

si El primer jugador realiza la acción B

y el segundo jugador realiza la acción D.

Noten que, de acuerdo a las circunstancias, un jugador puede saber o no los resultados

del otro agente.

¿Debo llevar el paragüas?

Antes de discutir como resolver el dilema del prisionero, es útil compararlo con el

aparentemente no relacionado problema de decidir si debo o nó llevar el paragüas al

salir de casa en la mañana.

Podemos representar el problema del paragüas como un juego contra la naturaleza:

Llevo el paragüas No llevo el paragüa.

Llueve Sigo seco.

Cargo el paragüas.

Me mojo.

No llueve. Sigo seco.

Cargo el paragüas.

Sigo seco.

Podemos modelar el juego desde el lado del agente, usando metas y creencias para el

agente[1]:

Meta: Si salgo entonces Llevo el paragüas o no llevo el paragüas

Creencias: Salgo.

Cargo el paragüas

si llevo el paragüas.

Sigo seco

si llevo el paragüas.

Sigo seco

si no llueve.

Me mojo

si no llevo el paragüas

y llueve.

Ud puede controlar si lleva o no el paragüas, pero no puede controlar si llueve o no

llueve. Lo mejor que puede hacer es estimar la probabilidad de que llueva.

Esto suena familiar. En el capítulo anterior, cuando consideraba si robar o no el banco,

escribí:

“Puede controlar si robas o no el banco. Pero no puedes controlar si vas a ser capturado

y condenado. No sólo son posibilidades lejos de tu control, sino que ni siquiera puedes

predecir su ocurrencia con certeza. Lo mejor que puedes hacer es estimar sus

probabilidades”

Page 57: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Es el mismo cuento. Para decidir entre acciones diferentes, Ud debe inferir sus

consecuencias, juzgar las utilidades y probabilidades de esas consecuencias, y escoger

la acción con la mayor utilidad esperada global.

Suponga que Ud juzga que el beneficio de seguir seco, si llueve, es significativamente

superior al costo del inconveniente de tener que cargar el paragüas, llueva o no

llueva.[2]. En ese caso, Ud debe llevar el paragüas, si Ud estima que la probabilidad de

que llueva es relativamente alta. Pero, Ud debe dejar el paragüas si Ud estima que la

probabilidad de que llueva es relativamente baja.

Aplicando Teoría de Decisiones al caso del Paraguas

Esta clase de “pensamiento”[3], que combina juicios de utilidad con estimados de

probabilidad es el tema de la llamada Teoría de Decisiones. De acuerdo a esos

postulados, uno debe sopesar la utilidad de cada resultado posible de un acción con su

probabilidad y luego sumar todas las utilidades alternativas, así sopesadas, para medir la

utilidad esperada total de esa acción. Al final, uno debe seleccionar la acción con la

mayor utilidad esperada[4].

En el caso de decidir si llevar o no el paraguas, suponga que Ud considera que:

El beneficio de permanecer seco es D.

El costo cargar el paraguas es C.

El costo de mojarse es W.

La probabilidad de que llueva es P,

y en consecuencia, de que no llueva es (1 – P).

entonces, la utilidad esperada de llevar el paraguas es igual a el beneficio de

permanecer seco menos el costo de cargar el paraguas

= D – C.

La utilidad esperada de no llevar el paraguas es

el beneficio de permanecer seco si no llueve

menos el costo de mojarse si llueve

= (1 – P) ·D – P·W.

Por ejemplo, si el beneficio de permanecer seco es igual a un barra de chocolate, el

costo de cargar el paragua es de 2 barras de chocolate y el costo de mojarse es de 9

barras de chocolate, entonces:

D = 1

C = 2

W = 9.

La utilidad esperada de llevar el paraguas es = – 1.

La utilidad esperada de no llevar el paraguas es = (1 – 10P).

Por lo tanto, si la probabilidad de que llueva es mayor que .20, entonces Ud debería

llevar su paraguas. Si es menor que .20, Ud no debería llevar su paraguas. Si es

exactamente del .20, entonces no hay diferencia, en barras de chocolate, si Ud lleva o no

el paraguas.

El uso de la Teoría de Decisiones es normativo, por cuanto postula una situación ideal

(caracterizada por estimado y cálculos utilitarios), que sólo podemos aproximar en la

Page 58: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

realidad. En la vida real, tendemos a compilar esas decisiones rutinarias en reglas más

simples, representadas por metas y creencias:

Metas: Si salgo

y es probable que llueva ,

entonces cargo el paraguas.

Creencias: Es probable que llueva si hay nubes negras en el cielo.

Es probable que llueva si ha sido pronosticado por el canal del clima.

Resolviendo el Dilema del Prisionero.

Tal como en el caso anterior con el paraguas, en el que Ud decide cuando sale, Ud

puede controlar sus acciones, aún si se encuentra en el Dilema del Prisionero, pero no

puede controlar el mundo a su alrededor. En este caso, Ud no puede controlar las

acciones del otro prisionero. Puede, no obstante, tratar de predecirlas tan bien como sea

posible.

Suponga que Ud emplea el método de Teoría de Decisiones y considera que:

La utilidad de ganarse N años en la cárcel es de –N.

La probabilidad de que Keith confiese es de P,

y, por tanto, de que no confiese es (1 – P).

entonces, la utilidad esperada de que Ud confiese

es 3 si Keith confiesa,

y 0 si no lo hace

= –3·P + 0·(1 – P)

= –3·P.

La utilidad esperada de no confesar, para Ud,

es –6 se Keith confiesa,

y –1 si no lo hace

= –6·P – 1·(1 – P)

= –1 – 5·P.

Pero resulta que la utilidad de que Ud confiese es mayor que la de no confesar, –3·P >

–1 – 5·P, para todo P. Por lo tanto, sin importar cuál sea la probabilidad P de que Keith

confiese, Ud siempre estará en ventaja confesando.

Desafortunadamente, si Keith es tan sagaz como Ud y tiene las mismas creencias, metas

y utilidades suyas, entonces va a decidir, de la misma manera, confesar en contra suya,

en cuyo caso ambos tendrán, con toda seguridad, ganados sus 3 años en la cárcel.

Ambos estarían mejor olvidando todo este asunto de la Teoría de Decisiones,

arriesgándose y reusándose a confesar, en cuyo caso ambos obtendrían 1 año de cárcel.

Pero hay otra moraleja para esta historia – que lo malo no es la Teoría de Decisiones,

sino su propio juicio egoísta acerca de la utilidad:

Suponga que, en lugar de lo que ha hecho, Ud se preocupara (y ocupara) tanto por Keith

como por Ud mismo y considerara que:

La utilidad de que Ud gane N años en la cárcel y Keith M es – (N + M).

Entonces, la utilidad esperada de que Ud confiese

es –6 si Keith confiesa, y

Page 59: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

es –6 si no lo hace

= –6·P – 6·(1 – P)

= –6.

La utilidad esperada de que Ud no confiese

es –6 si Keith confiesa, y

es –2 si no lo hace

= –6·P – 2·(1 – P)

= –2 – 4·P.

Pero, ahora, la utilidad de su confesión es menor o igual que la de no confesar, –6 ≤ –2

– 4·P, para cualquier valor de P. Por lo tanto, de nuevo sin importar el valor que se

asigne a la probabilidad P de que Keith confiese, no hay ninguna ventaja para Ud en el

confesar.

En este caso, además, si Keith tiene las mismas (generosas) creencias, metas y

utilidades suyas, entonces va a decidir de la misma manera, no confesar y ambos

tendrán asegurado el año de cárcel mínimo.

Pero preocuparse tanto por Keith como por Ud mismo podría sonar un poco ingenuo.

Para ser más realista, suponga que Ud quiere a Keith la mitad de lo que se quiere Ud

mismo:

La utilidad de que Ud gane N años en la cárcel y Keith M es – (N + 1/2·M).

Entonces, la utilidad esperada de que Ud confiese

es –4.5 si Keith confiesa, y

es –3 si no lo hace

= –4.5·P – 3·(1 – P)

= –3 –1.5·P.

La utilidad esperada de que Ud no confiese

es –6 si Keith confiesa, y

es –1.5 si no lo hace

= –6·P – 1.5·(1 – P)

= –1.5 – 4.5·P.

Note que –3 –1.5·P = –1.5 – 4.5·P cuando P = .5. Por lo tanto, si Ud cree que la

probabilidad P de que Keith confiese es menor de .5 entonces Ud no debe confesar .

Pero si Ud cree que la probabilidad es mayor que .5 entonces Ud debe confesar – quid

pro quo.

Tal como ocurre en el caso de decidir si cargo o no el paragua al salir, estos cálculos son

un ideal normativo, al que apenas nos podemos aproximar en la práctica. En la realidad,

tendemos a compilar esta decisiones en reglas de conducta, representadas con metas y

creencias. Por ejemplo:

Metas: Si me ofrecen un trato

y el trato me beneficia

y el trato daña a alguien más de lo que me beneficia

y la persona es mi amigo

entonces rechazo el trato.

Page 60: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Si me ofrecen un trato

y el trato me beneficia

y el trato daña a alguien más

y la persona NO es mi amigo

entonces acepto el trato.

Estas reglas no son muy gentiles, pero debe estar claro que pueden ser redefinidas, tanto

para cubrir otros casos como para distinguir más precisamente otras características del

trato en consideración.

Conclusiones

Hay tres conclusiones. La primera es acerca del Dilema propiamente – es que vale la

pena cooperar con otros agentes y simplemente tratar de optimizar sobre sus propios

intereses. Esta conclusión es, desde luego, bien conocida en la literatura del Dilema del

Prisionero. Lo que quizás no es tan conocido es hasta que punto los beneficios de la

cooperación pueden obtenerse simplemente al considerar en bienestar de otros en la

función de utilidad.

La segunda conclusión es más general – que para decidir entre distintos cursos de

acción necesitamos, no solamente juzgar costos y beneficios de nuestras acciones, sino

también estimar las probabilidades de circunstancias fuera de nuestro control. Hemos

visto eso antes, pero debe ser enfatizado una vez más, no sólo porque es importante,

sino porque ha sido ampliamente ignorado en la lógica tradicional. La estrategia

mostrada en este capítulo muestra una forma en que la lógica y la probabilidad se

pueden combinar.

La tercer conclusión es más sutil. Es que los cálculos en la Teoría de Decisiones son un

ideal normativo, que algunas veces aproximamos en la vida real usando reglas más

simples basadas en metas y creencias. Esta relación entre la Teoría de Decisiones “de

nivel superior” y las reglas de decisión “de nivel inferior” es como la relación entre

representaciones lógicas de alto nivel y asociaciones de entrada-salida de bajo nivel.

Hemos visto, en otros capítulos, que podemos compilar representaciones lógicas de

metas y creencias en asociaciones de entrada-salida y, algunas veces, decompilar esas

asociaciones en representaciones lógicas. Más aún, pareciera que el pensamiento

humano, ambos niveles de pensamiento pueden ocurrir en cascada. Las asociaciones de

entrada-salida proponen, con mucha eficiencia, salidas candidatas como respuestas a

ciertas entradas, mientras que el razonamiento con metas y creencias supervisa la

calidad de esas respuestas.

Parece haber una relación parecida entre Teoría de Decisiones y reglas de decisión. Las

reglas puede ser ejecutadas eficientemente, pero la Teoría de Decisión da resultados de

mejor calidad. Como en el caso de las representaciones de nivel superior e inferior, la

Teoría de Decisiones puede ser usada para supervisar la aplicación de las reglas y

proponer modificaciones de las reglas que deben ser cambias, bien porque hay fallado o

porque el mismo ambiente ha cambiado. En su libro, Pensando y Decidiendo, Baron

discute, en detalle, relaciones similares entre las formas descriptivas, prescriptivas y

normativas de tomar decisiones.

Page 61: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

[1] Note que la representación en términos de creencias es más informativa que la

reprseentación del juego, puesto que indica con más precisión que la tabla, las

condiciones de las que depende el resultado de cada acción. Por ejemplo, la

representación con creencias indica que permanecer seco depende solamente de cargar

el paraguas y no depende de que llueva.

[2] En general, se asume que podemos cuantificar los beneficios y costos en las mismas

unidades, por tanto utilidad = beneficios – costos.

[3] De acuerdo Baron, en su “pensar y decidir”, nuestro “pensar” no es tal, sino un

“decidir” entre opciones diferentes. Es un asunto interesante hasta que punto “decidir”

podría involucrar “pensar” en un nivel diferente (quizás un meta-nivel). Habrá más de

esto más adelante.

[4] En términos matemáticos, si una acción tiene n resultados alternativos, con

utilidades u1, u2, ..., un que tienen, respectivamente, probabilidades p1, p2, ..., pn

entonces la utilidad esperada de la acción es p1·u1 + p2·u2 + ... + pn·un.

Actualizado por última vez: Mayo 2007

Page 62: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

El cambiante mundo

He propuesto que el propósito de la lógica sea el de ayudar a la gente a sobrevivir y

prosperar en el mundo. La lógica favorece tal tarea al proveer al agente con un medio

para construir representaciones simbólicas del mundo y con un medio para procesar esas

representaciones y razonar acerca del mundo. Podemos imaginar esta relación entre

lógica y el mundo de la siguiente manera:

Sin embargo, aún no hemos considerado la naturaleza de esta relación en detalle. En

particular, hemos obviado cualquier consideración acerca de la forma en que las

representaciones lógicas se conectan con la estructura del mundo.

Cabrían dos tipos de consideraciones: Cuál es la relación entre la lógica y los estados

estáticos del mundo y cuál es la relación entre la lógica y el cambio. Vamos a enfrentar

esas consideraciones a continuación:

Las Estructuras del Mundo (o el Universo)

La relación entre la lógica y el mundo puede ser vista desde dos puntos de vista. Desde

el punto de vista del mundo, las oraciones de la lógica representan ciertas características

de ese mundo. Desde la perspectiva de la lógica, el mundo le otorga su significado a las

oraciones. Este segundo punto de vista es conocido también como “semántica”.

Aún cuando un agente real sólo debe preocuparse por el mundo real, es conveniente

considerar otros mundos posibles, incluso mundos imaginarios y artificiales, como el

mundo en la historia de la zorra y el cuervo. Ambos tipos de mundo, tanto el real como

Page 63: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

los posibles, pueden ser entendidos como Estructuras del Mundo. Una estructura del

mundo es simplemente una colección de individuos y de relaciones entre ellos. Las

relaciones son también denominadas “hechos”. En la lógica tradicional, “las estructuras

del mundo” son normalmente conocidas como “interpretaciones”, “modelos” o, en otras

ocasiones, “mundos posibles”. Por simplicidad, las propiedades de los individuos son

consideradas como relaciones.

La lógica tradicional tiene una semántica muy simple, en la que tan sólo se debe

establecer si las oraciones son o no son verdaderas o falsas en la estructura del mundo.

La oraciones que son verdaderas son, normalmente, más útiles para el agente que las

oraciones que son falsas.

Una estructura del mundo generalmente se corresponde con un sólo estado, estático, del

mundo. Por ejemplo:

En la historia de la Zorra y el Cuervo, la Zorra, el Cuervo, el queso, el árbol, el área del

suelo bajo el árbol y el espacio entre el Cuervo y el suelo son todos individuos; por otro

lado, algo que (sos)tiene algo es una relación entre dos individuos. La oración “El

Cuervo tiene el queso” es cierta en la estructura del mundo al comienzo de la historia y

falsa en la estructura del mundo al final del la historia.

Una oración atómica es cierta en una estructura del mundo si la relación que expresa se

cumple en la estructura del mundo. De lo contrario es falsa.

La forma más simple de representar la estructura del mundo en términos lógicos es

representarla como un conjunto de oraciones atómicas que son ciertas en la estructura –

en este ejemplo, podríamos representar la estructura del mundo al comienzo de la

historia con las siguientes oraciones atómicas:

El cuervo tiene el queso.

El cuervo está en el árbol.

El árbol está suspendido en el aire.

El aire está arriba del suelo.

El árbol está arriba del suelo.

La zorra está en el suelo.

La diferencia entre esas oraciones atómicas y la estructura del mundo que ellos

representan es que en la estructura del mundo, los individuos y las relaciones entre ellos

tienen una especie de existencia que es independiente del lenguaje. Las oraciones

atómicas son, por otro lado, meras expresiones simbólicas que representan tales

relaciones externas. En particular, frases como “el Cuervo”, “el queso”, “el árbol”, etc

son nombres de individuos y “tiene”, “está en”, etc son nombres de relaciones entre

individuos.

El atractivo de la lógica como representación del mundo proviene, esencialmente, de su

habilidad para representar regularidades entre las estructuras del mundo por medio de

oraciones no-atómicas. Por ejemplo, en el ejemplo anterior:

Un objeto está sobre otro

si El primer objeto está arriba de un tercer objeto

Page 64: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

y el tercer objeto está arriba del segundo.

El valor de verdad de las oraciones no-atómicas se define a partir de los valores de

verdad de oraciones más simples – por ejemplo, por medio de “meta-oraciones” como:

Una oración con la forma “conclusión si condiciones” es cierta

si “condiciones” es cierta y “conclusión” es cierta

o “condiciones” no es cierta.

Una oración de la forma “todo tiene propiedad P” es cierta

si para cada cosa P en el mundo, “T tiene propiedad P” es cierta.

Estructuras del mundo dinámicas

Las estructuras del mundo en la lógica tradicional son estáticas, puesto que representan

un sólo estado (estático) del mundo. Una forma natural de entender el cambio es ver las

acciones y otros eventos como los causantes del cambio de estado de una estructura

estática del mundo a otra. Por ejemplo:

Page 65: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Esta visión del cambio es la base de la semántica de la lógica modal.

En la lógica modal, las oraciones reciben un valor de verdad relativo a una estructura

estática del mundo, imbuida en una colección de estructuras del mundo conectadas por

eventos que transforman el mundo. Las expresiones tales como “en el pasado”, “en el

futuro”, “después”, “desde” y “hasta” son tratadas como operadores modales, que se

convierten así en conectores lógicos como “y”, “o”, “si”, “no” y “todos”. Los valores de

verdad de las oraciones que contienen tales operadores modales se obtienen a partir de

los valores de verdad de las oraciones más simples – Por ejemplo, por medio de meta-

oraciones tales como:

Una oración con la forma “en el futuro P” es cierta en una estructura del mundo S si hay

una estructura del mundo S' que puede ser alcanzada desde S a través de una secuencia

de eventos que transforman los estados intermedios y la oración “P” es cierta en S'.

Por ejemplo, en la lógica modal, es posible escribir la oración:

“En el futuro el cuervo tiene el queso.”

Esta oración es cierta en la estructura del mundo al principio de la historia y falsa en la

estructura del mundo al final de la historia (suponiendo que el mundo se acaba luego de

que la Zorra toma el queso).

Un objeción contra la lógica modal es que su semántica, basada en la validez de

oraciones sobre una estructura del mundo en una colección de estructuras del mundo

conectadas por eventos que transforman estados, es demasiado complicada. Una

alternativa, que resuelve la objeción, es simplificar la semántica e incrementar el poder

expresivo del lenguaje lógico tratando los estados del mundo como individuos. Tratar

algo como un individuo, como si existiera, es reificarlo (NT: cosificarlo, hacerlo cosa)

y el proceso correspondiente es llamado reificación.

La ventaja de la reificación es que nos hace más fácil el hablar de las cosas (N.T. Es

decir, tendremos cosas de qué hablar). La desventaja es que parece molestar mucho a

algunas personas. Parece estar bien eso de hablar de objetos materiales como la zorra, el

cuervo y el queso, como individuos. Pero les parece más dificil el hablar acerca de

estados del mundo y otros objetos abstractos como si ellos también fuesen individuos

comunes.

El cálculo de situaciones

El cálculo de situaciones[1], que fuera desarrollado por McCarthy y Hayes en la

Inteligencia Artificial, comparte con la lógica modal el mismo método de ver el cambio

como la transformación de un estado del mundo en otro pero, a diferencia de esa lógica,

el cálculo reifica los estados como individuos. Como consecuencia, las estructuras del

mundo son dinámicas, puesto que incluyen las transiciones de estado como relaciones

entre estados.

Por ejemplo, con el cálculo de situaciones, en la historia de la Zorra y el Cuervo, hay

una sola estructura del mundo que contiene, además de los individuos ordinarios,

individuos que son estados globales. Es posible expresar tales oraciones así:

“El cuervo tiene el queso en el estado al principio de la historia”.

Page 66: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

“El cuervo tiene el queso en el estado que es

luego de que la zorra toma el queso, que es

luego de que el queso termina de caer, que es

luego de que el queso comienza a caer, que es

luego de que el cuervo cante, que es

luego de que la zorra adula al cuervo, que es

luego del estado inicial de la historia”.

La primera de estas dos oraciones es cierta y la segunda es falsa en la estructura del

mundo del cálculo de situaciones para nuestro ejemplo de la historia de la Zorra y el

Cuervo.

Reificar los estados del mundo como individuos hace posible representar y razonar

acerca de los efectos de las acciones en los estados. Si además reificamos los “hechos”,

entonces esta representación puede ser formulada como dos axiomas en el cálculo de

situaciones:

Un hecho se cumple en el estado que es luego de una acción

si el hecho es iniciado por la acción

y la acción es posible en el estado antes de la acción.

Un hecho se cumple en el estado que es luego de una acción

si el estado se cumplía en el estado del mundo que es antes de la acción

y la acción es posible en el estado antes de la acción

y el hecho no es terminado por la acción.

Nuestra versión original de la historia de la Zorra y el Cuervo puede ser reformulada

para el cálculo de situaciones así (luego de simplificar el primer axioma y

particularizarlo para este caso especial):

Un animal tiene un objeto en el estado del mundo que es luego de que animal tome

el objeto

si el animal está cerca del objeto

en el estado del mundo que es antes de que el animal tome el objeto

Estoy cerca del queso en el estado del mundo que es luego de que el cuervo canta

si el cuervo tiene el queso

en el estado del mundo que es antes de que el cuervo canta

El cuervo canta en el estado de el mundo que es después de que yo adule al cuervo.

En teoría, un agente, tal como la Zorra, podría incluir tales axiomas entre sus creencias,

para planificar sus acciones, inferir sus consecuencias e inferir las consecuencias de las

acciones de otros agentes. En la práctica, sin embargo, el uso del segundo axioma

(llamado el “axioma marco”), para razonar acerca de los hechos que no son afectados

por las acciones, es explosivo computacionalmente. Este problema, conocido como el

“problema del marco” (The frame problem) es, con mucha frecuencia, considerado

como un problema inherente al uso de la lógica para razonar acerca del cambio.

Podemos decir que no es la lógica la fuente del problema, sino la visión del cambio

plasmada en el cálculo de situaciones, que comparte con la lógica modal y que resulta

Page 67: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

demasiado global. Cada acción, sin importar que tal aislada sea su ocurrencia, se

considera que cambia el estado de todo el mundo. Peor que eso, para razonar acerca del

estado del mundo luego de realizar una secuencia de acciones, es necesario conocer

todas las otras acciones que ocurren en todo el mundo en el intermedio.

Así, para razonar acerca del estado del mundo que es luego de que la zorra adula al

cuervo, el cuervo canta, el queso cae y la zorra toma el queso, es necesario conocer y

razonar acerca de todo lo que ha ocurrido en todas partes del mundo entre el inicio y en

fin de la historia. Este ejercicio de pensamiento no es muy difícil en el mundo

imaginario de la zorra y el cuervo, pero es prácticamente imposible para un agente real

que vive en el mundo real.

Una visión del cambio orientada a los eventos

Una alternativa es abandonar la visión de que la acciones transforman estados globales

del mundo, reemplazándola con la visión de que las acciones y otros eventos pueden

ocurrir, incluso simultáneamente, en diferentes partes del mundo, en forma

independiente y sin afectar otras partes del mundo. En este método, el foco está sobre la

ocurrencia de los eventos y en el efecto de los eventos sobre los estados de cosas

locales.

Los eventos se dice que incluyen tanto acciones ordinarias (que son realizadas por

agentes) como otro tipo de eventos (como el aterrizar del queso en el suelo) que pueden

ser entendidos metafóricamente como acciones realizadas por objetos inanimados.

Por simplicidad, asumimos que los eventos ocurren simultáneamente. Para ello, un

evento con duración puede ser descompuesto en un evento instantáneo que lo comienza,

seguido por un estado de cambio continuo, seguido de por otro evento instantáneo que

lo termina.

Así, la caida del queso al suelo puede ser descompuesta en el evento en el que el queso

comienza a caer, que inicia el estado durante el cual el queso está cayendo, que es

terminado por el evento instantáneo en el que el queso aterriza en el suelo.

Los eventos inician y terminan relaciones entre individuos. Estas relaciones, junto con

los periodos para los que se cumplen, pueden ser considerados como estados locales.

Page 68: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Podemos ilustrar tal estado local y los eventos que lo inician y terminan así:

En el cuento de la Zorra y el Cuervo, podemos ilustrar el efecto de los eventos sobre el

estado del queso así:

Un cálculo de eventos simplificado

Aún cuando podemos representar las estructuras del mundo con oraciones atómicas, la

lógica nos permite hacerlo en forma todavía más compacta por medio de oraciones no-

atómicas. En particular, podemos obtener información acerca de estados locales a partir

de información acerca de la ocurrencia de eventos, por medio del siguiente axioma el

cálculo de eventos[2]:

Un hecho se cumple en un momento

si un evento ocurrió antes

y ese evento inició el hecho

y no hay otro evento

que ocurra luego del evento iniciador, antes del momento y

que termine el hecho.

Puesto que este axioma usa información acerca de la ocurrencia de eventos para

“calcular” información acerca de estados locales, le llamamos el “cálculo de eventos”.

El cálculo de eventos puede ser usado por un agente, al igual que el cálculo de

situaciones, para planificar sus acciones, inferir sus consecuencias e inferir las

consecuencias de las acciones de otros agentes. Puesto que requiere solamente

conocimiento local sobre el efecto de las acciones, es potencialmente más práctico que

el cálculo de situaciones.

Page 69: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Para aplicar el cálculo de eventos, en la práctica, necesitamos aumentarlo con otros

axiomas que definan la iniciación, terminación y el orden temporal de las cosas y

eventos. En el caso del cambio de ubicación del queso en la historia de la Zorra y el

Cuervo, necesitamos información acerca de eventos que efecten esa ubicación – por

ejemplo:

El queso cae en el momento 3.

El queso aterriza en el momento 5.

La zorra toma el queso en el momento 8.

Necesitamos saber cuáles estados son iniciados y terminados por esos eventos:

La caída de un objeto inicia el hecho de que un objeto está suspendido en el aire.

El aterrizaje de un objeto inicia el hecho de que el objeto está en el suelo.

El que el agente tome un objeto inicia el hecho de que el agente tenga el objeto.

Necesitamos también alguna explicación del hecho de que el cuervo tiene el queso al

comienzo de la historia. Esto se puede obtener, por ejemplo, suponiendo un evento

adicional, tal como:

El cuervo toma el queso en el momento 0.

Finalmente, necesitamos establecer las relaciones temporales entre momentos y eventos.

Puesto que, en este ejemplo, hemos usado convenientemente números para referirnos a

los momentos, podemos establecer esas relaciones con aritmética simple. Sin embargo,

debido a que el axioma de cálculo de eventos es muy vago acerca del tiempo, podemos

usar cualquier sistema para medirlo (al tiempo), siempre que podamos precisar cuando

es que un evento ocurre antes que otro y cuando un momento es después de cierto

evento. El que usemos números, fechas o cantidades horarias no tiene mayor

importancia.

Registrando el tiempo

Lo importante es registrar el tiempo para garantizar que Ud hace lo que debe hacer antes

de que sea muy tarde. Así, si Ud está hambriento, entonces necesita conseguir comida y

comerla antes de se desmaye por falta de energía. Si un vehículo se dirige hacia Ud,

entonces Ud debe apartarse antes de que lo arrolle. Si Ud tiene una cita a las 9:00 en el

trabajo, entonces Ud debe levantarse, lavarse, comer, vestirse, viajar al sitio y llegar

antes de las 9:00.

Para hacer todo a tiempo, necesita alguna clase de reloj interno, tanto para marcar los

eventos observados externamente, como para comparar el tiempo actual con los tiempos

prefijados para cualquier acción en el futuro derivada por su pensar. Esto implica más

complicaciones del ciclo del agente:

Para ciclar,

observe el mundo, registre cualquier observación junto con su momento de observación

piense,

decida que accciones realizar, escogiendo sólo acciones que no han excedido su límite.

actúe, cicle de nuevo.

Page 70: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Considere, por ejemplo, el problema de la Zorra cuando le da hambre. Cuando su

cuerpo le avisa que está hambrienta, debe estimar cuanto tiempo pasará sin comer y

derivar las metas de conseguir comida y comerla antes de que sea muy tarde. Una forma

de hacer esto es por medio de una meta de mantenimiento, con una representación

explícita del tiempo:

Si Yo estoy hambriento en Thambre

y Yo me desmayaré a las Tcolapso si Yo no como.

entonces Yo ob-tengo comida en Tcomida

y Yo como la comida a las Tcomida

y Tcomida es posterior a Thambre pero anterior a Tcolapso.

También necesita lidiar con cualquier ataque de algún cazador local:

Si unos cazadores me atacan en el momento Tataque

y Me atraparían a las T atrapan si Yo no huyo

entonces Yo huyo de los cazadores a las Thuida

y Thuida es posterior a Tataque pero anterior a Tatrapan.

Suponga que la zorra está hambrienta y siendo atacada por el cazador al mismo tiempo.

Entonces la zorra necesita hacer algunos cálculos mentales rápidos, para estimar cuanto

tiempo tiene para encontrar comida y cuanto para huir del cazador. Necesita calcular la

probabilidad y las utilidades de dos acciones diferentes, y programarlas para maximar

su utilidad esperada global. Si la zorra ha hecho sus cuentas bien y tiene la fortuna de su

lado, tendrá suficiente tiempo para satisfacer su hambre y escapar del cazador. De lo

contrario morirá, bien de hambre o bien por culpa del cazador.

Un critíco, sin embargo, podría objetar que este tipo de razonamiento es un ideal

normativo, más apropiado para un robot que para un ser biológico inteligente. Una

persona común, en particular, simplemente le daría mayor prioridad a escapar del ataque

que a satisfacer su hambre. Las reglas de mantenimiento de la persona sería “reglas

heurísticas” que se parecerían a:

Si Yo estoy hambriento en el momento Thambre

entonces Yo ob-tengo comida en el tiempo Tcomida

y Yo como la comida en el tiempo Tcomida

y Tcomida es tan pronto como se puede luego de Thambre.

Si alguien me ataca a las Tataque

entonces Yo huyo de los atacantes a las Thuida

y Thuida es inmediatamente después de Tataque.

De esta forma, suponiendo que Ud es la persona hambrienta y atacada al mismo tiempo,

digamos en el momento 1, sus metas lucirían así:

Yo ob-tengo comida en el tiempo Tcomida

y Yo como la comida en el tiempo Tcomida

y Yo huyo de los atacantes a las Thuida

y Thuida es inmediatamente después de 1 .

y Tcomida es tan pronto como se puede luego de 1 .

Page 71: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Entonces será fácil para Ud decidir, no sólo que Thuida debe ser antes que Tcomida sino

que Thuida debe ser el siguiente momento inmediato.

Sería lo mismo si Ud es atacado luego de darle hambre, pero antes de que pudiera

conseguir comida. Huiría inmediatamente y volvería a buscar comida luego si ha

logrado escapar del ataque.

Las reglas heurísticas dan un resultado rápido y fácil, que no siempre es óptimo. Si Ud

estuviera huyendo de un ataque y notara una pieza de queso en el suelo, un cálculo

normativo podría decirle que tiene suficiente tiempo para recoger el queso y para

continuar su escape. Pero las reglas heurísticas, que están diseñadas para lidiar con los

casos más comunes, probablemente no reconozcan esa posibilidad.

La relación entre cálculos normativos y reglas heurísticas es la misma que la relación

entre pensamiento racional y pensamiento intuitivo que se discutió en el capítulo sobre

niveles de conciencia.

Conclusión

El mundo es un lugar difícil que no se queda quieto. En el momento en el que Ud

termina de entender un problema, surge otro que es todavía más urgente. Le marea y le

mantiene en puntillas (o de puntitas).

Hacemos lo mejor que podemos para lidiar con el mundo formando representaciones

mentales. Pero no nos lo pone fácil. Borra el pasado y esconde el futuro, mostrando

apenas lo que es ahora y aquí.

En la lucha por sobrevivir y prosperar, usamos nuestra memoria de las observaciones

pasadas para generar creencias hipotéticas, explicar el pasado y precedir el futuro.

Comparamos esas prediciones con la realidad y revisamos nuestras creencias como haga

falta y si hace falta. Este proceso de formar hipótesis y revisar las creencias ocurre

aparte del ciclo del agente, en momentos en el que el mundo desacelera lo suficiente

como para que tomemos aliento. Este es uno de los temas principales que tenemos

pendiente todavía para discutir en el resto del libro.

Ultima modificación: Mayo 2007

[1] situación es simplemente otro nombre para estado global. .

[2] Es conveniente adoptar la convención de que un hecho se cumple justo en el

momento luego de que ocurre un evento que lo inicie, pero no en el momento del evento

que lo termina.

Page 72: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Lógica y objetos.

¿Cual es la diferencia entre la zorra y el cuervo, por un lado, y el queso por el otro?.

Desde luego, la zorra y el cuervo tienen “anima” y el queso es inanimado. Las cosas

animadas incluyen a los agentes, quienes observan cambios en el mundo y realizan los

suyos propios en el mismo mundo. Las cosas inanimadas son completamente pasivas.

Pero si Ud es un Conductista a ultranza, Ud creerá otra cosa. Quizás Ud cree que la

zorra, el cuervo y el queso son simplemente objetos, que pueden distinguirse unos de

los otros por sus diversas conductas de entradas y salidas.

Si la zorra ve al cuervo y el cuervo tiene comida en su boca entonces la zorra alaba al

cuervo.

Si el cuervo es alabado por la zorra

entonces el cuervo canta.

Si el queso está en el pico del cuervo y el cuervo canta

entonces el queso cae al suelo.

Si el queso está junto a la zorra

entonces la zorra toma el queso.

Ese Conductismo Extremo fue la moda en Psicología a mediados del siglo XX. Pues

bien, en Computación, ha sido moda también, en los últimos 25 años, con la forma de la

Orientación a los Objetos, OO.

Es fácil burlarse de los conductistas fundamentalistas del pasado. Pero no es tan fácil

confrontar a los Computistas e Ingenieros de Sistemas actuales que defienden la llamada

Orientación a los Objetos. La orientación a los objetos domina en cada aspecto de la

computación moderna: desde el modelado de sistemas, pasando por la especificación de

requerimientos y hasta el diseño e implementación de software y hardware.

Por un tiempo, durante los 1980s, parecía como si la Lógica Computacional podría

ocupar el papel central que ocupa la orientación a los objetos en la computación

moderna. Desafortunadamente, para la lógica, la orientación a los objetos ganó la

carrera.

Si llegamos a entender que es lo que hace la OO tan atractiva en la computación de hoy,

entonces podríamos aplicar las lecciones que aprendamos para mejorar la lógica

computacional, no sólo para efectos en Computación, sino también quizás para efectos

en el razonamiento humano.

Los objetos como individuos del cambiante mundo

En la forma en que la OO ve las cosas, el mundo consiste de objetos encapsulados, que

interactúan con los otros a través de su conducta de entrada-salida, previamente

declarada a los demás. No hay diferencia, en este aspecto, entre un agente inteligente y

un objeto inanimado. Un agente es simplemente otro objeto imbuido en el mundo. La

Page 73: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

orientación a los objetos nos voltea la imagen anterior en la que mostramos la relación

entre un agente y su mundo:

En esta imagen, los objetos corresponden a los individuos desde la perspectiva lógica

que hemos venido construyendo. Se trata de entidades semánticas, antes que de

entidades lingüísticas (o simbólicas). Sin embargo, mientas que en la lógica tradicional,

la relaciones estáticas entre los individuos son el tema principal y la conducta dinámica

es apenas un asunto secundario, en la orientación a los objetos todo es completamente al

revés – la conducta es lo primero y las relaciones estáticas son secundarias y muy poco

importantes en comparación.

Con la lógica imbuida en el componente pensante de un agente inteligente, el cambio se

resuelve tanto al nivel semántico como al nivel lingüístico-simbólico. En el nivel

semántico, el cambio es resuelto a través de la dinámica del ciclo de observación-

pensamiento-acción del agente. En el nivel lingüístico-simbólico, el cambio es

representado en el lenguaje mental del agente que describe metas y creencias, usando

bien la lógica modal, bien el cálculo de situaciones, bien el cálculo de eventos.

Page 74: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Con los objetos, el cambio es resuelto esencialmente en el nivel semántico. Los objetos,

tanto animados como inanimados, interactúan unos con otros, enviando y recibiendo

mensajes. Los mensajes recibidos corresponden a las observaciones que recibe el agente

de su ambiente. Los mensajes enviados corresponden a las acciones que el agente

realiza en el mundo.

Entre los objetos, el cambio puede ocurrir simultáneamente en diferentes partes del

mundo, así como en forma independiente y sin afectar otras partes del mundo. El

cálculo de eventos ve el mundo de una forma parecida. Pero mientras en el cálculo de

eventos esa perspectiva es meramente simbólica – para hablar del cambio sin tener que

realizarlo, en los sistemas orientados a objetos, esos cambios ocurren de hecho.

Al tomar en cuenta la naturaleza dinámica de los objetos, nuestra imagen orientada a los

objetos del mundo debería ser más o menos así:

Por ejemplo, en la versión orientada a los objetos de la historia de la zorra, el cuervo y

el queso, las diversas acciones y eventos corresponden a mensajes entre los objetos. Los

candidatos naturales para actuar como objetos que envían y reciben esos mensajes son

los mismos personajes: la zorra, el cuervo y el queso.

Page 75: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Los defensores naturales de la orientación a los objetos la consideran una forma natural

de ver tanto al mundo natural como a los mundos artificiales por construir. Los

ingenieros de sistemas, en particular, construyen sistemas complejos combinando

objetos que procuran una meta global. Normalmente, los objetos componentes, que

constituyen el sistema, son sub-sistemas ellos mismos, tal como en el caso de los

termostatos, impresoras, computadores, vehículos y aeroplanos, que se componen, a su

vez, de objetos más simples.

Encapsulamiento

Un objeto consiste de un estado local, que es una colección de valores de atributos, y

una colección de métodos, que los objetos usan para responder a mensajes o para

calcular valores de los atributos. Métodos y atributos quedan encapsulados dentro del

objeto, ocultos para otros objetos.

El encapsulamiento de los métodos de un objeto es una propiedad inherente del mundo

natural, puesto que no hay objeto que pueda conocer completamente todo lo que pasa

dentro de otro objeto. En teoría, si Ud pudiera ver dentro de otro objeto, podría

descubrir que es simplemente igual que Ud. Todo objeto – oso, árbol, río, montaña o

piedra – podría tener un espíritu, que conforma su estado mental interno. Por otro lado,

Page 76: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

podría Ud descubrir que ningún otro objeto, aparte de Ud mismo, tiene algún tipo de

estado interno.

El encapsulamiento de métodos sirve una función diferente en los mundos artificiales.

Reduce la complejidad en la construcción de sistemas complejos a partir de objetos

componentes, puesto que el ingeniero se concentra solamente en la conducta externa de

los componentes. Más aún, si uno de los componentes de un sistema que funciona se

deteriora o se torna obsoleto, puede ser reemplazado por otro componente que tenga la

misma conducta externa, sin afectar la conducta global del sistema.

En orientación por objetos no se distingue entre el estado interno y externo de los

objetos. Todos los valores de los atributos de un objeto están encapsulados dentro del

objeto. La única manera de conocer el valor de un atributo de un objeto es enviando un

mensaje al objeto pidiéndole el valor o recibiendo un mensaje del objeto que dice el

valor. Voy a explicar, más adelante, que esto es demasiado extremo.

Sin embargo, en otro aspecto, la OO es menos extrema que el conductismo extremo.

Cuando un ingeniero construye un sistema orientado a los objetos, el ingeniero necesita

adentrarse dentro del sistema, tanto para combinar los componentes pre-existentes como

para crear nuevos objetos.

Métodos

Para crear un objeto, los ingenieros necesitan iniciar (inicializar) los valores de sus

atributos y codificar sus métodos. Los valores de los atributos en el estado inicial

pueden ser dados expresamente en el momento de la creación o pueden ser obtenidos

por medio de métodos.

Los lenguajes OO, usados comúnmente para implementar métodos, son lenguajes

típicos de programación procedimental, cuya sintaxis es herencia de los lenguajes de

programación anteriores a la OO. A diferencia de la lógica, esos lenguajes no se pueden

leer declarativamente, puesto que no hacen ningún esfuerzo por representar el mundo a

su alrededor.

No obstante, aún cuando los métodos sean implementados en lenguajes de

programación procedimental, es natural plantear sus especificaciones en forma lógica.

Estas especificaciones tienen la forma de reglas de condición-acción en modo

declarativo:

Si un objeto recibe un mensaje con la forma R

entonces el objeto envía un mensaje con la forma S.

Por ejemplo,

Si la zorra recibe un mensaje que dice que el cuervo tiene el queso en la boca,

entonces la zorra envía un mensaje de alabanza al cuervo.

Si el cuervo recibe un mensaje de alabanza de la zorra,

entonces el cuervo envía un mensaje de canto.

Page 77: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Si el queso recibe un mensaje de canto del cuervo,

entonces el queso envía un mensaje de caída al suelo.

(Nota de Ernesto Ponsot:

Si el suelo recibe mensaje de caída del queso

entonces el suelo envía mensaje a la zorra de que está junto al queso.)

Si el queso envía un mensaje de que está junto a la zorra,

entonces la zorra envía un mensaje de que ella toma el queso.

Los métodos que implementan estas especificaciones dentro de un objeto se pueden

programar de muchas maneras. También pueden ser implementados, como veremos más

tarde y como debiera ser obvio para los lectores, por medio de metas y creencias en

forma lógica.

Clases

La OO se enorgullece de facilitarle al ingeniero la creación de nuevos objetos a través

de la instanciación de clases más generales de objetos, que le heredan a los nuevos

objetos sus métodos originales.

Por ejemplo, un ingeniero podría crear una nueva zorra creando una instancia de la clase

general de todos las zorras. La clase de las zorras podría tener métodos generales para

mensajes tales como la visión de otro animal con comida y la visión de la comida en su

poder. Podría, incluso, tener valores por omisión para atributos como el color de su piel

y la forma de su cola. Una nueva clase de zorra podría, entonces, heredar esos métodos

y valores de atributos tal como estén o con algunas modificaciones, quizás luego de

agregar ciertos métodos y atributos únicos para ese tipo de zorra.

Las clases se organizan en jerarquías taxonómicas. Por ejemplo, la clase de todos los

zorros podría heredar la mayoría de sus métodos y atributos de la clase de todos los

animales. La clase de todos los animales podría, a su vez, heredar de la clase de todos

los seres animados. La clase de los seres animados podría heredar de la clase de todos

los objetos materiales y, esta, finalmente, de la clase de todas las cosas.

Cambio de estado

Objetos y clases tienen diferentes tipos de existencia. Los objetos son individuos

concretos que, típicamente, existen y sufren cambios de estados. Las clases son

individuos abstractos ajenos al tiempo.

Por ejemplo, en la historia de la zorra y el cuervo, el queso cambia en respuesta a los

eventos locales que ocurren a su alrededor:

Page 78: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Estos cambios de estado son generados por métodos heredados de la clase de todos los

quesos, algunos de los cuáles, como la tendencia a estar en el aire luego de comenzar a

caer, son heredados a su vez de la clase de todas las cosas materiales. Sin embargo, las

clases en sí mismas no cambian de estado de la misma manera.

Los sistemas OO son entidades semánticas antes que simbólicas. Como consecuencia,

los objetos no tienen que tener memoria de su pasado. Cuando un objeto cambia de

estado, el estado suele limpiar el estado anterior reemplazándolo con uno nuevo.

Por su parte, las representaciones lógicas del cambio de estado lo describen sin, de

hecho, realizarlo. Por lo tanto, además de registrar el estado actual de un objeto, pueden

registrar los estados anteriores y predecir y explorar los futuros.

Reconciliando la lógica con los objetos

Hay una forma obvia de reconciliar la lógica con los objetos: usando lógica para

implementar los métodos asociados con los objetos y clases de objetos. Una

implementación típica podría incluir metas de mantenimiento y creencias, que

terminarían reduciendo metas a sub-metas con mensajes a otros objetos entre ellas. Por

ejemplo:

Page 79: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Meta: Si recibo un mensaje con la forma R

entonces resuelvo la meta G.

Creencias: G' si condiciones.

G si otras condiciones y Yo envío un mensaje con la forma S.

...

etc.

Crear un nuevo objeto instanciando una clase se convierte entonces en una forma de

instanciación lógica, reemplazando términos concretos (tales como Yo) por términos

abstractos (tales como “cualquier zorra”), quizás luego de agregarle métodos

especializados y asignarle valores particulares a algunos atributos del objeto.

La lógica, usada para implementar los métodos de esa manera, puede ampliar el alcance

de los sistemas orientados a objetos. Algunos objetos inteligentes podrían usar lógica,

no solamente para reaccionar a los mensajes que reciben, reduciendo metas a sub-metas,

sino también para representar el mundo, generando cursos alternativos de acción y

derivando sus consecuencias probables. Otros, quizás menos inteligentes podrían

también usar la lógica como lenguaje de implementación de alto nivel. En procura de

eficiencia, esas implementaciones pueden ser compiladas a más bajo nivel, incluso en

hardware. Por otro lado, estas implementaciones de bajo nivel podrían ser decompiladas

en su forma lógica, para analizar la conducta de los objetos sólos o en grupo y

mejorarla.

El combinar lógica con orientación por objetos puede extender nuestro modelo de

agente basado en lógica. Más aún, la combinación ofrece un contexto para extender

agentes aislados a sistemas multi-agentes, al imbuir a los agentes en una estructura

semántica compartida. Los diversos objetos en esta estructura pueden tener diversos

grados de inteligencia y diversos grados de actividad.

La estructura semántica de la OO es tal que los objetos pueden cambiar de estado

concurrentemente en diferentes sitios del mundo, con total independencia y sin afectar a

los demás. Estos cambios pueden ocurrir destructivamente, sin dejar ningún registro del

pasado. Sin embargo, aparte de esos cambios que ocurren externamente en la estructura

semántica, un agente inteligente puede usar lógica internamente para representar los

cambios antes de que ocurran. Estas representaciones internas no son destructivas como

las externas que acaban con los estados anteriores de mundo.

Para alcanzar esos beneficios, no tenemos que abandonar la distinción que se hace en la

lógica entre estructuras del mundo y sus representaciones simbólicas – tampoco la

visión de que las estructuras del mundo consisten de individuos, quizás con eventos y

con relaciones entre individuos. Por otro lado, puede que tengamos que dejar de lado la

versión extremista de la OO, que insiste en que todos los atributos de los individuos

están encapsulados y que todas la interacciones ocurren con mensajes.

Considere, por ejemplo, una vez más la historia de la zorra y el cuervo y,

particularmente, la observación de la zorra de que el cuervo tiene el queso. En la versión

estricta de la OO, la observación es un mensaje que es enviado a la zorra desde otro

objeto. Pero, ¿cúal objeto?. Los candidatos obvios son el cuervo y el queso. Pero, es

Page 80: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

claro que el objeto cuervo no tiene ninguna razón (meta) para enviar tal mensaje a la

zorra y que un verdadero queso no tiene metas reales de ningún tipo. Aún si aceptamos

que uno de ellos debe ser el responsable de enviar ese mensaje, ¿Por qué enviarlo a la

zorra?. ¿Por qué no a todas las otras criaturas del área también?.

En nuestra versión anterior de la historia y, con mayor generalidad, en nuestro modelo

basado en lógica, la zorra y el cuervo, no el queso, son agentes e interactúan entre sí,

pero no por pase de mensajes, sino observando el mundo y realizando acciones sobre

ese mundo. Las acciones que realizan pueden ser observadas por otros agentes en el

área.

Pareciera que la orientación a los objetos tiene poco que ofrecer a nuestra comprensión

de la historia, excepto porque nos recuerda que:

Es importante distinguir entre el mundo y cualquier representación que los

agentes puedan tener del mundo.

Es útil entender el mundo en términos de jerarquías, y

Los métodos usados por los agentes para interactuar con el mundo deben ser

encapsulados para que no sea observados directamente por otros agentes.

La OO tiene otra virtud: muestra como construir mundo artificiales en los que objetos

diferentes pueden cambiar de estado concurrentemente y con independencia. Pero esto

no es muy relevante en la historia de la zorra y el cuervo, en la que tan solo nos interesa

contar la historia, no construir el mundo.

Orientación a objetos moderada

Sin embargo, al comparar la lógica con la OO, parece que la OO va demasiado lejos –

encapsula todas las relaciones entre individuos dentro de objetos. Así, el hecho de que

el cuervo tiene el queso al comienzo de la historia queda atrapado dentro bien de uno o

de ambos, el cuervo y el queso, al alcance solamente de otros objetos si estos pueden

enviar y recibir mensajes del cuervo y el queso.

La alternativa es adoptar una forma menos extremista de orientación por objetos en la

que solamente aquellos individuos que activamente cambian de estado son considerados

objetos, y solamente aquellos métodos que ellos usan para interactuar con el mundo son

encapsulados. Las relaciones entre objetos y otro tipo de individuos no son

encapsuladas, sino que se dejan ver en el mundo externo.

Los objetos, en esta forma moderada de OO, interactúan con el mundo, no solamente

enviando y recibiendo mensajes, sino, en forma más generalista, observando relaciones

en el mundo y realizando acciones que cambian esas relaciones. Los mensajes pueden

ser vistos como actos verbales, en los que un objeto realiza un tipo especial de acción

cuyos efectos deben ser observados por otro objeto.

Otro tipo de individuos, como las propias clases, los eventos, los números, los

momentos del tiempo, pueden participar en relaciones sin ser forzados dentro de objetos

encapsulados.

Page 81: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Esta forma modelada de orientación por objetos es compatible con nuestro modelo de

agente basado en lógica. Le da cierta libertad a nuestra noción de agente, incluyendo

tipos más primitivos de objetos encapsulados. Enriquece nuestra noción de ambiente de

agente, al incluir, no sólo individuos simples y relaciones, sino individuos que son

objetos que pueden cambiar de estado concurrentemente usando métodos encapsulados

ocultos del mundo exterior.

Las redes semánticas como una

variante de la orientación por objetos.

Hay varios otros paradigmas de computación que soportan variantes similares de la

orientación por objetos. Entre esos se incluyen las redes semánticas y las plantillas o

frames, desarrollados como formalismos para representar conocimiento en Inteligencia

Artificial, y como el modelo de entidad-relación en bases de datos.

Las redes semánticas representan el universo como una red de relaciones entre

individuos. Por ejemplo, la red que representaría el estado inicial en el cuento de la

zorra y el cuero luciría así:

Aquí los nodos representan individuos y los arcos relaciones binarias entre pares de

individuos. La representación se puede extender a relaciones no binarias.

Page 82: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Las redes semánticas son representaciones orientadas a objetos por cuanto todos los

hechos sobre un individuo están ubicados en un mismo lugar, es decir, en torno al nodos

que representa al individuo. Estos hechos están representados por flechas conectadas a

ese nodo y por otros nodos a los cuáles están conectados esos actos.

Sin embargo, contrario a la orientación por objetos ortodoxa, las relaciones acá están

representadas sólo una vez y conectadas con todos los individuos que participan en la

relación. Más aún, son visibles desde el exterior y no están encapsulados dentro objetos.

Las redes semánticas también han sido usadas para representar información dinámica,

reificando eventos. Por ejemplo:

Aquí los términos de las red semántica “objeto” y “agente” apenas si están asociados

con nuestras nociones de objeto y agente usadas en este libro. El término “agente” es

análogo al sujeto de una oración en Español y el término “objeto” al objeto de tales

oraciones.

Page 83: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

La red semántica también ha sido usada para representar jerarquías de clases. Por

ejemplo:

A pesar de su nombre, las redes semánticas no son estructuras semánticas en el mismo

sentido que las estructuras OO, sino más bien son como estructuras semánticas

representadas por conjuntos de oraciones atómicas en lógica. De hecho, las conexiones

e las redes semánticas con esta forma:

Son símplemente representaciones de oraciones atómicas. Como las oraciones en lógica,

cuando se les usa para representar información dinámica con eventos reificados, las

redes semánticas representan el cambio sin realizarlo.

Por otro lado, las redes semánticas son como estructuras semánticas por cuanto

representan solamente hechos atómicos, antes que regularidades más generales. Aún

cuando se han desarrollado varias extensiones de las redes semánticas para representar

regularidades, estas extensiones no son convincentes.[1]

No obstante, las redes semánticas muestran que es posible usar objetos para estructurar

representaciones del mundo y no sólo la propia estructura del mundo. También ilustran

cómo suscribir una forma moderada de OO, en la cual los objetos dan estructura a

Page 84: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

nuestra comprensión del mundo sin ocultar todo dentro de ellos mismos. Los frames y

las bases de datos entidad-relación son similares en este sentido.

Oraciones orientadas a objetos.

Las redes semánticas son objetos unidireccionales que se pueden usar para estructurar

representaciones del mundo. Los objetos son usados también para dar estructura a

representaciones lingüísticas más generales.

Vimos en el capítulo 1 que las oraciones en lógica se pueden escribir en cualquier

orden. Sin embargo, algunas oraciones resultan mucho más fáciles de entender que

otras. Agrupar las oraciones en conjuntos de oraciones acerca de objetos es una forma

de hacerlas más fácil de entender.

Por ejemplo, podemos agrupar las oraciones atómicas que describen el comienzo del

cuento de la zorra y el cuervo en los siguiente conjuntos de oraciones:

El cuervo:

El cuervo tiene el queso.

El cuervo está en el árbol.

El árbol:

El árbol está sobre el suelo.

La zorra:

La zorra está en el suelo.

Por supuesto, podemos agrupar las mismas oraciones a través de otros objetos:

El queso:

El cuervo tiene el queso.

El árbol:

El cuervo está en el árbol.

El suelo:

El árbol está arriba del suelo.

La zorra está en el suelo.

Para obtener una buena organización, es preciso decidir cuáles objetos son los más

importantes.

Los lenguajes naturales, como el Inglés o el Español, llevan la orientación por objetos

un paso más allá, al usar las formas gramaticales en las que el comienzo de una oración

indica su tópico y la siguiente parte indica un comentario acerca de ese tópico. Esta

forma suele coincidir, aunque no es obligatorio, con la estructura gramatical de las

oraciones que tienen sujeto y predicado.

Las dos formas de orientación por objetos – agrupar los conjuntos de oraciones por

objetos y ordenar oraciones individuales por objetos – son frecuentemente combinadas.

Considere, por ejemplo, este par de oraciones:[2]:

Page 85: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

La primer ministro bajó del avión.

Los periodistas la rodearon.

Ambas oraciones están en la forma activa, lo cual parecer estar respetando algunas guias

y normas de estilo que se proponen para muchos textos en Inglés y Español.

Las dos oraciones se refieren a los tres objetos, la primer ministro (mencionada a través

del “la” en la segunda oración), los periodistas y el avión. La primer ministro es el único

objeto común entre ambas oraciones. Así que la primer ministro es el objeto que

conecta ambas oraciones. Sin embargo, el tópico cambia de la primer ministro a los

periodistas al cambiar de oración.

Ahora considere el siguiente par de oraciones lógicamente equivalente a las anteriores:

La primer ministro bajó del avión.

La rodearon de inmediato los periodistas.

En este caso, no sólo es que ambas oraciones se refieren a un objeto común, sino que

comparten el tópico. Sin embargo, la segunda oración se expresa en voz pasiva. A pesar

de esto y de contradecir aquellos manuales del buen estilo simplificados, mucha gente

opina que el segundo par de oraciones es más fácil de entender (NT ¿Qué opina el

lector?). Esto sugiere que la gente prefiere organizar sus pensamientos en forma

orientada a objetos, y esa preferencia tiene prioridad sobre la preferencia de voz activa

sobre voz pasiva.

La orientación por objetos no es la única forma de ordenar oraciones. En ambos pares

anteriores, las oraciones están ordenadas por la secuencia temporal de los eventos.

Ahora considere el siguiente conjunto de oraciones:

La zorra adula al cuervo.

El cuervo canta una canción.

El queso cae al suelo.

La zorra toma el queso.

Aquí las oraciones están agrupadas por proximidad temporal y ordenadas siguiendo la

secuencia temporal. Las oraciones están organizadas, no por objetos, sino por agentes,

tal como se acostumbra en la voz activa.

Es importante dejar las cosas en perspectiva. La orientación por objetos NO lo es todo.

En el caso del Inglés, no tiene nada que ver con el contenido de las oraciones vistas por

separado, pero es una forma de agrupar y ordenar las oraciones. Comparado con la

lógica, la OO es como el índice de un libro, y lógica es cómo el lenguaje en el que se

escribe el libro.

Page 86: Un libro de Agentes y Lógica Computacional...metas de este libro es mostrar que la programación lógica puede ser útil, no sólo para hacer computación, sino también para el razonamiento

Conclusiones

En comparación con la lógica, la atracción principal de la OO es que nos muestra como

construir mundos artificiales en los que los objetos pueden cambiar de estado al mismo

tiempo e independientemente de otros objetos. La OO facilita la construcción de nuevos

objetos a partir de los que existen y por medio de métodos encapsulados, reduciendo la

complejidad y aumentando la mantenibilidad.

Sin embargo, comparada con la lógica y con formas mas moderadas de OO, tales como

las redes semánticas, la OO extremista lleva el encapsulamiento muy lejos. En lugar de

esconder los atributos y las relaciones entre individuos dentro de los objetos, sería más

natural hacerlos visibles al exterior. En lugar de tratar todos los individuos como objetos

encapsulados, los objetos se pueden reducir a ser individuos que interactúan con el

universo.

La OO extremista también va muy lejos con la metáfora del pase de mensajes. El lugar

de forzar toda las interacciones entre objetos y el mundo a ser mensajes, sería más

natural para los agentes y otros objetos interactuar con el mundo haciendo

observaciones y realizando acciones.

La lógica computacional se puede reconciliar con ambas, la OO extremista y la

moderada, usando la lógica como un lenguaje de más alto nivel para implementar

métodos y para definir jerarquías de clasificación. Aunque no hemos discutido la

posibilidad en este capítulo, también puede ser usada por un diseñador de sistemas para

mostrar que una colección de objetos alcanza una meta común.

Las redes semánticas y los lenguajes naturales, como el Inglés y el Español, muestran

que la OO no se limita a el modelado de estructuras semánticas, sino que puede servir

para dar estructura a representaciones del mundo. Los ejemplos en lenguaje natural

muestran, en particular, que en el área de representaciones lingüísticas, la lógica y la

OO apuntan en direcciones diferentes. La lógica pretende representar el mundo,

mientras que la OO sólo se ocupa de una forma de ordenar las representaciones. Como

hemos visto, la OO necesita combinarse con otras formas de ordenar representaciones

para ser útil. Sería interesante, por ejemplo, ver como la OO podría ser usada para

ordenar una colección de oraciones tan complejas como las usadas para armar este

capítulo.

[1] Yo mismo he contribuido a esas extensiones en Deliyanni, A. and Kowalski, R.,

"Logic and Semantic Networks", en CACM, Vol. 22, No. 3, 1979, pp. 184-192.

[2] Este capítulo viene de “Discourse Analysis” de Gillian Brown y George Yule,

Cambridge University Press, 1983, pag 130.