Está en la página 1de 25

Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

Programación Lógica Inductiva
por Emmanuel Luján

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

Fecha:   Julio de 2008
Tema: Programación Lógica Inductiva
Materia:   Programación Exploratoria
Universidad:   Universidad Nacional del Centro de 
la Provincia de Buenos Aires
Docente:   Dra. Analía Amandi
Autor:   Emmanuel Luján
Correo electrónico: info@emmanuellujan.com.ar
Sitio web: www.emmanuellujan.com.ar

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

LEGALES

Programación Lógica Inductiva, por Emmanuel Luján is licensed under a
Creative Commons Reconocimiento 2.5 Argentina License.
Based on a work at www.emmanuellujan.com.ar/downloads/pli.pdf.

OBJETIVOS

 Describir en aproximadamente 15 páginas de contenido (esto es, sin contar  la 
estructura monográfica) los aspectos más trascendentes relacionados con la programación 
lógica inductiva (PLI). 

 Brindar al lector un enfoque ameno de aprendizaje. O sea, dar una introducción de 
conceptos teóricos previos para ayudar a la comprensión de los nuevos conocimientos. Dar 
ejemplos, de manera de lograr un mayor grado de atención sobre el lector e introducir los 
fundamentos de una manera más arraigada y perdurable.

 Discriminar las cuestiones de carácter pragmático. Enfatizar en la transversalidad de 
la PLI sobre problemas concernientes a otras áreas del conocimiento, tangible a situaciones 
enfrentadas por profesionales informáticos.

 Proponer una actividad de investigación.

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

ÍNDICE DE CONTENIDO

1.­ Introducción......................................................................................................... 1
1.1.­ Conceptos generales............................................................................... 1
1.2.­ Programación Lógica Inductiva............................................................. 1
1.2.1.­ Una representación simple........................................................ 2
1.2.2.­ Ejemplos................................................................................... 3
2.­ Un poco de historia.............................................................................................. 4
1.1.­ Lógica deductiva..................................................................................... 4
1.2.­ Inducción................................................................................................ 4
3.­ Teoría ................................................................................................................... 5
3.1.­ Conceptos de lógica de primer orden..................................................... 5
3.2.­ Conceptos de inducción......................................................................... 6
3.3.­ Inferencia inductiva............................................................................... 7
3.4.­ Estructurando el espacio de hipótesis.................................................... 8
3.5.­ Predisposición del lenguaje (Lenguage bias)......................................... 8
3.6.­ Subsumpción.......................................................................................... 8
4.­  Sistemas PLI........................................................................................................ 9
4.1.­ Características......................................................................................... 9
4.2.­ Datos espúreos...................................................................................... 10
4.2.­ Técnicas PLI......................................................................................... 10
4.1.­ Sistemas Botton­Up..............................................................................  10
4.1.1. ­ LGG........................................................................................ 10
4.1.2. ­ RLGG..................................................................................... 11
4.1.3. ­ Resolución inversa.................................................................. 12
4.1.3. ­ Relación entre rlgg y resolución inversa................................. 13
4.2.­ Sistemas Top­Down............................................................................... 13
4.5.1­ Operador de refinamiento......................................................... 13
4.5.2­ Algoritmo MSI......................................................................... 14
6.­ Aplicación........................................................................................................... 15
7.­ Conclusiones.........................................................................................................16
A.­ Apéndice............................................................................................................. 17
A.1.­ Guía práctica......................................................................................... 17
A.2.­ Ejemplos de aplicaciones...................................................................... 18
A.2.1.­ Diseño de redes de elementos finitos....................................... 18
A.2.2.­ Clasificación biológica de la calidad de agua de río............... 19
Bibliografía...............................................................................................................  20

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

ÍNDICE DE FIGURAS

Figura 1.1 ­ Definición de PLI............................................................................................  1
Figura 1.3 ­ Grafo conectado..............................................................................................  3
Figura 3.1 ­ Árbol de derivación lineal de primer orden....................................................  6
Figura 3.2 ­ Completitud y Consistencia............................................................................  7
Figura 4.1 ­ Técnicas de PLI.............................................................................................. 10
Figura 4.2 – LGG............................................................................................................... 10
Figura 4.3 ­ Árbol de derivación inversa...........................................................................  12
Figura 4.4 ­ Esquema común de generalización................................................................  13
Figura 4.5­ Algoritmo top­down genérico.........................................................................  14

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

INTRODUCCIÓN

1.1.­ CONCEPTOS GENERALES

Aprender   es   la   habilidad   de   adquirir   nuevo   conocimiento,   siendo   un   requisito   que   el 


resultado de dicho aprendizaje sea entendible para un hombre. El conocimiento humano puede ser 
expresado usado a la lógica en conjunto con la notación matemática, es posible, entonces crear 
máquinas que razonan o inteligencia artificial. La mayoría de los textos de inteligencia artificial la 
definen   como   "el   estudio   y   diseño   de   agentes   inteligentes",   donde   un   agente   inteligente   es   un 
sistema que percibe su ambiente y toma acciones las cuales maximizan sus oportunidades de éxito.
Un amplio subcampo de la IA, el aprendizaje automático (machine lerning) se concentra en 
el diseño y desarrollo de algoritmos y técnicas que permitan a las computadoras "aprender". A un 
nivel general, hay dos tipo de aprendizaje: inductivo y deductivo. Dichos algoritmos y técnicas son 
organizados dentro de una taxonomía, basada en el resultado deseado del algoritmo.
Por su lado, en programación lógica, un programa consiste en una conjunto de axiomas y 
reglas. Los sistemas de programación lógica, como Prolog, computan las consecuencias de estos 
axiomas y reglas para responder una pregunta.

[WKP]

1.2.­ PROGRAMACIÓN LÓGICA INDUCTIVA

La  programación lógica inductiva 
(PLI)   es   un   área   de   investigación   que  Programación Aprendizaje
  PLI
está formada por la intersección entre la      Lógica    Máquina
programación   lógica   y   el     aprendizaje 
máquina (métodos inductivos).
Figura 1.2 Definición de PLI

La meta de la PLI debería ser producir  una tecnología de amplio uso con fundamentos 
teóricos firmes.

[ILP­SM]

­ 1 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

1.2.1.­ Una representación simple

Supóngase que se quiere representar los movimientos de una torre de ajedrez, en 
dónde cada movimiento de la pieza queda determinado por (F1, C1) y (F2, C2), la posición 
antes y después del movimiento.
Supóngase   además   que   para   hacer   ésto   se   usa   la   lógica   proposicional.   La 
representación obtenida sería :
if (C1=1) and (C2=1) then mov_torre = true
if (C1=2) and (C2=2) then mov_torre = true
...
if (C1=8) and (C2=8) then mov_torre = true
if (F1=1) and (F2=1) then mov_torre = true
if (F1=2) and (F2=2) then mov_torre = true
...
if (F1=8) and (F2=8) then mov_torre = true

El dominio del problema es acotado, y sin embargo la representación proposicional 
es extensa, y a partir de esto, deficiente en un sentido práctico. Sin embargo, si se usa la 
lógica de primer orden para establecer la representación;  y para esto se define un predicado 
mov(F1,C1,F2,C2) que se interpreta como el movimiento de una torre desde (F1,C1) hasta 
(F2,C2) ; se obtiene:

mov(F1,C,F2,C) :­ F1 != F2
mov(F,C1,F,C2) :­ C1 != C2

Como se puede ver, una notación mucho más compacta, y simple de mayor poder 
expresivo.

[ILP­EM]

­ 2 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

1.2.2.­ Ejemplos

Un   sistema   PLI   puede   incluir   conocimiento   del   dominio   dentro   del   proceso   de 
aprendizaje. Considérese los siguientes ejemplos  conocidos:

Ejemplo 1:
El problema de aprender el concepto de hija definida entre dos personas. hija(X,Y) 
es verdadero si X es hija de Y.  Podemos definir la relación hija(X,Y), en términos de 
las  relaciones como  padre  y  femenino. En PLI,  el problema se plantea de la siguiente 
forma: 

Ejemplos positivos (+) o verdaderos y  Conocimiento del dominio:
negativos (­) o falsos:
femenino(fernanda).
hija(fernanda,eduardo). (+) femenino(camila).
hija(camila,rodrigo). (+) femenino(eugenia).
hija(eugenia,ernesto). (­)   femenino(valentina).
hija(valentina,roberto). (­) ...
... padre(eduardo,fernanda).
padre(rodrigo,camila).
padre(roberto,eugenia).
padre(ernesto,valentina).
...
Resultado: hija(X,Y) :­ femenino(X), padre(Y,X). 

Ejemplo 2:
Ejemplos (+)  y (­):  Conocimiento del dominio: 

existe_camino(0,1). (+)  conectado(0,1).conectado(0,3).conectado(1,0).


existe_camino(1,8). (­)  conectado(1,2).conectado(2,3). conectado(3,2). 
existe_camino(1,0). (+) conectado(3,4). conectado(4,5).conectado(4,6). 
existe_camino(2,4). (­) conectado(5,4).conectado(6,8). conectado(7,6).
...  conectado(7,8). conectado(8,7). 

Resultado: 
existe_camino(X,Y) :­
 conectado(X,Y).
existe_camino(X,Y) :­
 conectado(X,Z),
existe_camino(Z,Y). Figura 1.3 Grafo conectado
[ILP­EM]
­ 3 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

UN POCO DE HISTORIA

2.1.­ LÓGICA DEDUCTIVA

La lógica ha sido estudiada desde los tiempos de Aristóteles, pero no fue hasta que teóricos 
del siglo  XIX y XX, cómo Bool y Frege, la formalizaron como una rama de la matemática.
Para este tiempo, se promueve la visión  lógico positivista:  la lógica es una ciencia que no 
solo brinda los fundamentos o bases a la matemática sino que, además, los brinda transversalmente 
a todas las otras ciencias. Ésta visión fue sostenida por demostraciones de  Gödel (teorema de la 
completitud). Luego, los aportes de   Robinson, acerca de la inferencia por  resolución,   serían de 
vital importancia en la aplicación de la lógica en las ciencias de la computación. A principios de 
1970 Colmerauer y Kowalski fueron claves en el desarrollo del lenguaje de programación basado en 
lógica llamado Prolog.

2.2.­ INDUCCIÓN

El éxito de la lógica deductiva era evidente. Sin embargo surgió una nueva interrogante: si el 
razonamiento del hombre y la máquina provienen de axiomas lógicos, ¿de dónde provienen esos 
axiomas?. La respuesta mas aceptada es que esos axiomas, que representan creencias generalizadas, 
pueden ser construidos mediante hechos particulares (que se derivan de los sentidos) usando el 
razonamiento   inductivo.    Este   razonamiento,   nuevamente,   se   remonta   al   período   de   la   antigua 
Grecia, de Sócrates y Platón. Esta disciplina analiza un conjunto de ejemplos y contra ejemplos 
particulares, refinándolos hasta obtener un concepto que los describa.
En   el   siglo   XVIII   Bacon   da   la   primera   descripción   detallada   del   método   científico   de 
inducción.
En   1931  Gödel   publica   su   famoso  teorema   de   la   incompletitud.   Posteriormente,   Turing 
señala que el teorema de   Gödel   requiere que las máquinas sean capaces de aprender en base a 
ejemplos.
Varios lógicos positivistas, incluyendo a Carnap, han desarrollado teorías estáticas basadas 
en la  lógica de primer orden. Otros teóricos, como   Plotkin (en los 70's) y Shapiro (en los 80's) 
trabajaron   en   sistemas   inductivos   basados   en   computadoras   dentro   de   un   marco   de   trabajo 
completamente orientado en la lógica de primer orden, sin embargo, los mayores éxitos dentro del 
campo del Aprendizaje de Máquinas fueron derivados de sistemas que construyen hipótesis dentro 
de los límites de la lógica proposicional. Ejemplo de esto es la construcción inductiva de sistemas  
expertos.

[ILP­SM]

­ 4 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

TEORÍA
3.1.­ CONCEPTOS DE LÓGICA DE PRIMER ORDEN

● una cláusula se dice “cláusula de Horn”, si cumple con una de las siguiente formas:
1. Regla (rule): ∀x1..∀xn(~P1 ٧...٧~Pn ٧ Q)
≡ ∀x1..∀xn ( (P1 ʌ ...ʌ Pn) → Q )
2. Hecho (fact) o cláusula unitaria: ∀x1..∀xn Q
3. Cláusula objetivo (goal): ∀x1..∀xn(~P1 ٧...٧Pn)
≡ ∃x1..∃xn ~(P1 ʌ ...ʌ Pn)
Dónde Pi y Q son fórmulas atómicas.

● Una  “cláusula de programa” es una cláusula de tipo 1 ó 2.
● Un “programa lógico” (o programa Prolog) es un conjunto de cláusulas de 
programa. 

Por ejemplo, 
∀x cargado(celular) (Hecho)
∀x encendido(celular) (Hecho)
∀x ( (cargado(x) ʌ encendido(x)) → activo(x)) (Regla)
ó en la sintaxis de Prolog:
cargado(celular). (Hecho)
encendido(celular). (Hecho)
activo(x) :­ cargado(x),encendido(x). (Regla)

O sea, cualquier x que este cargado y encendido esta activo.
● Dado un programa lógico P y una cláusula objetivo G,
el problema básico en programación lógica es: P  ⊨ ~G . 

En el ejemplo,
~G =  ∃x activo(celular) (Objetivo)
ó en la sintaxis de Prolog:
 ? ­  activo(celular). (Objetivo)

De aquí que,
P  ⊨ ~G    sii    P U {G} es instisfacible    sii     P U {G} ⊢R ⊥. 
En otras palabras, para probar que ~G se deduce semánticamente de P se debe construir una 
deducción por resolución del conjunto P U {G}.

● Una  sustitución   e  =   {x1/t1,....,xn/tn}   es   una   función   de   variables   a   términos.   Sea 


A(x1.....xn) un término, un literal, una cláusula o un conjunto de ellas. La expresión que 
resulta de aplicar la sustitución e a A  es  Ae = A(x1/t1,....,xn/tn).
­ 5 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

● Sea   A   =   {l1,l2...,ln}   un   conjunto   de   literales   con   el   mismo   símbolo   relacional.   Una 


sustitución e se dice unificador de A si l1e = l2e = ... = lne. 
● Un unificador u se dice unificador más general (umg) para A, si para cada unificador  v de 
A, existe una substitución s tal que v =  us
● El algoritmo de unificación construye el mgu de un conjunto de literales.
● Sean C1 y C2 dos cláusulas que contienen a los literales l1 y l2 respectivamente. Si l1 y ~l2 
tienen un mgu u, llamamos resolvente de C1 y C2 a la cláusula C, tal que
C = ( C1u ­{l1u} ) U ( C2u ­{l2u} ) .
● La  resolución  es un procedimiento mecánico de deducción de fórmulas a partir de otras 
fórmulas. Se basa en la idea que para probar que una fórmula es válida, su negación debe ser 
contradictoria, o sea que es un método de deducción por refutación. Para realizar resolución 
es necesario comprobar si dos literlaes unifican. 

femenino(ana). hija(X,Y) :­ femenino(X), padre(Y,X).
 
u = {X/ana}

            padre(juan,ana).         hija(ana,Y) :­ padre(Y,ana).

                                u = {Y/juan}
                  hija(ana,juan).

Figura 3.1 – Árbol de derivación lineal de primer orden

3.2.­ CONCEPTOS DE INDUCCIÓN:

La palabra inducción se  refiere al estudio de la derivación de enunciados generales a partir 
de ejemplos específicos. Por ejemplo, inductivamente podríamos decir: “todos los cisnes son 
blancos” de la observación “todos los cisnes en ese estanque son blancos”.  El pensamiento 
inductivo puede ser visto como el inverso al pensamiento deductivo.
En una configuración inductiva general se proveen tres lenguajes:

LO: el lenguaje de observaciones o ejemplos.
LB: el lenguaje del conocimiento base.
LH: el lenguaje de hipótesis.

El problema inductivo general es el siguiente:
● dado un conjunto consistente de observaciones o ejemplos O ϵ LO
● y un conjunto consistente de conocimiento base B  ϵ LB

Encontrar una hipótesis  H  ϵ LH tal que: B ʌ H  ⊢ E


E usualmente es se expresa como la unión de ejemplos positivos y negativos: E = E+ U E,, , 
como se vio en la sección introductoria.
­ 6 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

F1 implica sintácticamente F2 ( F1 ⊢ F2) sii F2 puede derivarse de F1 usando reglas de 
inferencia deductivas. Dónde F1 y F2 son fórmulas.

Sea P un programa lógico, en nuestro caso B ʌ H:
P se dice completo con respecto a E+  sii ∀ e ϵ E+, P ⊢ e .
P se dice consistente con respecto a E­  sii ∄ e ϵ E­, P ⊢ e .

Figura 3.2 
Completitud y 
Consistencia

3.3.­ INFERENCIA INDUCTIVA
La inferencia inductiva deriva una creencia general de creencias específicas. 
Refiriéndonos al problema inductivo, el mismo se encuentra bajo restricciones:   a  LO  se le 
requiere que sólo contenga cláusulas unitarias no ligadas. Pero esto, aún, deja una elección sin 
restricciones para H. La inducción no es  consistente   desde un sentido lógico. O sea, H no es 
necesariamente una conclusión de conocer B y E. En el   peor de los casos, por ejemplo, podría 
haber un conjunto infinito de hipótesis que coincidan con el problema planteado (B ʌ H ⊢ E ). Por 
este   motivo   se   necesitan   algunas   restricciones   no   lógicas   para   justificar   cualquier   hipótesis 
particular. Es así que, en lo 50's Carnap y otros sugirieron las “teorías de la confirmación” que 
darían un punto de vista probabilístico  al problema de la inferencia inductiva. Varias dificultades y 
paradojas se encontraron con estas aproximaciones debido a que nunca habían sido aplicadas a la 
programación   de   aprendizaje   máquina.   Refiriéndonos  a   estas   restricciones,   por   ejemplo,   PAC 
learning   (probably   approximately   correct   learning),   está   basado   en   la   lógica   proposicional,   se 
objetivo es dado un conjunto de muestras seleccionar una función de generalización o hipótesis, de 
una   acertada   clase   de   funciones   posibles.   La   meta,   entonces   es   que   con   un   alto   grado   de 
probabilidad (la parte “probably”) la función seleccionada tendrá un bajo error de generalización (la 
parte “approximately correct”).

­ 7 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

3.4.­ ESTRUCTURANDO EL ESPACIO DE HIPÓTESIS

Como antes se dijo antes, la búsqueda de una hipótesis puede dar muchos resultados (incluso 
infinitos) si no se definen las restricciones adecuadas. Llamaremos, entonces espacio de hipótesis a 
todas las posibles hipótesis que se pueden derivar del problema  B ʌ H ⊢ E. Y la notaremos como 
HS = {H1,H2,...Hn}. Para solventar este problema se usan estrategias que estructuran HS. Esto es, 
conocer qué hipótesis es más general que otra. Luego se puede eliminar la menos general ya que la 
más general cubrirá los ejemplos de la primera. O también, si una hipótesis cubre algún ejemplo 
negativo (lo cual es indeseable porque provoca inconsistencia) se puede eliminar a ella y a todas sus 
generalizaciones, ya que estas últimas también lo cubrirán. El resultado es un HS más acotado. 

3.5.– PREDISPOSICIÓN DEL LENGUAJE (LENGUAGE BIAS)
Cualquier mecanismo usado por un sistema de aprendizaje para restringir la búsqueda de 
hipótesis es es llamado bias. Las mismas pueden determinar como el HS es buscado o bien (bias de 
búsqueda) o determinar el HS en sí mismo (predisposición o bias del lenguaje). Seleccionando unas 
bias del lenguaje fuertes, esto es, un lenguaje de hipótesis menos expresivo, es espacio de búsqueda 
se convierte en algo más pequeño y el aprendizaje es más eficiente.

3.6.– SUBSUMPCIÓN
Sean C y C' dos cláusulas de programa C y C' . Se dice que:  C e­subsume a C' si existe una 
substitución e  tal que ce esté contenido en C'. Se denota C ≼ C' . 
Se introduce la noción de generalización, se dice que que C es más general que C', C < C' si 
C e­subsume a C' y no al revés. Y, en este caso, que C' es una especialización o refinamiento de C.
Se introduce también, en relación a lo anterior, la noción de  enrejamiento  (lattice) de HS. 
Dicho enrejado posee nodos que son las hipótesis y uniones entre ellas basadas en el concepto de 
generalidad. Por ejemplo h1<h2, h2<h3, h2<h4, etc. En base a esto último luego se definirá el 
concepto de grafo de refinamiento.

[ILP­SM],[ILP­MIT],[ILP­NLSD],[CC2]

­ 8 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

SISTEMAS PLI

4.1.­ CARACTERÍSTICAS

Los sistemas de aprendizaje PLI pueden dividirse por las siguientes taxonomías:
Incrementales   /   No   incrementales:   Esta   dimensión   describe   la   forma   en   que   los   ejemplos   son 
obtenidos. 
● No incrementales: Los ejemplos son dados al comienzo y no cambia en el proceso. Buscan 
típicamente de una manera top­down, o bien de una manera botton­up. Incluyen:  GOLEM, 
FOIL, FOCL, IFOIL, ILP­R, RICH y LINUS.
● Incrementales:   Los   ejemplos   son  introducidos  por  el  usuarios  uno  a   uno,  de  una  forma 
prudente. Buscan empleando una  mezcla de  estrategias top­down y botton­up.  Incluyen: 
FORTE. LFP2, MARVIN, RINCON, CIGOL.

Interactivos / No interactivos: 
● Interactivos:   El   que   aprende   puede   hacer   preguntas   (p.e.   el   usuario)   acerca   de   la 
interpretación pretendida, lo que permite podar grandes partes del espacio de búsqueda. Son 
incrementales. Incluyen: CIGOL, MARVIN, IRES y ITOU.
● No interactivos: La mayoría de los sistemas son no interactivos

Aprendizaje   de   predicados   simple/múltiple:  se   refiere   a   la   cantidad   de   conocimientos 


(predicados) que se aprenden en le proceso.
● Simple: Más populares, menos potentes. Incluye: FORTE
● Múltiples: Más potentes: eficientes y duros.

Revisión de teoría: Aquellos sistemas que permiten que el B sea corregido durante el proceso de 
aprendizaje. Se trata que dichas correcciones sean mínimas. Usualmente son incrementales y de 
aprendizaje de predicados múltiples. Incluyen:  MARVIN, CIGOL, M­ACL

Estas clasificaciones dejan a los sistemas PLI a en dos extremos:

● Sistemas   empíricos:  sistemas   no   incrementales,   no   interactivos   que   aprenden   de   a   un 


predicado. Aprenden una definición de un solo predicado en base a una gran colección de 
ejemplos.
● Sistemas   interactivos:  sistemas   incrementales   e   interactivos   con   revisión   de   teoría   que 
aprenden de a múltiples predicados. Aprenden  definiciones de múltiples predicados de un 
conjunto pequeño de ejemplos y consultas al usuario.

[OILP­SB]

­ 9 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

4.2.­ DATOS ESPÚREOS

En la definición teórica de PLI tanto B y H deben “concordar” con los ejemplos E. Sin 
embargo pueden existir errores en los datos, se estará lideando con datos espúreos entonces. Los 
mismo pueden clasificarse en:

● Ruido. Por ejemplo errores aleatorios en E o en B.
● Espacio de ejemplos insuficientemente cubierto. Por ejemplos: pocos ejemplos en E, lo que 
hace difícil detectar confiablemente la correlación entre los mismos.
● Inexactitud. Por ejemplo: descripción inapropiada o insuficiente del lenguaje, se carece de 
una descripción exacta del concepto objetivo.
● Valores erróneos en E.

Los sistemas de aprendizaje generalmente tienen un mecanismo para tratar los primeros tres 
tipos y otro diferente para tratar el último.
[ILP­NLSD]

4.3.­ TÉCNICAS DE PLI

Se  sabe, en base a  lo ya argumentado, que el  Técnica 


estructura  miento  de  un  espacio  de  hipótesis  tiene  la  empleada
ventaja de hacer posible una acotación de dicho espacio, 
lo   cual   es   beneficioso   ya   que   se   pueden   encontrar  Top­Down
Bottom­Up
resultados concisos al aplicar inferencia inductiva, y por 
tanto PLI. Dicho estructuramiento se realiza mediante 
técnicas   que   van   de   lo   específico   a   lo   general   o  Generalización  Algoritmos 
viceversa. Las primeras, también llamadas de botton­up  menos general basados en 
son   recomendables   para   sistemas   interactivos;   y   las  MIS
Generalización 
segundas   o   top­down,   recomendables   para   sistemas 
relativa menos 
empíricos.
general
4.4. – SISTEMAS BOTTON­UP Resolución 
inversa
4.4.1. – Generalización menos general (lgg)
    /  : es sub­categoría de
La lgg C de C1 es 
Ci la   generalización   más          : categoría
Más general
... especifica   dentro   del 
enrejado   generado   por    Figura 4.1 ­ Técnicas de PLI
C una   e­sumpción.   Más 
C1 formalmente:   C es la lgg de C1 bajo una cierta e­sumpción  si 
C  ≼  C1 y para toda otra Ci perteneciente al enrejado que cumple 
Figura 4.2 ­ LGG con Ci ≼ C, entonces  Ci ≼  C1 .

­ 10 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

Para definir correctamente el lgg entre dos cláusulas es necesario definirlo para términos 
átomos y literales primero:

lgg de términos: lgg de átomos:
1. lgg(t,t) = t 1. lgg( p(s1, ...,sn), p(t1, ...,tn) ) = 
2. lgg( f(s1, ...,ssn), f(t1, ...,tn) ) =  p( lgg(s1,t1), ..., lgg(sn,tn)  ) . 
f( lgg(s1,t1), ..., lgg(sn,tn)  ) Si lo átomos tienen el mismo 
3. lgg( f(s1, ...,sn), g(t1, ...,tn) )  = V.  Donde  símbolo de predicado.
f≠g y V es sólo una variable que representa a  2. lgg( p(s1, ...,sn), q(t1, ...,tn) ) 
4. lgg( f(s1, ...,sn), g(t1, ...,tn) ) no esta definida si p≠q
lgg(s,t) = V. Donde  s≠t y al menos uno, s o t 
es  una  variable.  V  es  sólo  una  variable  que 
representa a lgg(s,t)
Ejemplos:
*lgg([a,b,c],[a,d,e])=[a,X,Y]
*lgg( f(a,a), f(b,b) ) = f( lgg(a,b),lgg(a,b) ) = lgg( V, V ) . Cuando se calcula lgg se debe 
tener cuidado de usar la misma variable para las múltiples ocurrencias de los lggs de sub 
términos.

    lgg de literales
1. lgg(l1,l2), si l1 y l2 son átomos se computa como se definió arriba.
2. lgg(l1,l2), si l1=~l1'  y l2=~l2'   entonces, lgg(l1,l2) = ~lgg(l1',l2')
3. lgg(l1,l2), si l1=~l1'  o bien l2=~l2'   entonces, lgg(l1,l2) no esta definido

Ejemplos: *lgg(padre(ana,maría),padre(ana,tomás)) = padre(ana,X)
*lgg(padre(ana,maría),~padre(ana,tomás)) = no esta definido
*lgg(padre(ana,X),hija(maría,ana)) = no esta definido

    lgg de cláusulas. Dado lgg(C1,C2), si C1={l1,...,ln} y  C2={k1,...,kn}, entonces 
    lgg(C1,C2)={Lij = lgg(li,kj) | li ϵ C1, kj ϵ C2 y lgg(li,kj) esta definido}.

Ejemplo: si C1= femenino(maría),padre(ana,maría) ­> hija(ana,maría)
y C2= femenino(ivana),padre(tomás,ivana) ­> hija(ivana,tomás) entonces
lgg(C1,C2) = femenino(X),padre(Y,X) ­> hija(X,Y)

4.4.2. – Generalización menos general relativa (rlgg)

El rlgg de las cláusulas C1 y C2,   rlgg(C1,C2),   es el lgg(C1,C2) relativo al conocimiento 


base( background knowledge) B. No se discutirá tan formalmente este método. En pocas palabras si 
B consisten en hechos, y K denota la conjunción de todos esos hechos (K={h1 ʌ ... ʌ hn}), el rlgg 
de dos átomos A1 y A2 (ejemplos positivos), relativo al conocimiento de base K, es defnido como:
rlgg(A1,A2) = lgg( (K­>A1) , (K­>A2) )
­ 11 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

Ejemplo:   Dados   los   ejemplos   positivos   e1=hija(maría,ana)     y     e2=hija(ivana,tomás)   y   el 


conocimiento de base B:
padre(ana,maría) femenino(ana)
padre(ana,tomás) femenino(maría)
padre(tomás,ivana) femenino(ivana)
padre(tomás,ignacio)
El rlgg será entonces:
rlgg(e1,e2) = lgg( (K­>e1) , (K­>e2) )

donde   K={padre(ana,maría),   padre(ana,tomás),   padre(tomás,ivana),   padre(tomás,ignacio), 


femenino(ana), femenino(maría), femenino(ivana)}
Aplicando las reglas de lgg obtenemos el siguiente resultado:

rlgg(e1,e2) = lgg( (K­>e1) , (K­>e2) )
= femenino(X), padre(YX) ­> hija(X,Y) 

4.4.3. – Resolución inversa

La idea básica es la de invertir la regla de resolución basada en inferencia deductiva. Para 
esto se necesita definir una función sustitución inversa e­1  . No se tratará a la resolución inversa 
desde un punto de vista formal, en cambio se expondrá una ejemplificación de la misma:
Dados: B = {B1,B2} = {femenino(maría), padre(ana,maría)}
H = vacío
E = {E1} = {hija(maría,ana)} 
La resolución inversa sigue los siguientes pasos:
● Primeramente se tratará de encontrar una cláusula c, que en conjunto con B2 defina a 
E1, y pueda ser agregada a H en vez de E1. Eligiendo la substitución inversa   e1­1 
={ana/Y}, el paso de resolución inversa genera a cláusula C1 = res_inv(B2,E1) = 
hija(maría,Y) :­ padre(Y/maría). La cláusula C1 se convierte en la actual hipótesis H, 
esto es {B1}U H ⊢ E1 .

femenino(maría). hija(X,Y) :­ femenino(X), padre(Y,X).
 
e2­1 = {maría/X}

            padre(ana,maría).       hija(maría,Y) :­ padre(Y,maría).

                                e1­1 = {ana/Y}
                  hija(maría,ana).

Figura 4.3 – Árbol de derivación inversa

­ 12 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

● En el segundo paso se toma B1 = femenino(maría) y la hipótesis actual H = C1. Se 
resuelve, entonces, C'= res_inv (B1,C1)  usando las sustitución e2­1 ={maría/X}, esto 
generaliza la cláusula C1 con respecto a B, resultando C1= hija(X,Y) :­ femenino(X), 
padre(Y,X). En la hipótesis actual, la cláusula C1 puede ser reemplazada   por la 
cláusula más general C', la cual en conjunto con B define al ejemplo E1.   Así la 
hipótesis inducida es H={hija(X,Y) :­ femenino(X), padre(Y,X)}

4.4.4. – Relación entre resolución inversa y rlgg

La   resolución   inversa   es   no   determinista.   Típicamente   para   cada   paso   en   ella   varias 


generalizaciones de una cláusula pueden ser hechas dependiendo de la elección de la cláusula a ser 
resuelta  y   la  substitución a ser  empleada. Para solucionar  el problema del no determinismo   se 
propone   un   marco   de   trabajo   que   relaciona   los   conceptos   de   rlgg   y   resolución   inversa.   Dicha 
relación   se   concentra   en   que   para   cada   ejemplo   se   debe   realizar   la   resolución   inversa   con   la 
substitución   inversa más específica (substitución vacía)  y luego realizar  el lgg de las cláusulas 
resultantes. Esto es, la generalización más específica con respecto al conocimiento base (rlgg) son 
las generalizaciones más específicas (lgg) de los árboles inversos de derivación más específicos.

Para ejemplificar lo expuesto:

Figura 4.4 – Esquema común de generalización. f es femenino, h es hija y p es padre.     

4.5.– SISTEMAS TOP­DOWN

Los algoritmos que responden a este modo son derivaciones de MIS. De forma general se 
explicará el mismo. Primero se deberá introducir el concepto de operador de refinamiento.

4.5.1­ Operador de refinamiento

Dado una bia de lenguaje L, un operador de refinamiento p mapea una cláusula C a una 
conjunto de cláusulas p(C) las cuales son especializaciones (refinamientos) de c:
p(C) = {C' | C' ϵ L, C < C' } . Generalmente se computan los refinamientos más generales.

­ 13 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

4.5.2­ Algoritmo MSI

Un grafo de refinamiento es un grafo formado por un enrejado (lattice) al usar subsupciones 
sobre un conjunto de cláusulas. El mismo es direccionado y acíclico, Sus nodos son cláusulas y sus 
arcos relaciones de especialización.

El siguiente pseudocódigo ejemplifica el algoritmo MSI:

Inicializar la hipótesis H a un conjunto (posiblemente vacío) de cláusulas en L
repetir
Leer el siguiente ejemplo (positivo o negativo)
repetir
si exise una cobertura negativa del ejemplo  e entonces
Borra la cláusulas incorrectas de H
si el ejemplo e es positivo y no es cubierto por H entonces
Con BFS sobre el grafo de refinamiento, desarrollar una cláusula c 
que cubra a e y agregarla a H
hasta que H sea completo y consistente
retornar H
para siempre

Figura 4.5­ Algoritmo top­down genérico

En el primer si , C en H es incorrecta si C es responsable de que H sea inconsistente.
En el segundo  si,    la búsqueda en el grafo de refinamiento comienza con la cláusula más 
general y continúa buscando refinamientos de cláusulas mediante BFS (breadth first search). En 
cada paso todos lo mínimos refinamientos son generados y testeados por cobertura. El refinamiento 
aceptado debe cubrir el ejemplo positivo selecto. El proceso termina cuando la primera cláusula 
consistente es encontrada.

[ILP­NLSD],[ILP­EM]

­ 14 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

APLICACIÓN
Existen muchísimas aplicaciones de la PLI en áreas prácticas e investigativas, tales como: 
definición de lenguajes de abajo nivel en base a lenguajes de alto nivel, aprendizaje de modelos 
cualitativos de sistemas dinámicos; predicción de mutagénesis, lo cual, tiene implicancias en la 
prevención de cánceres; creación de drogas, por ejemplo contra el mal de Alzheimer; diagnósticos 
médicos; análisis de calidad de aguas de río; redes de elementos finitos; etc. Particularmente las 
últimas dos se desarrollan en el apéndice con más detalle. Se citarán ejemplos a continuación:

Comparar actividades de drogas

Se desean encontrar variantes mejoradas de drogas. Para hacerlo se necesita encontrar la 
relación entre la estructura química y la actividad de la droga. En la mayoría de los casos esta 
relación   no   se   deriva   de   la   teoría,   sino   de   la   experimentación.   Estas   relaciones   empíricas   son 
llamadas Relaciones de Actividad Estructural (SAR). El problema clásico es dado un conjunto de 
químicos con su estructura y actividad, encontrar una teoría que prediga la actividad de un químico 
en   base   a  su   estructura.  PLI  resuelve  este   problema  con  grandes   beneficios   sobre  los   métodos 
convencionales.   Proveyendo   mayor   precisión,   menores   restricciones   y   haciendo   más   fácil   su 
entendimiento.

Diagnóstico de fallas temporal en satélites

Los  satélites recargan sus baterías usando energía solar. Como estos orbitan la tierra  su 


posición con respecto al sol cambia. Se construye una simulación con la cual el comportamiento de 
la fuente de alimentación en cada posición puede ser predicha. Provocando fallas simuladas en los 
componentes, se generan ejemplos de como cada falla puede afectar el comportamiento de la fuente. 
De estos ejemplos, con PLI, se deducen un conjunto de reglas que diagnostican las fallas en la 
fuente   de   alimentación.  Al  generar  los   ejemplos,  la  fallas   son  provocadas  en  todos  lo  posibles 
componentes, lo que garantiza que las reglas sean completas y correctas para todas las mismas.

Diseño desde primero principios

Se   basa   en   el   diseño   de   dispositivos   que   satisfagan   una   especificación   dada   de   su 


comportamiento deseado. Para esto se estructuran los componentes elementales disponibles de tal 
manera  que  ellos  juntos realicen algún comportamiento objetivo especifico. El  comportamiento 
funcional de un dispositivo deriva de la física de los componentes. La aproximación propuesta es: la 
especificación de un dispositivo mediante ejemplos de su comportamiento pretendido, definición de 
cualidades   físicas   del   comportamiento   del   componente   elemental   disponible   y   PLI   como   el 
mecanismo   para   conceptualizar   la   construcción   del   dispositivo.   Por   ejemplo   se   han   construido 
circuitos simples de ejemplos de su comportamiento deseado y cualidades físicas de componentes 
eléctricos simples.

[SDIB­AP], [EA­IBSD], [SMIB­AP],[DOC]

­ 15 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

CONCLUSIONES

El aprendizaje automático (machine lerning) es un subcampo de la IA, se concentra en el 
diseño y desarrollo de algoritmos y técnicas que permitan a las computadoras "aprender". A un 
nivel general, hay dos tipo de aprendizaje: inductivo y deductivo. La inducción se refiere al estudio 
de la derivación de enunciados generales a partir de ejemplos específicos. El pensamiento inductivo 
puede ser visto como el inverso al pensamiento deductivo.
Por su lado, en programación lógica, un programa consiste en un conjunto de axiomas y 
reglas. Los sistemas de programación lógica, como Prolog, computan las consecuencias de estos 
axiomas y reglas para responder una pregunta.
La programación lógica inductiva (PLI) es un área de investigación que está formada por la
intersección entre la programación lógica y el aprendizaje automático (métodos inductivos). La
misma consiste en tres componentes básicos: un conocimiento de base B (ej.: las cosas no pueden
ser completamente blancas y completamente negras), un conjunto de ejemplos E (ej.: el primer
cisne en el estanque es blanco) y una hipótesis H (ej.: todos los cisnes son blancos). La relación
principal entre ellos es que B en conjunto con H deberían permitir la derivación de E. Lo que se
puede escribir como B ʌ H ⊢ E. 
Este   problema   inductivo   no   es   consistente   desde   un   sentido   lógico.   O   sea,   H   no   es 
necesariamente una conclusión de conocer B y E. La búsqueda de una hipótesis puede dar muchos 
resultados   (incluso   infinitos)   si   no   se   definen   las   restricciones   adecuadas.   Para   solventar   este 
problema se usan estrategias que estructuran el espacio de hipótesis (HS), o sea todas las posibles 
hipótesis de un problema en particular. Dicho estructuramiento se realiza mediante técnicas que van 
de lo específico a lo general o viceversa. Entre las primeras se encuentran la generalización menos 
general (lgg), generalización relativa menos general (rlgg) y resolución inversa. Entre las segundas 
encontramos: FOIL, FOCL, INDUCE, HYDRA, entre otros.
Existen   implementaciones   de   los   anteriores   conceptos,   las   mismas   están   sujetas   a 
clasificaciones que las posicionan en uno de dos polo: por un lado los sistemas empíricos que a
aprenden una definición de un solo predicado en base a una gran colección de ejemplos. Y por otro
lado los sistemas interactivos que aprenden definiciones de múltiples predicados de un conjunto
pequeño de ejemplos y consultas al usuario.
Existen muchísimas aplicaciones de la PLI en áreas prácticas e investigativas, tales como:
definición de lenguajes de bajo nivel en base a lenguajes de alto nivel, aprendizaje de modelos
cualitativos de sistemas dinámicos; predicción de mutagénesis, lo cual, tiene implicancias en la
prevención de cánceres; creación de drogas, por ejemplo contra el mal de Alzheimer; diagnósticos
médicos; análisis de calidad de aguas de río; redes de elementos finitos; etc.
Finalmente,   PLI   es   un   área   creciente   cuyo   objetivo   ronda   a   producir   una   tecnología   de 
amplio uso con fundamentos teóricos firmes.

­ 16 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

APÉNDICE
A.1.­ GUÍA PRÁCTICA

1)  Conceptos: luego de leer este informe e investigando un poco más, responda:

1.1­ ¿Qué ventajas tiene la lógica de primer orden con respecto a la proposicional?
1.2­ ¿En qué se basan los razonamientos ductivos e inductivos?
1.3­ ¿Qué es la PLI? ¿Cuál es el problema que plantea?
1.4­ ¿Cuál es el problema plantea la inferencia inductiva?, ¿qué solución existe?.
1.5­ Enuncie diferencias entre sistemas PLI top­down y botton­up.
1.6­ Explique, conceptualmente, cada una de las técnicas PLI.

2) Aplicación: se propone la siguiente actividad de investigación e implementación:

     Elija una de las aplicaciones PLI que conozca e investigue acerca de la misma. Luego  
realice un programa usando el sistema PLI idóneo a esa aplicación para ejecutarlo. Analice 
los resultados obtenidos. Se pretende el código de la   aplicación   y   un   pequeño   informe,  
describiendo y analizando el proceso y las experiencias.

   Por ejemplo: si la elección es la construcción de una red de elementos finitos ( uno de los 
ejemplos que se expone con más detalle al fin del apéndice ) se deberá escoger una figura 
simple para representar, crear el programa correspondiente, basándose en algún ejemplo  
existente,   y   luego   correr   dicho   programa   con   el   sistema   (   herramienta   de   software   )    
GOLEM. Al finalizar el mismo arrojará un conjunto de hipótesis que deberán ser analizadas.

– 17 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

A.2.­ EJEMPLOS DE APLICACIONES

A.2.1.­ Ingeniería mecánica – Diseño de redes de elementos finitos

Dado un objeto y fuerzas físicas, se desea saber que efectos se producirán sobre éste al 
actuar dichas fuerzas. Por ejemplo la fuerza del viento aplicada sobre un puente puede generar 
deformaciones en la estructura del mismo. Un método basado en aproximaciones numéricas para 
resolver este problema es tratar al objeto en forma particionada, como una red de objetos finitos más 
pequeños. Mientras más pequeñas sean las particiones mayor grado de exactitud se obtendrá en los 
cálculos. Sin embargo, una cantidad alta de particiones podría llegar a ser imposible de calcular 
computacionalmente. El  problema se transforma  en buscar  una red que  proporcione  una buena 
aproximación sin irse de los limites computacionales. No existen reglas absolutas para ello, pero sí 
existen casos documentados en los cuales basarse.
El  problema   puede   ser   resuelto   con   PLI   tratando   al   objeto   a   ser   particionado   como   un 
conjunto de  márgenes,  sus propiedades y relaciones entre ellos.  Para resolver esto con GOLEM 
necesitamos:
● Ejemplos positivos: son ejemplos documentados de geometrías conocidas (cilindro, gancho, 
etc.). Son de la forma  red(a1,7), o sea que el margen “a1” esta compuesto por otros “7” 
márgenes (o sea cada margen es visto como un conjunto de márgenes). 
● Ejemplos   negativos:     son   el   complemento   de   los   ejemplos   positivos.   Por   ejemplo:   para 
red(a1,7)  serían  {red(a1,1)  ,red(a1,2)  ,...,red(a1,6)  ,red(a1,8)  ,....red(a1,17)}.    Estamos 
suponiendo   que   1   y   17   son   las   cotas   de   composición   de   un   margen,   estos   valores   son 
empíricos. Los ejemplos negativos son necesarios para acotar la búsqueda.
● Conocimiento base: contiene las definiciones que describen las propiedades de las redes y 
sus   relaciones   (ejemplos   positivos   y   negativos)   para   formar   la   estructura   deseada.   Esta 
información es la más importante. Esta dividida en: declaraciones (modos y determinación), 
tipos   de   márgenes,   condiciones   de   bordes,   caga   y   representación   geométrica.   Por   las 
dimensiones de este informe no se podría llegar a hacer una descripción más detalla de cada 
uno,   pero   podemos   ejemplificar   algunos   predicados   como:  corto(M),   cargado(M), 
corregido_en_ambos_lados(M), vecino_xy(M,M2), vecino_xz(M,M2), etc.
● Resultado: al correr el algoritmo obtenemos reglas que nos explicitan la cantidad deseada de 
particiones   para   una   estructura   dada   (recordemos   que   una   estructura   es,   en   nuestra 
representación, un margen que a su vez se compone de otros recursivamente). 
Es   así   que,   para   cada   N   (cantidad   de  red(M,7):­
particiones),   tenemos   una   o   mas   reglas      tamaño_usual(M),
que   dicen   si   es   propicio   construir   una      vecino_xy(M,MY),
estructura con esa cantidad de particiones.      corregido_en_ambos_lados(MY),
Ejemplo de un resultado para N=7 es :     vecino_zx(MZ,M)
    sin_cargar(MZ).

De esta manera, cada regla generada, nos dice si al objeto dado es propicio particionarlo en 
N márgenes o no. Si el lector se interesa por cualquiera de las aplicaciones aquí citadas puede 
remitirse a la bibliografía para obtener ejemplos completos.
[FEM­BDSM],[AP­SDIB]
­ 18 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

A.2.1.­ Ingeniería ambiental – Clasificación biológica de la calidad de agua de río

Las variedades biológicas de flora y fauna en un río son vistas como continuos monitores de 
la “salud” de ese río. Como alternativa a el uso de productos químicos para determinar la calidad 
del agua se muestrean organismos macro invertebrados conocidos como “cama de río”. Los mismos 
están presentes en todos los ríos y la  tarea de su clasificación no es una actividad demandante.
Las diferentes especies son conocidas por tener distintas sensibilidades a los contaminantes 
(algunas residuales, tóxicos, etc), debidos a que estos modifican su estructura taxonómica, es así que 
existen diferente categorías (o familias) en donde son clasificados dependiendo de dicha estructura 
El trabajo aquí es, dado una muestra de camas de río, clasificarla en una de las cinco clases 
de calidad del agua (b1a, b1b, b2 y b4).  Para esto se utiliza el sistema PLI que deduce reglas 
generales  de clasificación.  Dos sistemas abordan este problema: GOLEM y CLAUDIEN.  Para 
ejemplificar veremos como trabaja el primero. Ejemplo:
Por cada clase de la cual se desea generar reglas de clasificación se crea un problema PLI 
distinto. Supongamos en este caso se quiere generar una regla para clasificar la mejor clase de 
calidad de agua, o sea, la clase “b1a”. Se toman muestras de un río arbitrario y se las clasifica.  Las 
muestras m1y m2 son de clase “b1a”. La muestra m3 es de clase “b1b” y m4 de clase “b2”. Los 
componentes del problema PLI son:
● Un conjunto de ejemplos (positivos y negativos) de la forma clase(M), que quiere decir que 
la muestra “M” pertenece a la clase de calidad de agua “clase”:
b1a(m1). (+) b1a(m3). (­)
b1a(m2). (+) b1a(m4). (­)
● Conocimiento base: 
○ Conjunto de predicados de la forma  familia(M,N). Quiere decir que la muestra “M” 
pertenece a la familia de organismos “familia” y que su nivel   en la muestra es “N”. 
Todas las muestras acaban de ser clasificadas.
leuctridae(m1,n2). leuctridae(m3,n2).
gamaridae(m1,n2). gamaridae(m3,n1).
leuctridae(m2,n1). leuctridae(m4,n3).
gamaridae(m2,n2). gamaridae(m4,n1).
○ El predicado mayor_que(A,B), significa que la abundancia de nivel A es mayor que la 
abundancia de nivel B.
Podemos   suponer   que  n1  representa,   en 
mayor_que(n1,n2). una   muestra   de   una   cantidad   definida,   más   del 
mayor_que(n2,n3). 80% del contenido. Que n2 representa entre un 
mayor_que(n1,n3). 60% y un 80%. Y  n3  de un 20% a un 60%. En 
pos de hacer más claro el ejemplo.

● Resultado: Las reglas de clasificación obtenidas para la clase “b1a” son: 
○ b1a(M) :­ leuctridae(M,N), gamaridae(M,N).
○ b1a(M) :­ leuctridae(M,N1), gamaridae(M,N2), mayor_que(N1,N2)

Nota: el ejemplo no tiene una exacta correspondencia
biológica, está pensado sólo en forma didáctica. [AP­SDIB]
­ 19 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján
Programación Lógica Inductiva | Programación Exploratoria | Ingeniería de Sistemas | UNICEN 

BIBLIOGRAFÍA

[ILP­SM] Inductive Logic Programming.
Stephen Muggleton. 

[ILP­MIT] Inductive Logic Programming:
entry for de MIT encyclopedia of Cognitive Sciences
Stephen Muggleton. 

[ILP­NLSD] Inductive Logic Programming.
Nada Lavrac y S. Dzeroski

[AP­SDIB] Application of inductive logic programming.
S. Dzeroski e I. Bratko.

[EA­IBSD] Engineering Aplication of ILP
S. Dzeroski e I. Bratko.

[AP­SMIB] Application of inductive logic programming.
S. Muggleton e I. Bratko.

[OILP­SB] Overview of Inductive Logic Programming (ILP) Systems
Svetla Boytcheva

[FEM ­BDSM] The application of inductive logic programming to finite element mesh 
design. B. Dolsak e S. Muggleton.

[ILP­EM] Programación Lógica Inductiva (ILP)
Eduardo F. Morales

[WKP] Wikipedia. www.wikpedia.org

[DOC] http://www.cs.york.ac.uk/%7Estephen/index.html

[CC2] Apunte teórico de la cátedra Ciencias de la Computación II, UNICEN.

­ 20 ­

Docente: Dra. Analía Amandi  | Autor: Emmanuel Luján

También podría gustarte