Acontinuación podremos ver un breve resumen de los temas que me parecieron importantes
Esta sección y la siguiente introducen las ideas sobre las que se basan los sistemas actuales de inferencia lógicos. Comenzamos con algunas reglas de inferencia sencillas que se pueden aplicar a las sentencias con cuantificadores para obtener sus sentencias equivalentes, sin cuantificar. Estas reglas nos conducen de forma natural a la idea de que la inferencia de primer orden se puede hacer convirtiendo la base de conocimiento a lógica proposicional y utilizando la inferencia proposicional. La siguiente sección nos muestra un atajo que es obvio, ir hacia los métodos de inferencia que manipulen directamente las sentencias en lógica de primer orden.
Ingresa en el botón para ver un video y comprenderlo mejor
VideoUna vez que tenemos las reglas para inferir sentencias no cuantificadas a partir de sentencias cuantificadas, nos es posible reducir la inferencia de primer orden a la inferencia proposicional. En esta sección daremos las principales ideas; los detalles se verán en el Apartado 9.5. La primera idea consiste en que como una sentencia cuantificada existencialmente se puede sustituir por una especificación, una sentencia cuantificada existencialmente se puede sustituir por el conjunto de todas las especificaciones posibles.
La sección anterior describía cómo la comprensión de la inferencia en lógica de primer orden parte de los inicios de los 60. El lector observador (y seguramente los lógicos com312 INTELIGENCIA ARTIFICIAL. UN ENFOQUE MODERNO PROPOSICIONALIZACIÓN putacionales de los inicios de los 60) se habrá dado cuenta de que el enfoque de la proposicionalización es más bien ineficiente. Por ejemplo, dada la petición Malvado(x) y la base de conocimiento de la Ecuación (9.1) parece algo obstinado generar sentencias como Rey(Juan) ∧ Codicioso(Juan) ⇒ Malvado(Juan). Sin embargo, la inferencia de Malvado(Juan) a partir de las sentencias ∀x Rey(x) ∧ Codicioso(x) ⇒ Malvado(x) Rey(Juan) Codicioso(Juan) parece completamente obvio para un ser humano. Ahora mostraremos cómo hacerlo completamente obvio para un computador.
En este tema tenemos dos videos que puedes ver
Aquí Unificación Aquí sustitución
Por debajo de las funciones DECIR y PREGUNTAR, utilizadas para informar o interrogar a la base de conocimiento, están las funciones primitivas ALMACENAR y BUSCAR. ALMACENAR (s) guarda una sentencia s en la base de conocimiento, y BUSCAR(q) devuelve todos los unificadores que unifican la petición q con alguna sentencia de la base
El algoritmo de encadenamiento hacia delante de la Figura 9.3 está diseñado más bien para facilitar su comprensión que para que sea eficiente en su ejecución. Hay tres fuentes de complejidad posibles. Primero, el «bucle interno» del algoritmo requiere que se encuentren todos los unificadores posibles de manera que la premisa se unifique con un conjunto adecuado de hechos de la base de conocimiento. A este proceso, a menudo se le denomina emparejamiento de patrones y puede ser muy costoso. Segundo, el algoritmo vuelve a comprobar cada regla en cada iteración para ver si sus premisas se satisfacen, incluso cuando se han realizado muy pocas adiciones a la base de conocimiento en cada iteración. Por último, el algoritmo podría generar muchos hechos que son irrelevantes para el objetivo. Vamos a abordar cada uno de estos problemas por separado.
El problema de emparejar la premisa de una regla con los hechos de la base de conocimiento podría parecer algo bastante sencillo. Por ejemplo, suponga que queremos aplicar la regla Misil(x) ⇒ Arma(x) Entonces necesitamos encontrar todos los hechos que se unifican con Misil(x); en una base de conocimiento indexada de forma adecuada, esto se puede realizar en tiempo constante por cada hecho. Ahora considere una regla como Misil(x) ∧ Tiene(Nono, x) ⇒ Vende(West, x, Nono). Otra vez, podemos encontrar todos los objetos que tiene Nono en un tiempo constante por objeto; entonces, por cada objeto, podríamos comprobar si es un misil. Sin embargo, si la base de conocimiento tiene muchos objetos en posesión de Nono y unos pocos misiles, sería mejor encontrar todos los misiles primero y entonces comprobar si son de Nono. Este es el problema de la ordenación de los conjuntores: encontrar una ordenación para resolver los conjuntores de las premisas de una regla de tal manera que el coste se minimice. Resulta que encontrar la ordenación óptima es un problema NP-duro, pero hay buenas heurísticas disponibles.