En general una regla de produccion se representa como
Si H1 y/o H2 y/o H3... entonces H4 y/o H5...
Ejemplos:
Si H1 y H2 entonces H3 y H4.
Si H3 o H4 entonces H5 y H6 o H7.
Si H2 y H7 o H6 entonces H9.
Donde los hechos son predicados que deben cumplirse.
R1: Si X>3 y Y=5 entonces Z =3 y A<5.
En caso que X no sea mayor que 3 la regla falla y se buscara otra regla. En esta caso debe cumplirse ambas condiciones (para la X y la Y)..
Si la regla se cumple se ejecuta la acción para Z y A.
R2: Si X<5 o Y >2 entonces Z = 7
Aquí si la primera condición falla (X<5) se pasa la segunda condición. Basta con que se cumpla una de las dos condiciones.
Los hechos son afirmaciones que se refieren a los conceptos (clases y objetos) y a las relaciones (atributos) entre ellos.
Ejemplos de representación de los hechos en diferentes aplicaciones de la IA.
MYCIN: Sistema experto para el diagnostico medico
el organismo es un bacteroride
(sujeto) (relación) (concepto)
la coloración del organismo es gram+
(atributo) (sujeto) (valor)
DENDRAL: Sistema experto para la prospección geologica
resonancia espectral con numero atómico igual a numero
(sujeto) (atributo) (valor)
M1(shell): Sistemas expertos vacios o conchas, permiten construir la base de conocimiento.
Mejor color = tinto
(expresión = (valor)
PROLOG: Lenguaje de programacion basado en la logica
Gusta (maria, tenis)
(relación) ((concepto), (concepto) ...)
EXSYS(shell): Sistema experto vacio o concha al igual que M1
El costo de la computadora es el factor de mayor importancia
[calificador (terminado en verbo)] (valor)
Ejemplos de reglas:
Regla 1: Si tiene espina dorsal
Y tiene cola horizontal
Y tiene un agujero para respirar
Y tiene sangre caliente.
Y los pequeños son alimentandos con leche materna
Y los hijos nacen directamente vivos
Entonces es un cetáceo.
Regla 2: Si es un cetáceo
Y mide mas de 25 pies
Entonces es una ballena
Regla 3: Si es un cetáceo
Y mide aproximadamente 6 pies
Y tiene la aleta tope vertical
Y tiene una nariz roma-pequeña
Y vive cerca de las costas
Entonces es una marsopa
Regla 4: Si es un cetáceo
Y mide aproximadamente 6 pies
Y tiene la aleta tope vertical
Y tiene una nariz en forma de pico
Y vive en el mar
Entonces es un delfín
Regla 5: Si tiene espina dorsal
Y tiene una aleta vertical
Y respira a través de branquias
Entonces es un pez.
Regla 6: Si es un pez
Y tiene la aleta tope triangular
Y tiene la boca debajo de la cabeza
Entonces es un tiburón
Observen que definieron las reglas para los cetáceos y a partir de esta se definió al delfín, la ballena, etc. Igual sucedió para los peces.
jueves 31 de enero de 2008
Representacion a través de reglas
lunes 28 de enero de 2008
El motor de inferencias en los sistemas expertos
El Motor de Inferencias (MI) es un programa de control cuya función es seleccionar las reglas posibles a satisfacer el problema, para ello se vale de ciertas estrategias de control sistemáticas o de estrategias heurísticas.
Estrategias de control sistemático:
Encadenamiento hacia adelante o hacia atrás.
Búsqueda en profundidad o a lo ancho.
Régimen de control irrevocable o por tentativa.
Estas estrategias son de forma sistemática las cuales deben llevar a la solución del problema. Podemos decir que el control sistemático es un programa de control hecho de forma "algorítmica" que aplican una heurística de propósito general cuya función es una exploración exhaustiva y metódica de la base de conocimientos.
Estos mecanismos de control son muy generales y a veces resultan ineficientes ya que siguen una secuencia de búsqueda demasiado rígida, para resolver esto se idearon las estrategias de control heurísticas.
Las estrategias de control heurísticas son programas de control que utilizan una heurística más específica y su función es una selección más restringida orientada por las necesidades del problema. Estas estrategias actúan sobre el control sistemático y en ciertos casos toma el control y dirige la búsqueda hacia ciertos criterios rompiendo así el control sistemático, una vez logrado su objetivo le devuelve el control nuevamente al sistemático.
Estrategias de control heurísticas:
Orden de las reglas.
Mayor credibilidad en las reglas.
Menor número de cláusulas no instanciadas.
Mayor número de conclusiones en las reglas.
Podemos decir que un sistema experto, es un sistema informático que utiliza técnicas apropiadas para la representación de conocimientos y la manipulación de este, de forma tal que exhiba el comportamiento de un avezado especialista en un determinado dominio del saber.
Estrategias de control sistemático:
Encadenamiento hacia adelante o hacia atrás.
Búsqueda en profundidad o a lo ancho.
Régimen de control irrevocable o por tentativa.
Estas estrategias son de forma sistemática las cuales deben llevar a la solución del problema. Podemos decir que el control sistemático es un programa de control hecho de forma "algorítmica" que aplican una heurística de propósito general cuya función es una exploración exhaustiva y metódica de la base de conocimientos.
Estos mecanismos de control son muy generales y a veces resultan ineficientes ya que siguen una secuencia de búsqueda demasiado rígida, para resolver esto se idearon las estrategias de control heurísticas.
Las estrategias de control heurísticas son programas de control que utilizan una heurística más específica y su función es una selección más restringida orientada por las necesidades del problema. Estas estrategias actúan sobre el control sistemático y en ciertos casos toma el control y dirige la búsqueda hacia ciertos criterios rompiendo así el control sistemático, una vez logrado su objetivo le devuelve el control nuevamente al sistemático.
Estrategias de control heurísticas:
Orden de las reglas.
Mayor credibilidad en las reglas.
Menor número de cláusulas no instanciadas.
Mayor número de conclusiones en las reglas.
Podemos decir que un sistema experto, es un sistema informático que utiliza técnicas apropiadas para la representación de conocimientos y la manipulación de este, de forma tal que exhiba el comportamiento de un avezado especialista en un determinado dominio del saber.
viernes 25 de enero de 2008
Representacion del conocimiento en un sistema experto
Para desarrollar un sistema experto primero es necesario abordar un área de interés, dentro de esta área se seleccionan a los expertos, que son los especialistas capaces de resolver los problemas en dicha área. Por ejemplo el área de interés de las empresas de proyectos, son precisamente los proyectos y un especialista podría ser un arquitecto, un ingeniero civil, etc. Ahora bien, casi siempre estos especialistas, son expertos en un dominio específico y es sobre este dominio, donde poseen su mayor experiencia (Dominio de Experticidad), por ejemplo un Ing. civil especializado en cimientos.
Una vez seleccionado al experto o a los expertos y estos estén de acuerdo en dar sus conocimientos, comienza a jugar su papel el "Ingeniero de Conocimientos", que es el encargado de extraerle los conocimientos al experto y darle una representación adecuada, ya sea en forma de reglas u otro tipo de representación, conformando así la base de conocimientos del sistema experto.
Formas de representación de los conocimientos:
Reglas de producción
Redes semánticas
Marcos (Frames).
La forma de representación más usada es por reglas de producción, también llamadas reglas de inferencias. Casi todos los sistemas expertos están basados en este tipo de representación, ahora nos ocuparemos de los sistemas basados en reglas.
Las reglas de producción son del tipo:
SI (premisas) ENTONCES (conclusión) (SI A ENTONCES B).
Donde tanto las premisas como la conclusión, no son más que una cadena de hechos conectados por "Y" o por "O", de forma general sería:
SI (hecho1) Y/O (hecho2) Y/O......(hechoN) ENTONCES (hecho1) Y/O .....(hechoN).
Los hechos son afirmaciones que sirven para representar conceptos, datos, objetos, etc. Y el conjunto de hechos que describen el problema es la base de hechos.
Ejemplo de hechos:
Juan es un estudiante
Juan tiene 8 años
el perro es blanco
a María le gusta el cine
Pedro prefiere la película
la edad de Luis es de 25 años
Pedro tiene un salario de 200 pesos
Una regla es una combinación de hechos que permite representar conocimientos y sacar inferencias de los mismos.
Ejemplo de reglas:
R1: SI (Juan es un estudiante) Y (Juan tiene 8 años) Entonces (Juan estudia en la primaria).
R2: SI (el perro es blanco) Y (el perro se llama Dinky) ENTONCES (el perro es de Juan).
R3: SI (a María le gusta la película) Y (Pedro prefiere la pelota) ENTONCES (hacen falta 2 televisores).
Observe como partiendo de hechos conocidos que describen algún conocimiento se pueden inferir nuevos hechos (nuevos conocimientos), por otra parte la regla #2 (R2), no tiene porque ser totalmente cierta, existe la posibilidad de que el perro sea de Juan, quizás se puede afirmar, si fuéramos a cuantificar esa posibilidad, que el perro pertenece a Juan con una certeza de un 80%, y por último la regla #3 (R3) es dependiente del contexto, ya que aquí se supone que ambos viven juntos y que los programas de TV coinciden.
La Base de Conocimientos (BC).
Son el conjunto de reglas que permiten representar los conocimientos del dominio de experto donde cada regla aisladamente tiene significado propio. Normalmente los conocimientos son de tipo declarativo por lo cual la BC casi siempre es una descripción de los conocimientos del experto, por lo tanto requiere de algún mecanismo que obtenga las inferencias adecuadas para resolver el problema, alguien que seleccione las reglas y las vaya ejecutando, ese alguien es el motor de inferencias., reglas de produccion
Una vez seleccionado al experto o a los expertos y estos estén de acuerdo en dar sus conocimientos, comienza a jugar su papel el "Ingeniero de Conocimientos", que es el encargado de extraerle los conocimientos al experto y darle una representación adecuada, ya sea en forma de reglas u otro tipo de representación, conformando así la base de conocimientos del sistema experto.
Formas de representación de los conocimientos:
Reglas de producción
Redes semánticas
Marcos (Frames).
La forma de representación más usada es por reglas de producción, también llamadas reglas de inferencias. Casi todos los sistemas expertos están basados en este tipo de representación, ahora nos ocuparemos de los sistemas basados en reglas.
Las reglas de producción son del tipo:
SI (premisas) ENTONCES (conclusión) (SI A ENTONCES B).
Donde tanto las premisas como la conclusión, no son más que una cadena de hechos conectados por "Y" o por "O", de forma general sería:
SI (hecho1) Y/O (hecho2) Y/O......(hechoN) ENTONCES (hecho1) Y/O .....(hechoN).
Los hechos son afirmaciones que sirven para representar conceptos, datos, objetos, etc. Y el conjunto de hechos que describen el problema es la base de hechos.
Ejemplo de hechos:
Juan es un estudiante
Juan tiene 8 años
el perro es blanco
a María le gusta el cine
Pedro prefiere la película
la edad de Luis es de 25 años
Pedro tiene un salario de 200 pesos
Una regla es una combinación de hechos que permite representar conocimientos y sacar inferencias de los mismos.
Ejemplo de reglas:
R1: SI (Juan es un estudiante) Y (Juan tiene 8 años) Entonces (Juan estudia en la primaria).
R2: SI (el perro es blanco) Y (el perro se llama Dinky) ENTONCES (el perro es de Juan).
R3: SI (a María le gusta la película) Y (Pedro prefiere la pelota) ENTONCES (hacen falta 2 televisores).
Observe como partiendo de hechos conocidos que describen algún conocimiento se pueden inferir nuevos hechos (nuevos conocimientos), por otra parte la regla #2 (R2), no tiene porque ser totalmente cierta, existe la posibilidad de que el perro sea de Juan, quizás se puede afirmar, si fuéramos a cuantificar esa posibilidad, que el perro pertenece a Juan con una certeza de un 80%, y por último la regla #3 (R3) es dependiente del contexto, ya que aquí se supone que ambos viven juntos y que los programas de TV coinciden.
La Base de Conocimientos (BC).
Son el conjunto de reglas que permiten representar los conocimientos del dominio de experto donde cada regla aisladamente tiene significado propio. Normalmente los conocimientos son de tipo declarativo por lo cual la BC casi siempre es una descripción de los conocimientos del experto, por lo tanto requiere de algún mecanismo que obtenga las inferencias adecuadas para resolver el problema, alguien que seleccione las reglas y las vaya ejecutando, ese alguien es el motor de inferencias., reglas de produccion
lunes 21 de enero de 2008
¿Que es un sistema experto?
Durante años la actividad de la Inteligencia Artificial estuvo dedicada a las investigaciones teóricas y al desarrollo de experimentos a través de programas que demostraran "actitudes inteligentes", con estos programas se pretendía que la máquina jugara ajedrez, demostrara teoremas matemáticos, etc.
No fue hasta los años 70 que surgió un nuevo paradigma en la Inteligencia Artificial "los Sistemas Expertos", cuya función es desarrollar trabajos similares a los que desarrollar',ia un especialista en un área determinada, la idea no es sustituir a los expertos, sino que estos sistemas sirvan de apoyo a los especialistas en un "dominio" de aplicación específico.
Estos sistemas expertos son en lo esencial sistemas de computación basados en conocimientos cuyos componentes representan un enfoque cualitativo de la programación. Muchas personas pueden creer que un Sistema Experto (SE) es un sistema compuesto por subsistemas y a su vez estos por otros subsistemas hasta llegar a los programas, y que los SE se miden por la cantidad de programas que contienen. Sin embargo la cantidad no es lo que prima en los SE, si no la cualidad del mismo, esta cualidad está dada por la separación de las reglas que describen el problema (Base de Conocimientos), del programa de control que es quien selecciona las reglas adecuadas (Motor de inferencias).
Podemos decir que un Sistema Experto es una Base de Conocimientos (BC), una Base de Hechos (BH) y un Motor (o Máquina) de Inferencias (MI). Por otra parte estos sistemas no se miden por la cantidad de instrucciones o programas sino por la cantidad de reglas que hay contenida en su Base de Conocimientos.
Componentes de una sistema experto:
1. Interfaz con el experto: Es el modulo que permite al experto agregar nuevos conocimientos.
2. Base de conocimiento: Es la base de datos normalmente en forma de reglas de inferencia que representa los conocimiento del experto para ese dominio de aplicacion.
3. Motor o maquina de inferencia: es el algoritmo que realiza las busquedas en la base de conocimientos.
4. Base de hechos: Es la base de datos formada por los conceptos basicos o axiomas que componen las reglas que se encuentran en la base de conocimientos.
5. Interfaz con el usuario: es el modulo al cual accede el usuario para consultar al sitema experto.
Si desea saber mas en internet existen diferentes cursos sobre sistemas puede ver el curso de inteligencia artificial y robotica en http://www.red21.com/iar entre otros muchos cursos.
No fue hasta los años 70 que surgió un nuevo paradigma en la Inteligencia Artificial "los Sistemas Expertos", cuya función es desarrollar trabajos similares a los que desarrollar',ia un especialista en un área determinada, la idea no es sustituir a los expertos, sino que estos sistemas sirvan de apoyo a los especialistas en un "dominio" de aplicación específico.
Estos sistemas expertos son en lo esencial sistemas de computación basados en conocimientos cuyos componentes representan un enfoque cualitativo de la programación. Muchas personas pueden creer que un Sistema Experto (SE) es un sistema compuesto por subsistemas y a su vez estos por otros subsistemas hasta llegar a los programas, y que los SE se miden por la cantidad de programas que contienen. Sin embargo la cantidad no es lo que prima en los SE, si no la cualidad del mismo, esta cualidad está dada por la separación de las reglas que describen el problema (Base de Conocimientos), del programa de control que es quien selecciona las reglas adecuadas (Motor de inferencias).
Podemos decir que un Sistema Experto es una Base de Conocimientos (BC), una Base de Hechos (BH) y un Motor (o Máquina) de Inferencias (MI). Por otra parte estos sistemas no se miden por la cantidad de instrucciones o programas sino por la cantidad de reglas que hay contenida en su Base de Conocimientos.
Componentes de una sistema experto:
1. Interfaz con el experto: Es el modulo que permite al experto agregar nuevos conocimientos.
2. Base de conocimiento: Es la base de datos normalmente en forma de reglas de inferencia que representa los conocimiento del experto para ese dominio de aplicacion.
3. Motor o maquina de inferencia: es el algoritmo que realiza las busquedas en la base de conocimientos.
4. Base de hechos: Es la base de datos formada por los conceptos basicos o axiomas que componen las reglas que se encuentran en la base de conocimientos.
5. Interfaz con el usuario: es el modulo al cual accede el usuario para consultar al sitema experto.
Si desea saber mas en internet existen diferentes cursos sobre sistemas puede ver el curso de inteligencia artificial y robotica en http://www.red21.com/iar entre otros muchos cursos.
miércoles 16 de enero de 2008
Implementaciones de Prolog
A la hora de trabajar en Prolog debe decidirse entre las diferentes implementaciones que existen tales como: Visual Prolog, Swi Prolog. Amzi Prolog y Ciao Prolog, las cuales pueden ser descargadas desde Internet.
Visual Prolog: es un poderoso lenguaje de programación que permite la combinación de las mejores características de la lógica, con los paradigmas de la programación funcional y orientada a objetos de una manera coherente y elegante, que permite aplicaciones a la industria sobre la plataforma Microsoft Windows.
Amzi Prolog: una de las implementaciones de Prolog mas fácil y amigable que se acopla muy bien con Windows.
SWI-Prolog: trabaja en un entorno de Software Libre, licenciado bajo la Lesser Gnu Public License y posee un conjunto de herramientas de gráficos XPCE, su desarrollo se inició en 1987 y ha sido impulsada por las necesidades de aplicaciones en el mundo real. En estos días SWI-Prolog se utiliza ampliamente en la investigación y la educación, así como en aplicaciones comerciales.
Ciao Prolog: es un dominio público, de próxima generación de multi-paradigma para entornos de programación, que ofrece un completo sistema de Prolog, apoyado en la norma ISO-Prolog, con un novedoso diseño modular que permite a la vez, la restricción y la ampliación del lenguaje, tanto para la sintaxis como para semántica del mismo.
Para ver como se ejecuta una implementación de prolog, tomaremos como ejemplo el Ciao-Prolog, http://www.clip.dia.fi.upm.es/Software/Ciao/index.html#ciao
el cual tiene un shell que permite ejecutar objetivos.
El shell es una aplicación que esta incluida dentro del Ciao-Prolog con el nombre de ciaosh, y al ejecutarla aparece el siguiente mensaje:
Ciao-Prolog 1.9 #44: Mon Dec 30 16:47:15 2002
?-
El símbolo? nos indica la zona donde podemos escribir los objetivos a ejecutar.
Por ejemplo:
Ciao-Prolog 1.9 #44: Mon Dec 30 16:47:15 2002
?- f(X) = f(3).
X = 3 ?
Para ejecutar el objetivo es necesario teclear punto al final y teclear ENTER.
A continuación, el shel nos dice si los objetivos tiene éxito o no y como quedan instanciadas las variables. Después aparece un signo de interrogación, lo cual nos indica que le podemos pedir otra solución tecleando un punto y como (;) y pulsando ENTER.
Para cargar un programa en Ciao-Prolog es como sigue:
?- Consutl( ‘Programa.pl’ ).
Yes
?-
Observe que el nombre de fichero se escribe entre comillas simples. En caso de que se quiera ejecutar a los programas desde una carpeta, por ejemplo curso, seria:
?- Consutl( ‘c:/curso/Programa.pl’ ).
Yes
?-
Para salir del shell basta teclear el predicado halt.
?- halt.
Visual Prolog: es un poderoso lenguaje de programación que permite la combinación de las mejores características de la lógica, con los paradigmas de la programación funcional y orientada a objetos de una manera coherente y elegante, que permite aplicaciones a la industria sobre la plataforma Microsoft Windows.
Amzi Prolog: una de las implementaciones de Prolog mas fácil y amigable que se acopla muy bien con Windows.
SWI-Prolog: trabaja en un entorno de Software Libre, licenciado bajo la Lesser Gnu Public License y posee un conjunto de herramientas de gráficos XPCE, su desarrollo se inició en 1987 y ha sido impulsada por las necesidades de aplicaciones en el mundo real. En estos días SWI-Prolog se utiliza ampliamente en la investigación y la educación, así como en aplicaciones comerciales.
Ciao Prolog: es un dominio público, de próxima generación de multi-paradigma para entornos de programación, que ofrece un completo sistema de Prolog, apoyado en la norma ISO-Prolog, con un novedoso diseño modular que permite a la vez, la restricción y la ampliación del lenguaje, tanto para la sintaxis como para semántica del mismo.
Para ver como se ejecuta una implementación de prolog, tomaremos como ejemplo el Ciao-Prolog, http://www.clip.dia.fi.upm.es/Software/Ciao/index.html#ciao
el cual tiene un shell que permite ejecutar objetivos.
El shell es una aplicación que esta incluida dentro del Ciao-Prolog con el nombre de ciaosh, y al ejecutarla aparece el siguiente mensaje:
Ciao-Prolog 1.9 #44: Mon Dec 30 16:47:15 2002
?-
El símbolo? nos indica la zona donde podemos escribir los objetivos a ejecutar.
Por ejemplo:
Ciao-Prolog 1.9 #44: Mon Dec 30 16:47:15 2002
?- f(X) = f(3).
X = 3 ?
Para ejecutar el objetivo es necesario teclear punto al final y teclear ENTER.
A continuación, el shel nos dice si los objetivos tiene éxito o no y como quedan instanciadas las variables. Después aparece un signo de interrogación, lo cual nos indica que le podemos pedir otra solución tecleando un punto y como (;) y pulsando ENTER.
Para cargar un programa en Ciao-Prolog es como sigue:
?- Consutl( ‘Programa.pl’ ).
Yes
?-
Observe que el nombre de fichero se escribe entre comillas simples. En caso de que se quiera ejecutar a los programas desde una carpeta, por ejemplo curso, seria:
?- Consutl( ‘c:/curso/Programa.pl’ ).
Yes
?-
Para salir del shell basta teclear el predicado halt.
?- halt.
Etiquetas:
Amsi Prolog,
Ciao Prolog,
Swi Prolog,
Visual Prlog
jueves 10 de enero de 2008
Programación declarativa
En la programación declarativa lo principal no son las instrucciones que se dan en forma secuencial (programación prescriptiva), en su lugar, el programador se dedica a describir el problema a través de reglas y hechos que funcionan de forma independiente y es a través de un mecanismo de inferencia que se ejecutan las reglas.
En la programación declarativa las reglas (base de conocimientos) esta separada del programa de control (maquina de inferencia).
Ejemplo de programación declarativa:
Si (hecho 1) y/o (hecho2) y/o .... entonces (hecho) y/o (hecho) ....
Donde un hecho seria:
Juan es un estudiante
El perro es blanco
A María le gusta el cine.
El conocimiento operativo tiene carácter procedimental.
Si Premisas entonces Conclusión
(También hay quienes utilizan: Si Condiciones entonces Acciones)
Si P entonces C
Donde:
P y C instrucciones estaríamos en presencia de una representación procedimental.
P y C hechos o aserciones estaríamos en presencia de una representación declarativa.
Ejemplo de representación procedimental
Si A1 = B1 y A2 > B2 entonces X := A1 + A2
Donde A1 = B1 y A2 > B2 son comparaciones que tomaran el valor de ¨verdadero¨ o ¨falso¨.
O sea que tendríamos:
Si P1 y P2 entonces C
donde P1 y P2 serian variables lógicas (darían verdadero o falso)
Ejemplo de representación declarativa
Si (Juan es estudiante) y (Juan tiene 7 años) entonces (Juan estudia en la primaria)
Esto en cualquier lenguaje se haría de la siguiente forma:
X := “Juan es un estudiante”
Y := “Juan tiene 7 años”
if X = “Juan es un estudiante” and Y = “Juan tiene 7 años”
then Z := “Juan esta en la primaria”
Veamos ahora la forma de formalizar los hechos o aserciones
Ejemplo: Juan tiene 10 años de edad
1) (concepto) (relacion) (concepto)
<10 años>
2) relacion (concepto, concepto,....) La que utiliza Prolog
edad(Juan, 10)
También se utiliza
3) (atributo) (objeto) (valor)
(la edad) (de Juan) (es 10)
Nos concentraremos en las dos primera representaciones.
Ejemplo1: El león es un mamífero
(leon) (es-un) (mamifero)
es-un(leon, mamifero)
Ejemplo 2: A María le gusta el cine.
1) (a-Maria) (le-gusta) (el-cine)
2) gusta(maria, cine)
Veamos ahora algunos ejemplos donde se combinan los hechos en formas de reglas o cláusulas:
si (los peces viven en el agua) y (el tiburon es un pez)
entonces (el tiburon vive en el agua)
Y ahora formalizando los hechos tendremos:
1) si (pez) (vive) (en-agua) y (tiburon) (es-un) (pez)
entonces (tiburon) (vive) (en-agua)
O también (similar a Prolog)
2) vive(tiburon, en-agua) si vive(pez, en-agua) y es-un(pez, tiburon)
Observen que en prolog la conclusión se pone delante de las premisas
Representación en forma de reglas:
si Premisas entonces Conclusión
Lo que se interpretaría como:
si entonces
Donde la conclusión puede estar compuesta por varios hechos o aserciones.
Representación en prolog:
Conclusión si Premisas
Y se interpretaría como:
(La conclusion se cumple) si (se cumplen las premisas)
Donde la conclusión estará dada por un solo hecho o aserción.
Ejemplo 1:
1. A María le gusta el tenis.
2. A Tomas le gusta el béisbol.
3. A José le gustan los deportes que le gustan a Tomas.
1. (María gusta tenis)
2. (tomas gusta beisbol)
3. Si (tomas gusta deporte-X) entonces (jose gusta deporte-X)
Similar a prolog:
1. gusta(maria, tenis)
2. gusta(tomas, beisbol)
3. gusta(Jose, X) Si gusta(tomas, X)
Ejemplo 2:
Sofía desea un hombre que no fume.
si (hombre X) y no (fuma X) entonces (Sofia desea, X)
Similar a prolog:
desea(sofia, X) si hombre(X) y no fuma(X)
En la programación declarativa las reglas (base de conocimientos) esta separada del programa de control (maquina de inferencia).
Ejemplo de programación declarativa:
Si (hecho 1) y/o (hecho2) y/o .... entonces (hecho) y/o (hecho) ....
Donde un hecho seria:
Juan es un estudiante
El perro es blanco
A María le gusta el cine.
El conocimiento operativo tiene carácter procedimental.
Si Premisas entonces Conclusión
(También hay quienes utilizan: Si Condiciones entonces Acciones)
Si P entonces C
Donde:
P y C instrucciones estaríamos en presencia de una representación procedimental.
P y C hechos o aserciones estaríamos en presencia de una representación declarativa.
Ejemplo de representación procedimental
Si A1 = B1 y A2 > B2 entonces X := A1 + A2
Donde A1 = B1 y A2 > B2 son comparaciones que tomaran el valor de ¨verdadero¨ o ¨falso¨.
O sea que tendríamos:
Si P1 y P2 entonces C
donde P1 y P2 serian variables lógicas (darían verdadero o falso)
Ejemplo de representación declarativa
Si (Juan es estudiante) y (Juan tiene 7 años) entonces (Juan estudia en la primaria)
Esto en cualquier lenguaje se haría de la siguiente forma:
X := “Juan es un estudiante”
Y := “Juan tiene 7 años”
if X = “Juan es un estudiante” and Y = “Juan tiene 7 años”
then Z := “Juan esta en la primaria”
Veamos ahora la forma de formalizar los hechos o aserciones
Ejemplo: Juan tiene 10 años de edad
1) (concepto) (relacion) (concepto)
2) relacion (concepto, concepto,....) La que utiliza Prolog
edad(Juan, 10)
También se utiliza
3) (atributo) (objeto) (valor)
(la edad) (de Juan) (es 10)
Nos concentraremos en las dos primera representaciones.
Ejemplo1: El león es un mamífero
(leon) (es-un) (mamifero)
es-un(leon, mamifero)
Ejemplo 2: A María le gusta el cine.
1) (a-Maria) (le-gusta) (el-cine)
2) gusta(maria, cine)
Veamos ahora algunos ejemplos donde se combinan los hechos en formas de reglas o cláusulas:
si (los peces viven en el agua) y (el tiburon es un pez)
entonces (el tiburon vive en el agua)
Y ahora formalizando los hechos tendremos:
1) si (pez) (vive) (en-agua) y (tiburon) (es-un) (pez)
entonces (tiburon) (vive) (en-agua)
O también (similar a Prolog)
2) vive(tiburon, en-agua) si vive(pez, en-agua) y es-un(pez, tiburon)
Observen que en prolog la conclusión se pone delante de las premisas
Representación en forma de reglas:
si Premisas entonces Conclusión
Lo que se interpretaría como:
si
Donde la conclusión puede estar compuesta por varios hechos o aserciones.
Representación en prolog:
Conclusión si Premisas
Y se interpretaría como:
(La conclusion se cumple) si (se cumplen las premisas)
Donde la conclusión estará dada por un solo hecho o aserción.
Ejemplo 1:
1. A María le gusta el tenis.
2. A Tomas le gusta el béisbol.
3. A José le gustan los deportes que le gustan a Tomas.
1. (María gusta tenis)
2. (tomas gusta beisbol)
3. Si (tomas gusta deporte-X) entonces (jose gusta deporte-X)
Similar a prolog:
1. gusta(maria, tenis)
2. gusta(tomas, beisbol)
3. gusta(Jose, X) Si gusta(tomas, X)
Ejemplo 2:
Sofía desea un hombre que no fume.
si (hombre X) y no (fuma X) entonces (Sofia desea, X)
Similar a prolog:
desea(sofia, X) si hombre(X) y no fuma(X)
viernes 4 de enero de 2008
Introducción a la programación lógica
En los comienzos de los años 70 el francés Alain Colmenuer desarrolló el lenguaje PROLOG que también permite el desarrollo de aplicaciones en forma declarativa.
En general el PROLOG es un demostrador automático de problema, el cual utiliza una Base de Conocimientos en forma de reglas de inferencia deductivas (cláusulas de Horn), es decir sus reglas tienen como consecuente una única acción y las inferencias obte¬nidas son estrictamente lógicas (verdaderas o falsas), aunque puede parecer una limitación, esto no es totalmente justo, ya que PROLOG permite programar mecanismos inferenciales con lógica probabilisticas, dado que se trata de búsquedas en árboles con acumulación de evidencias.
El PROLOG como lenguaje surgido del cálculo de predicados, tomó las siguientes ideas de la lógica para su ejecución.
1) Un conjunto de axiomas o hechos.
2) Reglas de inferencias las cuales se resuelven por resolución y unificación.
3) El objetivo a demostrar, que serán las condiciones a unificar con las reglas.
También tomó del LISP el tratamiento de las listas para la repre¬sentación de estructuras complejas. Aunque el PROLOG tuvo su origen en la lógica matemática no fue una transposición exacta, y esta ligada a las discusiones que sostienen desde hace años los principales investigadores de la Inteligencia Artificial, los cuales están divididos en dos grandes grupos, de una parte Minsky quien propone estudiar los mecanismos del pensamiento humano y luego simularlo en la computadora.
Lo más importante para Minsky son los conceptos, o sea la inter¬pretación que se le puede dar a cada palabra en dependencia de un contexto dado.
El otro grupo encabezado por Mac Carthy (autor del LISP), afirma que la lógica matemática es el elemento característico para la representación del razonamiento y su implantación en la computadora, este grupo centra su atención en la formalización y en la estructura de los conocimientos más que en el sentido de los mismos.
La lógica desde la antigüedad se concibió como el método de descubrir las leyes del pensamiento, pero estas leyes siempre han estado restringidas al pensamiento científico y muy especialmente el matemático, quedando fuera el sentido común. Esta deficiencia es admitida por los defensores de la lógica, pero ellos consideran que la lógica es la única senda posible para desarrollar programas capaces de mostrar inteligencia.
En general el PROLOG es un demostrador automático de problema, el cual utiliza una Base de Conocimientos en forma de reglas de inferencia deductivas (cláusulas de Horn), es decir sus reglas tienen como consecuente una única acción y las inferencias obte¬nidas son estrictamente lógicas (verdaderas o falsas), aunque puede parecer una limitación, esto no es totalmente justo, ya que PROLOG permite programar mecanismos inferenciales con lógica probabilisticas, dado que se trata de búsquedas en árboles con acumulación de evidencias.
El PROLOG como lenguaje surgido del cálculo de predicados, tomó las siguientes ideas de la lógica para su ejecución.
1) Un conjunto de axiomas o hechos.
2) Reglas de inferencias las cuales se resuelven por resolución y unificación.
3) El objetivo a demostrar, que serán las condiciones a unificar con las reglas.
También tomó del LISP el tratamiento de las listas para la repre¬sentación de estructuras complejas. Aunque el PROLOG tuvo su origen en la lógica matemática no fue una transposición exacta, y esta ligada a las discusiones que sostienen desde hace años los principales investigadores de la Inteligencia Artificial, los cuales están divididos en dos grandes grupos, de una parte Minsky quien propone estudiar los mecanismos del pensamiento humano y luego simularlo en la computadora.
Lo más importante para Minsky son los conceptos, o sea la inter¬pretación que se le puede dar a cada palabra en dependencia de un contexto dado.
El otro grupo encabezado por Mac Carthy (autor del LISP), afirma que la lógica matemática es el elemento característico para la representación del razonamiento y su implantación en la computadora, este grupo centra su atención en la formalización y en la estructura de los conocimientos más que en el sentido de los mismos.
La lógica desde la antigüedad se concibió como el método de descubrir las leyes del pensamiento, pero estas leyes siempre han estado restringidas al pensamiento científico y muy especialmente el matemático, quedando fuera el sentido común. Esta deficiencia es admitida por los defensores de la lógica, pero ellos consideran que la lógica es la única senda posible para desarrollar programas capaces de mostrar inteligencia.
Suscribirse a:
Entradas (Atom)