next up previous
Next: Contenidos de la práctica Up: PRÁCTICA 2 REPRESENTACIÓN DEL Previous: PRÁCTICA 2 REPRESENTACIÓN DEL

Un sistema de representación del conocimiento e inferencia

En [1] puede encontrarse la documentación y código fuente de un sistema de representación del conocimiento e inferencia. El lenguaje de representación del conocimiento es una versión restringida de la lógica de predicados, conteniendo sólo sentencias atómicas y cláusulas de Horn de la forma tex2html_wrap_inline207 donde cada uno de los antecedentes y el consecuente son sentencias atómicas. Se supone que todas la variables están cuantificadas universalmente. Por simplicidad este lenguaje no permite símbolos de funciones ni igualdad. Obsérvese también que se necesita una distinción sintáctica entre variables y constantes.

A continuación describimos las líneas maestras para la construcción de un sistema de este tipo.gif

  1. Una tarea preliminar es la especificación en lenguaje BNF de la sintaxis del lenguaje.
  2. Se implementan los tipos de datos y funciones de acceso para las expresiones lógicas del lenguaje. Una implementación adecuada puede ser la clásica de OPERADOR/ARGUMENTOS tanto para las sentencias atómicas (Predicado/Términos) como para las cláusulas Horn (Identificador/Consecuente y Antecedentes).
  3. Se implementan los tipos de datos y funciones de acceso para substituciones. Una substitución tex2html_wrap_inline209 es una lista que vincula variables con individuales particulares. Por ejemplo tex2html_wrap_inline211 Debe implementarse también una rutina de substitución que devuelve el resultado de aplicar una substitución tex2html_wrap_inline209 a una sentencia tex2html_wrap_inline215 :

    tex2html_wrap_inline217

  4. También es necesaria una rutina de unificación. En [2] se propone el seudocódigo de una rutina de unificación. Dadas dos expresiones p y q la rutina de unificación debe devolver una substitución tex2html_wrap_inline209 que haga que p y q parezcan la misma expresión:

    tex2html_wrap_inline225 donde tex2html_wrap_inline227

    Por ejemplo:

    tex2html_wrap_inline229

    tex2html_wrap_inline231

    Si no se puede encontrar tal sustitución la rutina debe devolver un fallo. Obsérvese por tanto que será necesario distinguir entre una substitución vacía y el resultado fallido de una unificación.

    En la rutina de unificación que se propone en [2] se supone una implementación de las expresiones lógicas de tipo OPERADOR/ARGUMENTOS. De ahí se deduce el comportamiento de las funciones COMPOUND?, LIST?, OP?, ARGS?, FIRST?, REST?.

    Se supone también que se renombran las variables del segundo argumento en caso de conflicto de nombres.

    En principio

    UNIFY(Conoce(Pepe,x), Conoce( x,Pepa)) devuelve fallo pero es irrelevante que en la Base de Conocimiento tuviésemos Conoce(x, Pepa) ó Conoce(z, Pepa), con lo que renombrando las variables del segundo argumento

    tex2html_wrap_inline239

    Obsérvese también que la parte occur-check del seudocódigo propuesto es necesaria porque no se puede unificar una expresión que contiene una variable dada con esa misma variable. Si queremos unificar P(x) y P(F(x)) y sustituimos x/F(x) nos quedará P(F(x)) y P(F(F(x))), y realizando de nuevo la misma sustitución nunca llegaríamos a eliminar x.

    Téngase en cuenta que la rutina de unificación nos permitirá inferir con Modus Ponens Generalizado:

    Para las sentencias atómicas tex2html_wrap_inline253 ; si hay una substitución tex2html_wrap_inline209 tal que tex2html_wrap_inline257 , entonces

    tex2html_wrap_inline259

    Así por ejemplo si en nuestra base de conocimiento tuviésemos

    tex2html_wrap_inline261

    Conoce(Pepe, Pepa)

    y ya que tex2html_wrap_inline229 podemos inferir

    tex2html_wrap_inline267

  5. El paso siguiente es el diseño e implementación de la base de conocimiento con funciones adecuadas de almacenamiento y recuperación.
  6. A continuación se implementa un mecanismo de inferencia forward-chaining (encadenamiento hacia delante). De nuevo en [2] se propone el seudocódigo de un algoritmo de encadenamiento hacia delante.

    Se supone que al añadir una nueva sentencia atómica a la base de conocimiento se dispara el proceso de inferencia y se añaden a la base de conocimiento todas las sentencias que pueden inferirse. Si las premisas se pueden igualar de varias formas se inferirá cada conclusión correspondiente. Por otra parte si la sentencia ya estaba en la base de conocimiento el algoritmo no hace nada. Para esto último el algoritmo utiliza el concepto de renaming: una sentencia es idéntica a otra excepto en el nombre de las variables. Por ejemplo Conoce(x, Pepe) y Conoce(y, Pepe) son idénticas excepto en el nombre de las variables ya que sólo se diferencias en la elección de x ó y.

    El seudocódigo propuesto utiliza también la idea de composición de sustituciones: tex2html_wrap_inline273 es la sustitución tal que

    tex2html_wrap_inline275

    Por ejemplo: si

    math119

    math123

  7. Para poder responder a las preguntas de un usuario el sistema debe tener un mecanismo de backward-chaining (encadenamiento hacia atrás). De nuevo en [2] se propone el seudocódigo de un algoritmo de encadenamiento hacia atrás.

    El algoritmo propuesto está diseñado para responder a preguntas propuestas a la base de conocimiento. Primero se chequea si la respuesta puede encontrarse directamente en la base de conocimiento. Luego se buscan todas las implicaciones cuyo consecuente se puede unificar con la pregunta y se validan las premisas de esas implicaciones también con encadenamiento hacia atrás. Si la premisa es una conjunción de elementos el algoritmo los procesa uno a uno construyendo el unificador global para toda la premisa. En el algoritmo propuesto debe prestarse especial atención a la forma en la que se responde a la pregunta.

  8. Una vez completados los pasos anteriores se estará en disposición de proporcionar un interfaz del sistema que incluya los siguientes comandos del tipo:


next up previous
Next: Contenidos de la práctica Up: PRÁCTICA 2 REPRESENTACIÓN DEL Previous: PRÁCTICA 2 REPRESENTACIÓN DEL

Alvaro Barreiro Garcia
Wed Nov 19 20:36:26 MET 1997