next up previous contents
Next: Ejercicios Up: Introducción a la programación Previous: Introducción a la programación   Contents

Ejercicios

  1. Escriba definiciones alternativas para la relación TIO.

  2. Determine porqué la relación PRIMO definida anteriormente no es equivalente a la siguiente:

                    PRIMO(X,Y) <- ABUELO(Z,X), ABUELO(Z,Y).
    

En el trabajo con relaciones muy frecuentemente resulta necesario definir relaciones como clausuras transitivas de relaciones existentes. Por ejemplo, y siguiendo con las relaciones familiares que hemos planteado, puede interesar definir la relación ANCESTRO, que correspondería a la clausura de las relaciones PADRE y MADRE ya presentadas. La forma de escribirla sería la siguiente:

        ANCESTRO(X,Y) <- PADRE(X,Y).
        ANCESTRO(X,Y) <- MADRE(X,Y).

        ANCESTRO(X,Y) <- PADRE(Z,Y), ANCESTRO(X,Z).
        ANCESTRO(X,Y) <- MADRE(Z,Y), ANCESTRO(X,Z).

donde la tercera regla puede leerse como:

«una persona X es el ancestro de una persona Y, si existe una persona Z, tal que Z es el padre de Y y además X es ancestro de ese mismo Z»

Puede observarse que de la descripción escrita en castellano en la frase anterior puede inducirse rápidamente la regla en programación en lógica correspondiente. Esto constituye otra de las características relevantes de la programación en lógica, que consiste en el alto nivel de expresión que ofrece. En general es posible pasar con cierta facilidad de la especificación de un problema expresada en lenguaje natural, a una desscripción en programación en lógica.

La novedad que aparece en la definición anterior surge de la utilización de la recursión en la definición de la relación, lo que resulta totalmente natural al recordar que estamos definiendo una cláusula transitiva.

La relación ANCESTRO definida puede ser operada en forma totalmente similar a las otras relaciones. Así por ejemplo si escribimos:

        <- ANCESTRO( X, diego ).

el sistema responderá:

        X = luis.
        X = carmen.
        X = juan.
        X = lucia.


next up previous contents
Next: Ejercicios Up: Introducción a la programación Previous: Introducción a la programación   Contents
Cesar Ballardini
2003-10-14
Hosted by www.Geocities.ws

1