You are on page 1of 6

Los Juegos como Herramienta Docente.

Formalizacin de Juegos Lgicos en Prolog


Faran Llorens, M Jess Castel, Francisco Mora, Carlos Villagr
Dept. de Ciencia de la Computacin e Inteligencia Artificial
Universidad de Alicante
03080 Alicante
e-mail:[faraon,chus,mora,villagra]@dccia.ua.es

Resumen haciendo explcitos los objetos y las relaciones,


as como sus restricciones. Y dicho lenguaje se
Ludwing Wittgenstein, filsofo austriaco, escribi convierte en uno de los mecanismos de
que podra escribirse una obra filosfica buena y representacin del conocimiento, con la ventaja de
seria compuesta enteramente por chistes. Si se que adems proporciona un mtodo, la deduccin
entiende el chiste, se entender el argumento matemtica, para obtener nuevo conocimiento a
implcito en l. Podramos trasladar este partir del antiguo.
pensamiento a nuestro campo y decir que se La Lgica ha servido tambin como base para
podra estudiar lgica por medio de chistes, juegos el desarrollo de un nuevo paradigma de
y acertijos; la enseanza de la Lgica no tiene programacin : Programacin Lgica. La idea
porque ser aburrida si se saben encontrar caminos central de la programacin lgica la podemos
que la hagan agradable y amena. Como dice expresar con la conocida ecuacin de Kowalski
Martin Gardner [4] la virtud, y nosotros pensamos [5]:
que la dificultad, est en encontrar el equilibrio Algoritmo = Lgica + 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 solucin) la dejamos en manos de la mquina, y
motivar su discusin ms all de las paredes del el programador slo se preocupa de la lgica
aula; la seriedad convertir nuestras clases en algo (informacin acerca del problema que queremos
til y provechoso (y, para algunos, justificar resolver).
nuestro sueldo). El lenguaje Prolog (PROgramacin LOGica),
definido por Colmerauer [3], es el mejor
representante de esta nueva concepcin de la
programacin. Un sistema Prolog esta basado en
1. Lgica y programacin lgica
un comprobador de teoremas por Resolucin
usando clusulas de Horn y la estrategia de
La Lgica nos permite formalizar conocimientos,
reevaluacin. La Base de Conocimiento de Prolog
y esta formalizacin es un paso previo e
estar constituida por hechos y reglas (clusulas
indispensable para poder automatizar formas de
de Horn con cabeza) y su ejecucin consistir en
razonamiento. Cuando nos planteamos resolver un
la introduccin de un objetivo o pregunta
determinado problema, bien de forma manual o
(clusula decapitada o negada) que queremos
por ordenador, debemos empezar plantendonos
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
representacin y la manipulacin (sistema de
reglas, proporcionando los medios para realizar
razonamiento) de ese conocimiento es donde
inferencias de un hecho a otro. A continuacin, si
juega un papel importante la Lgica.
se hacen las preguntas adecuadas, Prolog buscar
La Lgica de Primer Orden pone a nuestra
las respuestas en dicho universo y las presentar
disposicin un lenguaje que nos permitir
en pantalla. Esquemticamente, la programacin
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 da), que determinarn 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} = {Mara, Jess,
Faran}
Para el desarrollo de la prctica hemos o D2 = {asignatura} = {Lgica,
utilizado el compilador de programacin lgica Programacin, Matemticas}
SWI-Prolog versin 4.0.0. para Windows. SWI- o D3 = {da} = {lunes, mircoles, jueves}
Prolog [1] es un compilador Prolog de dominio estas tres propiedades al relacionarse dos a
pblico para ordenadores PC desarrollado en el dos, determinarn 3 relaciones binarias
Dept. of Social Science Informatics (SWI) de la (profesor-asignatura, profesor-da, y
Universidad de msterdam dirigido, asignatura-da).
principalmente, a la investigacin y la educacin.
Para entender mejor su funcionamiento vamos
a resolverlo primero de forma manual (figura 1), y
2. Juegos de lgica para ello nos podemos ayudar de un cuadro de
mltiples entradas. Marcaremos con un crculo
Vamos a resolver en Prolog juegos de lgica que cuando sepamos que la relacin es cierta, y
se tienen que determinar por deduccin 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 crculo deberemos eliminar todas las
elementos de nuestro Dominio (Universo del celdas de su horizontal y vertical llenndolas con
Discurso). La restriccin 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 solucin.
juegos de este tipo aparecen peridicamente en
distintos tipos de revistas de pasatiempos [2].
Veamos un ejemplo: 3. Resolucin del juego en Prolog
Un alumno de Informtica, debido al
nerviosismo del primer da de clase, slo Prolog se basa en el Clculo de Predicados, y por
recuerda el nombre de sus profesores (Mara, ello vamos a formalizar el problema utilizando las
Jess y Faran), las asignaturas que se imparten herramientas que nos proporciona el Lenguaje de
(Lgica, Programacin y Matemticas) y el da de la Lgica de Primer Orden. Para disear la
la semana de las distintas clases (lunes, mircoles solucin realizaremos los siguientes pasos:
y jueves). Adems recuerda que :
1.- La clase de Programacin, impartida por 3.1. Definicin de Propiedades
Mara, es posterior a la de Lgica.
2.- A Faran no le gusta trabajar los lunes, Determinaremos el nmero de propiedades que
da en el que no se imparte Lgica. intervienen en el problema (n) y le asignaremos a
Seras capaz de ayudarle a relacionar cada propiedad un predicado (palabras o
cada profesor con su asignatura, as como el da fragmentos de palabras que nos recuerden su
de la semana que se imparte? funcin). Adems, para cada propiedad,
NOTA : Sabemos que cada profesor imparte determinaremos el nmero de elementos que
una nica asignatura, y que las clases se dan en pertenecen al dominio (m). Por definicin del
das diferentes. problema, todos los dominios tienen el mismo
nmero de objetos. Y por ltimo, para cada una de
Podemos extraer la siguiente informacin: las propiedades escribiremos tantos hechos Prolog
como elementos tenga el dominio.
Anotacin de pistas :

Pista 1.-
Lgica Program. Matemt. Lunes Mircoles Jueves
Mara X O X
Jess X
Faran X
Lunes X
Mircoles
Jueves X

Pista 2.-
Lgica Program. Matemt. Lunes Mircoles Jueves
Mara X O X
Jess X
Faran X X
Lunes X X
Mircoles
Jueves X

Completar el cuadro :
Lgica Program. Matemt. Lunes Mircoles Jueves
Mara X O X
Jess X
Faran X X
Lunes X X O
Mircoles O X X
Jueves X O X

Correlacionar las relaciones binarias :


Lgica Program. Matemt. Lunes Mircoles Jueves
Mara X O X X X O
Jess X X O O X X
Faran O X X X O X
Lunes X X O
Mircoles O X X
Jueves X O X

La solucin es :
Profesor Asignatura Da
Mara Programacin Jueves
Jess Matemticas Lunes
Faran Lgica Mircoles

Figura 1. Resolucin grfica del juego


3.3. Interpretacin de las Pistas
numeroPropiedades(3).
objetosUniverso(3). Interpretaremos cada una de las pistas para poder
deducir la solucin del problema. Tendremos dos
/*- PROPIEDADES -*/ tipos de pistas: las que afirman alguna relacin y
las que la niegan.
profesor(maria).
profesor(jesus). Pista afirmativa: nos aporta informacin
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 relacin. Lo
asignatura(matematicas). representaremos por un hecho Prolog en la
relacin entre ambos Universos:
dia(lunes). prof_asig(maria,programacion).
dia(miercoles).
dia(jueves). Pista negativa: nos aporta informacin que
no debe cumplirse, es decir, que cierto objeto
3.2. Definicin 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 relacin 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 tenamos 3
para las pistas afirmativas como para las negativas
propiedades, tendremos que definirnos 3
se elige la clusula correcta, y que en caso de
relaciones. En principio, cualquier profesor puede
reevaluacin no se unifique con la clusula
impartir cualquier asignatura, cualquier profesor
general. Para ello modificaremos las reglas
puede dar clase cualquier da y cualquier
generales introducidas en el punto 2, quedando de
asignatura puede ser impartida cualquier da. Para
la siguiente manera:
formalizar estos predicados crearemos 3 reglas prof_asig(Prof,Asig):-
Prolog, que nos relacionarn las distintas profesor(Prof),
propiedades: Prof\=maria,
asignatura(Asig).
/*- RELACIONES -*/
3.4. Correlacin de Propiedades
prof_asig(Prof,Asig) :-
profesor(Prof),
Hay que relacionar cada elemento de un dominio
asignatura(Asig).
con uno y slo uno de los elementos de cada uno
de los otros dominios. Por tanto buscaremos una
prof_dia(Prof,Dia) :-
profesor(Prof), nueva solucin individual y comprobaremos que
dia(Dia). dichos objetos no pertenezcan a la solucin parcial
que tenemos en ese momento. Para ello
asig_dia(Asig,Dia) :- definiremos una funcin recursiva que vaya
asignatura(Asig), obteniendo todas las soluciones. Habremos
dia(Dia). encontrado una solucin total al problema cuando
el nmero de elementos que tenga nuestra
solucin sea el mismo que objetos tengan los que ya estar elaborada a partir de un problema
dominios. Finalmente, por reevaluacin, Prolog concreto que debamos resolver. Una vez
encontrar automticamente todas las soluciones consultada, deberemos tener en cuenta el nmero
posibles al problema. de propiedades (n) y el nmero de objetos de cada
Universo (m). Como el nmero de relaciones, y
/*---- PROGRAMA PRINCIPAL ----*/ por consiguiente la clusula que las correlaciona,
iniciar :- ini([]). depende del nmero de propiedades, la clusula
iniciar llamar a la correspondiente ini
ini(L):- objetosUniverso(M), segn el nmero 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 carcter general
iniciar :-
Definimos, tambin, una serie de rutinas de nl,write('ERROR: B.C. no
carcter general y de manejo de listas que encontrada'),nl.
utilizamos a lo largo del programa.

4.2. Base de Conocimientos


4. Generalizacin de la solucin
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 pequeas diferencias, para todos los dos valores concretos implcitos en el enunciado:
problemas que queramos resolver de este tipo de el nmero de propiedades tratadas en el problema
juego. Mientras que los pasos 1 (propiedades), 2 (n) y el nmero 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 cdigo Prolog en dos partes: juego de dichos parmetros. 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 dems, 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 pequeas 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 hbiles razonamientos para descubrir a los
profesor(maria). culpables a partir de pequeos indicios. Por otra
profesor(jesus). parte, el rigor y la exactitud deben ser cualidades
profesor(faraon). indispensables en cualquier trabajo serio. La
lgica nos proporciona herramientas para poder
asignatura(logica). trabajar formalmente con conocimiento. En
asignatura(programacion). este artculo hemos pretendido presentar como los
asignatura(matematicas). juegos pueden convertirse en una herramienta
docente. Adems, el lenguaje de programacin
dia(lunes). lgica Prolog puede servirnos para solucionar
dia(miercoles). problemas cuya resolucin implique un proceso
dia(jueves). de deduccin. Prolog es pura lgica y por tanto
se puede trabajar con l de forma intuitiva.
/*- RELACIONES -*/ La experiencia aqu comentada ha sido
r12(maria,programacion). aplicada como prcticas de la asignatura
r12(Prof,Asig) :- cuatrimestral Lgica de Primer Orden de los
profesor(Prof), estudios de Ingeniera Informtica en la
Prof\=maria, Universidad de Alicante [6]. Pensamos que podra
asignatura(Asig). ser interesante aplicarlo a otros estudios y/o
niveles que necesiten de una formacin cientfica
r13(faraon,Dia) :- e investigadora.
dia(Dia), Dia\=lunes. Los objetivos perseguidos al realizar esta
r13(Prof,Dia) :- prctica han sido :
profesor(Prof),
Representacin del conocimiento mediante el
Prof\=faraon,
lenguaje de la Lgica de Primer Orden.
dia(Dia).
Interpretacin de pistas : conceptos y
r23(logica,Dia) :- esquemas lgicos del pensamiento.
dia(Dia), Utilizacin del lenguaje de programacin
Dia\=lunes,Dia\=jueves. lgica 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 Lgicos. Publicacin 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 cul deber contener las propiedades, Intelligence Artificielle, Universit dAix-
relaciones y pistas definidas adecuadamente) y Marseille, 1973
resolverlo utilizando el juego que ya tenemos. [4] Gardner, M. Carnaval Matemtico. Alianza
Editorial (libro de bolsillo 778), 1987.
[5] Kowalski, R. Lgica, programacin e
5. Conclusin inteligencia artificial. Ediciones Daz de
Santos, 1986.
La enseanza de la Lgica no tiene por qu ser [6] Llorens, F. y otros. Formalizacin del
aburrida. Todos recordamos las novelas de Razonamiento. JENUI'98, Sant Juli de Lria
Sherlock Holmes o Hercules Poirot, y cmo sus (Principat d'Andorra), julio 1998.
mentes lgicas y deductivas eran capaces de

You might also like