siguiente arriba atrasadelante (solo si previamente se ha ido atras)

1.3.1. Declarativo y procedimental

El conocimiento que se aplica para resolver un determinado tipo de problemas puede expresarse de dos formas:

A veces ocurre que el conocimiento se expresa de manera natural en una forma mejor que en la otra. Y a veces ocurre que es más fácil aplicarlo si está expresado en una forma que en otra.

Aunque en este Capítulo nos centramos en el conocimiento, abstrayendo los lenguajes de representación (que son objeto de los Capítulos siguientes), para poder ilustrar las ideas con ejemplos tendremos que hacer uso de algún lenguaje. De momento utilizaremos el lenguaje natural o algunos esquemas sencillos.

Tomemos como primer ejemplo el dominio de conocimiento sobre estructuras de datos. Hay un conjunto de conceptos básicos. Por ejemplo, los referentes a las listas:

Entre otros muchos problemas a resolver en este dominio está el de la ordenación de listas. Podemos

En este caso resulta mucho más fácil de entender la expresión declarativa del conocimiento que la expresión procedimental. Sin embargo, su aplicación ingenua por un agente conduce a tiempos de ejecución inaceptables, mientras que el procedimiento (que corresponde al algoritmo llamado «quicksort» ) es de los más eficientes. Este ejemplo se desarrolla con detalle en el Apéndice A (Apartado A.4.2), utilizando Prolog como lenguaje de representación.

Pasemos a un ejemplo más prosaico, adaptado de Harmon y King (1985) [40]. Consideremos el conocimiento que tiene que aplicar un cajero de banco para decidir si debe pagar, anotar en cuenta o rechazar un talón. Un procedimiento podría ser el indicado de forma gráfica en la Figura 1.3. Y el mismo conocimiento se puede expresar de forma declarativa con las reglas de la Figura 1.4. En realidad, no es exactamente el mismo conocimiento, y no sólo porque contiene algo más (la regla 13): es fácil ver que, según cómo se apliquen las reglas en una determinada situación, puede ser que se sigan exactamente los pasos del procedimiento o que se acorte éste.


pict


Figura 1.3: Conocimiento procedimental para pagar un talón



pict


Figura 1.4: Conocimiento declarativo para pagar un talón


La expresión procedimental tiene ahora la ventaja de ser «autocontenida» : se puede aplicar directamente sin necesidad de «inteligencia» alguna, y se puede traducir inmediatamente a un programa escrito en un lenguaje de programación. Para aplicar la expresión declarativa hace falta un conocimiento de otro tipo («estratégico» ), el que determina en qué orden se aplican las reglas. Por otra parte, la expresión declarativa, al ser más modular, es más abierta y más fácilmente modificable y ampliable (como se ha hecho al añadir la definición de «fecha correcta» con la regla 13). Este ejemplo no se ha extraído de ninguna aplicación real, ni se ha consultado a un experto en este dominio. Este experto tendría seguramente mucho que añadir o quitar, y lo haría más fácilmente sobre las reglas que sobre el procedimiento. (Si analizando las reglas observa el lector alguna contradicción, vea la aclaración sobre lógica monótona, en el Apartado 2.4.1).

En general, la expresión declarativa tiene las ventajas de ser más expresiva (salvo en el caso de que el conocimiento, por su propia naturaleza, tenga la forma procedimiental) y de facilitar la reutilización y el mantenimiento. Pero la expresión procedimental siempre conduce a una implementación más eficiente que la declarativa. La Figura 1.3 es la solución (o una solución) del problema; con las reglas de la Figura 1.4 el agente tiene que buscar la solución.


siguiente
arriba atrasadelante (sólo si previamente se ha ido atras)


algunos derechos reservados DIT-ETSIT-UPM
Portada