Está en la página 1de 6

Los Juegos como Herramienta Docente.

Formalización de Juegos Lógicos en Prolog


Faraón Llorens, Mª Jesús Castel, Francisco Mora, Carlos Villagrá
Dept. de Ciencia de la Computación e Inteligencia Artificial
Universidad de Alicante
03080 Alicante
e-mail:[faraon,chus,mora,villagra]@dccia.ua.es

Resumen haciendo explícitos los objetos y las relaciones,


así como sus restricciones. Y dicho lenguaje se
Ludwing Wittgenstein, filósofo austriaco, escribió convierte en uno de los mecanismos de
que “podría escribirse una obra filosófica buena y representación del conocimiento, con la ventaja de
seria compuesta enteramente por chistes”. Si se que además proporciona un método, la deducción
entiende el chiste, se entenderá el argumento matemática, para obtener nuevo conocimiento a
implícito en él. Podríamos trasladar este partir del antiguo.
pensamiento a nuestro campo y decir que se La Lógica ha servido también como base para
podría estudiar lógica por medio de chistes, juegos el desarrollo de un nuevo paradigma de
y acertijos; la enseñanza de la Lógica no tiene programación : Programación Lógica. La idea
porque ser aburrida si se saben encontrar caminos central de la programación lógica la podemos
que la hagan agradable y amena. Como dice expresar con la conocida ecuación de Kowalski
Martin Gardner [4] la virtud, y nosotros pensamos [5]:
que la dificultad, está en encontrar el equilibrio Algoritmo = Lógica + Control
entre el juego y la seriedad: el juego mantendrá de manera que el control (estrategia para encontrar
interesados a nuestros alumnos y alumnas, y la solución) la dejamos en manos de la máquina, y
motivará su discusión más allá de las paredes del el programador sólo se preocupa de la lógica
aula; la seriedad convertirá nuestras clases en algo (información acerca del problema que queremos
útil y provechoso (y, para algunos, justificará resolver).
nuestro sueldo). El lenguaje Prolog (PROgramación LOGica),
definido por Colmerauer [3], es el mejor
representante de esta nueva concepción de la
programación. Un sistema Prolog esta basado en
1. Lógica y programación lógica
un comprobador de teoremas por Resolución
usando cláusulas de Horn y la estrategia de
La Lógica nos permite formalizar conocimientos,
reevaluación. La Base de Conocimiento de Prolog
y esta formalización es un paso previo e
estará constituida por hechos y reglas (cláusulas
indispensable para poder automatizar formas de
de Horn con cabeza) y su ejecución consistirá en
razonamiento. Cuando nos planteamos resolver un
la introducción de un objetivo o pregunta
determinado problema, bien de forma manual o
(cláusula decapitada o negada) que queremos
por ordenador, debemos empezar planteándonos
hacer cumplir.
una serie de interrogantes acerca del conocimiento
Así, programar en Prolog consiste en dar al
implicado en dicho problema. Y en la
ordenador un universo finito en forma de hechos y
representación y la manipulación (sistema de
reglas, proporcionando los medios para realizar
razonamiento) de ese conocimiento es donde
inferencias de un hecho a otro. A continuación, si
juega un papel importante la Lógica.
se hacen las preguntas adecuadas, Prolog buscará
La Lógica de Primer Orden pone a nuestra
las respuestas en dicho universo y las presentará
disposición un lenguaje que nos permitirá
en pantalla. Esquemáticamente, la programación
formalizar expresiones del conocimiento humano
en Prolog consiste en :
• declarar algunos hechos sobre los objetos y • trabajaremos con tres dominios (profesor,
sus relaciones asignatura y día), que determinarán tres
• definir algunas reglas sobre dichos objetos y propiedades (predicados con un argumento).
relaciones, y • cada uno de estos tres dominios tendrá 3
• hacer preguntas sobre esos objetos y objetos:
relaciones. o D1 = {profesor} = {María, Jesús,
Faraón}
Para el desarrollo de la práctica hemos o D2 = {asignatura} = {Lógica,
utilizado el compilador de programación lógica Programación, Matemáticas}
SWI-Prolog versión 4.0.0. para Windows. SWI- o D3 = {día} = {lunes, miércoles, jueves}
Prolog [1] es un compilador Prolog de dominio • estas tres propiedades al relacionarse dos a
público para ordenadores PC desarrollado en el dos, determinarán 3 relaciones binarias
Dept. of Social Science Informatics (SWI) de la (profesor-asignatura, profesor-día, y
Universidad de Ámsterdam dirigido, asignatura-día).
principalmente, a la investigación y la educación.
Para entender mejor su funcionamiento vamos
a resolverlo primero de forma manual (figura 1), y
2. Juegos de lógica para ello nos podemos ayudar de un cuadro de
múltiples entradas. Marcaremos con un círculo
Vamos a resolver en Prolog juegos de lógica que cuando sepamos que la relación es cierta, y
se tienen que determinar por deducción a partir de descartaremos, marcando con una cruz, aquellas
un conjunto de pistas. El objetivo es correlacionar relaciones que sean falsas. Al marcar una casilla
una serie de propiedades que cumplen distintos con un círculo deberemos eliminar todas las
elementos de nuestro Dominio (Universo del celdas de su horizontal y vertical llenándolas con
Discurso). La restricción a la que está sujeto este cruces. Una vez anotadas todas las pistas y, de ser
juego es que dos elementos distintos del mismo necesario, completar el cuadro y correlacionar
dominio no pueden estar asociados a un mismo algunas relaciones binarias, obtendremos la
elemento de otro dominio. Gran cantidad de solución.
juegos de este tipo aparecen periódicamente en
distintos tipos de revistas de pasatiempos [2].
Veamos un ejemplo: 3. Resolución del juego en Prolog
Un alumno de Informática, debido al
nerviosismo del primer día de clase, sólo Prolog se basa en el Cálculo de Predicados, y por
recuerda el nombre de sus profesores (María, ello vamos a formalizar el problema utilizando las
Jesús y Faraón), las asignaturas que se imparten herramientas que nos proporciona el Lenguaje de
(Lógica, Programación y Matemáticas) y el día de la Lógica de Primer Orden. Para diseñar la
la semana de las distintas clases (lunes, miércoles solución realizaremos los siguientes pasos:
y jueves). Además recuerda que :
1.- La clase de Programación, impartida por 3.1. Definición de Propiedades
María, es posterior a la de Lógica.
2.- A Faraón no le gusta trabajar los lunes, Determinaremos el número de propiedades que
día en el que no se imparte Lógica. intervienen en el problema (n) y le asignaremos a
¿Serías capaz de ayudarle a relacionar cada propiedad un predicado (palabras o
cada profesor con su asignatura, así como el día fragmentos de palabras que nos recuerden su
de la semana que se imparte? función). Además, para cada propiedad,
NOTA : Sabemos que cada profesor imparte determinaremos el número de elementos que
una única asignatura, y que las clases se dan en pertenecen al dominio (m). Por definición del
días diferentes. problema, todos los dominios tienen el mismo
número de objetos. Y por último, para cada una de
Podemos extraer la siguiente información: las propiedades escribiremos tantos hechos Prolog
como elementos tenga el dominio.
Anotación de pistas :

Pista 1.-
Lógica Program. Matemát. Lunes Miércoles Jueves
María X O X
Jesús X
Faraón X
Lunes X
Miércoles
Jueves X

Pista 2.-
Lógica Program. Matemát. Lunes Miércoles Jueves
María X O X
Jesús X
Faraón X X
Lunes X X
Miércoles
Jueves X

Completar el cuadro :
Lógica Program. Matemát. Lunes Miércoles Jueves
María X O X
Jesús X
Faraón X X
Lunes X X O
Miércoles O X X
Jueves X O X

Correlacionar las relaciones binarias :


Lógica Program. Matemát. Lunes Miércoles Jueves
María X O X X X O
Jesús X X O O X X
Faraón O X X X O X
Lunes X X O
Miércoles O X X
Jueves X O X

La solución es :
Profesor Asignatura Día
María Programación Jueves
Jesús Matemáticas Lunes
Faraón Lógica Miércoles

Figura 1. Resolución gráfica del juego


3.3. Interpretación de las Pistas
numeroPropiedades(3).
objetosUniverso(3). Interpretaremos cada una de las pistas para poder
deducir la solución del problema. Tendremos dos
/*- PROPIEDADES -*/ tipos de pistas: las que afirman alguna relación y
las que la niegan.
profesor(maria).
profesor(jesus). • Pista afirmativa: nos aporta información
profesor(faraon). positiva, es decir, que cierto objeto del
Universo está relacionado con otro
asignatura(logica). determinado objeto de otro Universo por
asignatura(programacion). medio de una determinada relación. Lo
asignatura(matematicas). representaremos por un hecho Prolog en la
relación entre ambos Universos:
dia(lunes). prof_asig(maria,programacion).
dia(miercoles).
dia(jueves). • Pista negativa: nos aporta información que
no debe cumplirse, es decir, que cierto objeto
3.2. Definición de Relaciones del Universo no está relacionado con otro
determinado elemento de otro Universo. Lo
Relacionaremos todas las propiedades entre sí, representaremos por una regla Prolog para la
con lo que tendremos tantas relaciones como relación entre ambos Universos, de manera
combinaciones podamos hacer de las n que elimine la posibilidad de que dichos
propiedades tomadas de dos en dos: objetos se relacionen:
 n n! prof_dia(faraon,Dia) :-
C n2 =   =
 
2 2!( n − 2 )! dia(Dia),Dia\=lunes.

Finalmente, deberemos asegurarnos que tanto


Así, como en nuestro ejemplo teníamos 3
para las pistas afirmativas como para las negativas
propiedades, tendremos que definirnos 3
se elige la cláusula correcta, y que en caso de
relaciones. En principio, cualquier profesor puede
reevaluación no se unifique con la cláusula
impartir cualquier asignatura, cualquier profesor
general. Para ello modificaremos las reglas
puede dar clase cualquier día y cualquier
generales introducidas en el punto 2, quedando de
asignatura puede ser impartida cualquier día. Para
la siguiente manera:
formalizar estos predicados crearemos 3 reglas prof_asig(Prof,Asig):-
Prolog, que nos relacionarán las distintas profesor(Prof),
propiedades: Prof\=maria,
asignatura(Asig).
/*- RELACIONES -*/
3.4. Correlación de Propiedades
prof_asig(Prof,Asig) :-
profesor(Prof),
Hay que relacionar cada elemento de un dominio
asignatura(Asig).
con uno y sólo uno de los elementos de cada uno
de los otros dominios. Por tanto buscaremos una
prof_dia(Prof,Dia) :-
profesor(Prof), nueva solución individual y comprobaremos que
dia(Dia). dichos objetos no pertenezcan a la solución parcial
que tenemos en ese momento. Para ello
asig_dia(Asig,Dia) :- definiremos una función recursiva que vaya
asignatura(Asig), obteniendo todas las soluciones. Habremos
dia(Dia). encontrado una solución total al problema cuando
el número de elementos que tenga nuestra
solución sea el mismo que objetos tengan los que ya estará elaborada a partir de un problema
dominios. Finalmente, por reevaluación, Prolog concreto que debamos resolver. Una vez
encontrará automáticamente todas las soluciones consultada, deberemos tener en cuenta el número
posibles al problema. de propiedades (n) y el número de objetos de cada
Universo (m). Como el número de relaciones, y
/*---- PROGRAMA PRINCIPAL ----*/ por consiguiente la cláusula que las correlaciona,
iniciar :- ini([]). depende del número de propiedades, la cláusula
iniciar llamará a la correspondiente ini
ini(L):- objetosUniverso(M), según el número de propiedades del problema
nel(L,M),escribir(L), concreto en que estemos.
nl, pausa, fail.
/*---- JUEGO ----*/
ini(L) :- iniciar :-
prof_asig(Prof,Asig), write('B.C.: '),
nopertenece(Prof,L,1), read(BC),
nopertenece(Asig,L,2), reconsult(BC),!,
prof_dia(Prof,Dia), nl,write('B.C. '),
nopertenece(Dia,L,3), write(BC),
asig_dia(Asig,Dia), write(' consultada'),nl,nl,
ini([Prof,Asig,Dia]|L]). numeroPropiedades(N),
ini(N,[]).
3.5. Rutinas de carácter general
iniciar :-
Definimos, también, una serie de rutinas de nl,write('ERROR: B.C. no
carácter general y de manejo de listas que encontrada'),nl.
utilizamos a lo largo del programa.

4.2. Base de Conocimientos


4. Generalización de la solución
Al generalizar y tener que interpretar todas las
Podemos observar que los pasos 4 (correlacionar Bases de Conocimientos desde un mismo
propiedades) y 5 (rutinas generales) son iguales, programa, debemos en primer lugar determinar
con pequeñas diferencias, para todos los dos valores concretos implícitos en el enunciado:
problemas que queramos resolver de este tipo de el número de propiedades tratadas en el problema
juego. Mientras que los pasos 1 (propiedades), 2 (n) y el número de individuos de cada universo
(relaciones) y 3 (pistas) dependen del enunciado (m). Para ello incluiremos al principio de la Base
concreto del problema a resolver. Por tanto vamos de Conocimientos dos hechos que informen al
a separar el código Prolog en dos partes: juego de dichos parámetros. Por otro lado, como
• Juego: esquema general del juego, único e el procedimiento que correlaciona las propiedades
igual para todos. está incluido en el juego, deberemos nombrar a las
• Base de Conocimientos: dependiente del relaciones de manera general (r12, r13, ...), para
enunciado del problema. que nos puedan servir para cualquier enunciado.
Continuando con el ejemplo anterior, vamos a Por lo demás, el resto queda igual que lo
desarrollar ambas partes. comentado en los puntos 1, 2 y 3 del apartado
anterior.
4.1. Juego
/*-- BASE DE CONOCIMIENTOS --*/
Necesitará unas pequeñas modificaciones ya que
queremos que sirva para todo tipo de enunciado. numeroPropiedades(3).
En primer lugar, desde este programa leeremos la objetosUniverso(3).
Base de Conocimientos que queramos utilizar y
/*- PROPIEDADES -*/ realizar hábiles razonamientos para descubrir a los
profesor(maria). culpables a partir de pequeños indicios. Por otra
profesor(jesus). parte, el rigor y la exactitud deben ser cualidades
profesor(faraon). indispensables en cualquier trabajo serio. La
lógica nos proporciona herramientas para poder
asignatura(logica). trabajar formalmente con “conocimiento”. En
asignatura(programacion). este artículo hemos pretendido presentar como los
asignatura(matematicas). juegos pueden convertirse en una herramienta
docente. Además, el lenguaje de programación
dia(lunes). lógica Prolog puede servirnos para solucionar
dia(miercoles). problemas cuya resolución implique un proceso
dia(jueves). de deducción. Prolog es “pura lógica” y por tanto
se puede trabajar con él de forma intuitiva.
/*- RELACIONES -*/ La experiencia aquí comentada ha sido
r12(maria,programacion). aplicada como prácticas de la asignatura
r12(Prof,Asig) :- cuatrimestral “Lógica de Primer Orden” de los
profesor(Prof), estudios de Ingeniería Informática en la
Prof\=maria, Universidad de Alicante [6]. Pensamos que podría
asignatura(Asig). ser interesante aplicarlo a otros estudios y/o
niveles que necesiten de una formación científica
r13(faraon,Dia) :- e investigadora.
dia(Dia), Dia\=lunes. Los objetivos perseguidos al realizar esta
r13(Prof,Dia) :- práctica han sido :
profesor(Prof),
• Representación del conocimiento mediante el
Prof\=faraon,
lenguaje de la Lógica de Primer Orden.
dia(Dia).
• Interpretación de pistas : conceptos y
r23(logica,Dia) :- esquemas lógicos del pensamiento.
dia(Dia), • Utilización del lenguaje de programación
Dia\=lunes,Dia\=jueves. lógica Prolog.
r23(programacion,Dia) :-
dia(Dia), Dia\=lunes.
r23(Asig,Dia) :- Referencias
asig(Asig),
Asig\=logica, [1] http://www.swi.psy.uva.nl/projects/SWI-
Asig\=programacion, Prolog
dia(Dia). [2] LOGIC. Juegos Lógicos. Publicación editada
por Zugarto Ediciones, S.A., Madrid.
A partir de este momento, ante un nuevo [3] Colmerauer, A. y otros. Un Systeme de
problema de este tipo, solamente deberemos Communication Homme-Machine en
preocuparnos de crear la Base de Conocimientos Francais, Groupe de Recherche en
oportuna (la cuál deberá contener las propiedades, Intelligence Artificielle, Université d’Aix-
relaciones y pistas definidas adecuadamente) y Marseille, 1973
resolverlo utilizando el juego que ya tenemos. [4] Gardner, M. Carnaval Matemático. Alianza
Editorial (libro de bolsillo 778), 1987.
[5] Kowalski, R. Lógica, programación e
5. Conclusión inteligencia artificial. Ediciones Díaz de
Santos, 1986.
La enseñanza de la Lógica no tiene por qué ser [6] Llorens, F. y otros. Formalización del
aburrida. Todos recordamos las novelas de Razonamiento. JENUI'98, Sant Julià de Lòria
Sherlock Holmes o Hercules Poirot, y cómo sus (Principat d'Andorra), julio 1998.
mentes lógicas y deductivas eran capaces de

También podría gustarte