scieee Science in your language
[es] (orig)

Una introducción a la programación con conjuntos de respuesta. Aplicaciones

Abstract

The main objective of this paper is to present the answer set programming paradigm as a tool to model and solve combinatorial problems, in general, and especially NP-complete or NP-hard problems. First, in chapters 1 and 2, we are going to focus on carrying out a theorical development to help us learning how to program in ASP and, in particular, in CLINGO, and some properties that ASP programs have. In the following chapters, 3 and 4, we are going to study representations of real situations and problems to apply these results then to relevant mathematical problems in chapter 5. Finally, in chapter 6, we study puzzles in which deciding whether there is a solution to them is a NP- complete problem.

Read accessible full text

Una introducción a la programación con conjuntos de respuesta. Aplicaciones

Author: Jiménez Núñez, Marina
Year: 2022
Source: https://idus.us.es/bitstreams/e22bf5e2-d136-491d-8ab9-2c6edd2e652b/download
TRABAJO FIN DE GRADO
FACULTAD DE MATEM ´
ATICAS
Depa amen o de Ciencias de la Compu aci´on e In eligencia
A i icial
Una in oducci´on a la
p og amaci´on con conjun os de
espues a. Aplicaciones
P esen ado po :
Ma ina Jim´
enez N´
u˜
nez
Di igido po :
And ´
es Co d´
on F anco
Ma
´
ıa Jos´
e Hidalgo Doblado
´
Indice gene al
Abs ac 3
Ag adecimien os 4
In oducci´on 5
1. In oducci´on a CLINGO 8
1.1. Sin axis y sem´an ica de p og amas ASP . . . . . . . . . . . . 8
1.1.1. Sem´an ica in o mal . . . . . . . . . . . . . . . . . . . . 15
1.1.2. Sem´an ica o mal . . . . . . . . . . . . . . . . . . . . . 19
1.2. Sin axis del sis ema CLINGO . . . . . . . . . . . . . . . . . . 26
1.2.1. Algunas gene alidades . . . . . . . . . . . . . . . . . . 26
1.2.2. Disyunci´on ........................ 28
1.2.3. Cons an es boolenas . . . . . . . . . . . . . . . . . . . 28
1.2.4. Funciones a i m´e icas . . . . . . . . . . . . . . . . . . . 29
1.2.5. P edicados de igualdad y o den . . . . . . . . . . . . . 29
1.2.6. In e alos ......................... 31
1.2.7. Ag upaci´on ........................ 31
1.2.8. Condicionales . . . . . . . . . . . . . . . . . . . . . . . 32
1
1.2.9. Res icciones . . . . . . . . . . . . . . . . . . . . . . . 33
2. P opiedades de los p og amas en ASP 35
2.1. Conjun os de espues a: Exis encia, unicidad y p opiedades . . 35
3. Bases de conocimien o 45
3.1. In oducci´on............................ 45
3.2. Modelizaci´on de un ba io . . . . . . . . . . . . . . . . . . . . 46
3.3. Modelizaci´on de las elaciones amilia es . . . . . . . . . . . . 51
3.3.1. De inici´on ecu si a de an epasado . . . . . . . . . . . 51
3.3.2. De inici´on de hijo ´unico . . . . . . . . . . . . . . . . . 53
3.4. Modelizaci´on de un conjun o de medios de anspo e . . . . . 55
4. Rep esen aci´on po de ec o 60
4.1. Rep esen aci´on po de ec o y ipos de excepciones . . . . . . . 60
4.2. Modelizaci´on de la in o maci´on con alo es nulos . . . . . . . . 69
4.3. P io idad en e de ec os . . . . . . . . . . . . . . . . . . . . . 73
4.4. De ec os en bases de conocimien o je ´a quicas . . . . . . . . . 77
5. El pa adigma de p og amaci´on ASP 83
5.1. Ciclos hamil onianos de un g a o . . . . . . . . . . . . . . . . 83
5.2. Sudokus .............................. 89
6. Aplicaciones 94
6.1. PuzzleNu ikabe.......................... 94
6.2. Puzzle Heyawake . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.3. PuzzleMasyu...........................110
2
Abs ac
The main objec i e o his pape is o p esen he answe se p og amming
pa adigm as a ool o model and sol e combina o ial p oblems, in gene al,
and especially NP-comple e o NP-ha d p oblems. Fi s , in chap e s 1 and
2, we a e going o ocus on ca ying ou a heo ical de elopmen o help us
lea ning how o p og am in ASP and, in pa icula , in CLINGO, and some
p ope ies ha ASP p og ams ha e. In he ollowing chap e s, 3 and 4, we
a e going o s udy ep esen a ions o eal si ua ions and p oblems o apply
hese esul s hen o ele an ma hema ical p oblems in chap e 5. Finally,
in chap e 6, we s udy puzzles in which deciding whe he he e is a solu ion
o hem is a NP- comple e p oblem.
3
Ag adecimien os
En p ime luga , me gus a ´ıa ag adece a mis u o es And ´es Co d´on
F anco y Ma ´ıa Jos´e Hidalgo Doblado la ayuda y el apoyo que me han o ecido
du an e odo el p oceso de ealizaci´on de es e abajo.
En segundo luga , quisie a ag adece a mis compa˜ne os la in ini a pacien-
cia que han demos ado ene y el habe me ayudado siemp e. G acias a los
que han empezado es a e apa conmigo y a los que he encon ado po el camino
y me han acompa˜nado has a el in de la misma.
Po ´ul imo, da las g acias a mis he manos y a mis pad es. Nunca en-
con a ´e las palab as pa a ag adece os el ca i˜no que he ecibido du an e odos
es os a˜nos. G acias po con ia en m´ı has a cuando yo misma no lo hice.
Sois mi mayo sue e, mi mayo o gullo y mi ejemplo a segui po y pa a
siemp e.
4

In oducci´on
El p incipal obje i o del p esen e abajo es p esen a el pa adigma de la
p og amaci´on con conjun os de espues as como una he amien a pa a mo-
deliza y esol e p oblemas combina o ios, en gene al, y muy especialmen-
e p oblemas NP-comple os o NP-du os. En la ac ualidad, es gene almen e
acep ado que la clase de complejidad compu acional P, que comp ende los
p oblemas compu acionales esolubles po alg´un algo i mo en iempo poli-
nomial, cap u a la noci´on de “p oblema a able” (es o es, p oblemas que
pueden esol e se en un iempo de ejecuci´on “ azonable” incluso pa a en-
adas de ama˜no g ande). La clase de complejidad NP comp ende aquellos
p oblemas compu acionales ales que, dado un candida o, e i ica si es o
no una soluci´on del p oblema puede hace se en iempo polinomial (pe o, a
p io i, no se sabe si encon a una soluci´on del p oblema puede ambi´en con-
segui se en iempo polinomial). De e mina si las clases P y NP son o no
iguales es el amoso p oblema P e sus NP, uno de los p incipales p oblemas
abie os en la Ma em´a ica ac ual. Den o de la clase NP, des acan un ipo de
p oblemas muy ele an es: los p oblemas NP-comple os. Un p oblema A se
di ´a NP-comple o si: 1) pe enece a la clase NP y 2) cualquie o o p oblema
en la clase NP es educible (en iempo polinomial) a dicho p oblema A. Los
p oblemas NP-comple os cons i uyen, po an o, la clase de los p oblemas
“m´as di ´ıciles” den o de la clase NP. Es bien conocido que hay mul i ud
de p oblemas ma em´a icos in e esan es que esul an se NP-comple os. M´as
gene almen e, un p oblema A se di ´a NP-du o (o NP-ha d) si cualquie p o-
blema en la clase NP es educible (en iempo polinomial) a dicho p oblema
A, aunque aho a A no iene po qu´e pe enece a NP. De nue o, la clase de
p oblemas NP-du os cap u a la idea de “p oblemas compu acionales p esumi-
blemen e di ´ıciles de esol e ”. La p og amaci´on con conjun os de espues a
(o Answe Se P og amming, cuyo ac ´onimo es ASP) es una p og amaci´on
dis in a a la adicional (se enma ca en el campo de la p og amaci´on decla-
a i a) cuyo p incipal en oque es busca soluci´on a p oblemas de b´usqueda
di ´ıciles, p incipalmen e p oblemas NP-comple os o NP-du os.
5
Pa a el desa ollo del abajo, necesi amos aden a nos un poco m´as en la
p og amaci´on con conjun os de espues a, es deci , necesi amos sabe qu´e son
los p og amas de ASP, qu´e elemen os los o man y qu´e p opiedades ienen
es os p og amas y sus soluciones, los denominados conjun os de espues a.
Es o es lo que se es udia en los cap´ı ulos 1 y 2 de es e abajo. En el cap´ı ulo
1, abo damos la sin axis y la sem´an ica, an o o mal como in o mal, de los
p og amas de ASP, en la que se exponen algunos ejemplos pa a ilus a el
con enido. Adem´as, en el cap´ı ulo se habla ambi´en ace ca de la sin axis
de los p og amas de ASP en CLINGO, sis ema que usa emos a lo la go del
abajo pa a ep esen a y esol e los p oblemas que se an con emplando.
En el cap´ı ulo 2, nos cen amos en es udia las p opiedades de los p og amas
de ASP y de sus soluciones. Pa a el cap´ı ulo 1 y 2, se usa p incipalmen e
in o maci´on p oceden e de [GK14], [Li 08], [Li 19], [GKK+19], [GL88] y los
apun es de la p´agina web [HD21] que mencionamos en la bibliog a ´ıa.
Pa a abo da nues o obje i o, la b´usqueda de soluciones pa a p oblemas
NP-ha d, necesi amos ap ende a ep esen a p oblemas eales. Nos cen a-
mos en es o mismo en el cap´ı ulo 3: en es e, emos c´omo cons ui las de-
nominadas bases de conocimien o, en las que se es udia c´omo ep esen a
si uaciones eales, a a ´es de di e sos ejemplos, en los que in en amos mos-
a la impo ancia de la ep esen aci´on de odo el conocimien o, incluido
el que se posee po sen ido com´un, y ambi´en se mues a c´omo ep esen a
si uaciones en las que la in o maci´on no es comple a o posee una es uc u a
je ´a quica. En el cap´ı ulo 4, se es udian las si uaciones en las que apa ecen
de ec os, es deci , si uaciones que se igen po exp esiones como gene al-
men e, habi ualmen e, e c, y las excepciones que nos podemos encon a en
es e ipo de ci cuns ancias, ecupe ando los ejemplos que se exponen en el
cap´ı ulo 3 y a˜nadi´endoles algunos de ec os. Pa a es as secciones, seguimos
p incipalmen e el lib o [GK14] y la p´agina web [HD21].
Mien as que en los cap´ı ulos 3 y 4 nos cen amos p incipalmen e en la
ep esen aci´on del p oblema o si uaci´on que se con empla y en encon a ele-
men os que e i iquen cie as eglas, en el cap´ı ulo 5, el en oque cambia: el
obje i o es busca soluciones a p oblemas a a ´es de educi los a encon a
p og amas de ASP cuyos conjun os de espues a nos den es as mismas solu-
ciones. Exponemos c´omo se pueden plan ea es os p og amas con el es udio
de un p oblema ma em´a ico amoso, el encon a los ciclos hamil onianos de
un g a o, y un puzzle, el sudoku. Pa a es e cap´ı ulo, se uel e a usa an o
la p´agina web [HD21] como el lib o [GK14].
Finalmen e, en el cap´ı ulo 6, plan eamos algunos puzzles in e esan es en
6
la p og amaci´on con conjun os de espues a desde un pun o de is a compu-
acional y dada su ep esen aci´on. Es os puzzles son el Nu ikabe, el puzzle
Heyawake y po ´ul imo, el puzzle Masyu. Con es os puzzles, a amos o al-
men e nues o obje i o, ya que decidi cu´ando hay una soluci´on pa a es os
puzzles y cu´ando no cons i uye un p oblema NP-comple o (p oblema NP
y NP-ha d al mismo iempo). Pa a es e cap´ı ulo, se sigue muy de ce ca la
e e encia [CKK+07]. Pa a ilus a nues os p og amas, se han esuel o al-
gunos ejemplos de puzzles ex a´ıdos de aplicaciones y p´aginas web pa a la
gene aci´on alea o ia de los mismos.
Pa a es e abajo, no se necesi an conocimien os p e ios sob e la p og a-
maci´on con conjun os de espues a ni ace ca del sis ema CLINGO, pues el
desa ollo e´o ico necesa io pa a la comp ensi´on del abajo se ealiza a lo
la go del mismo.
7
Cap´ı ulo 1
In oducci´on a CLINGO
CLINGO es un sis ema desa ollado en la Uni e sidad de Pos dam con la
inalidad de ep esen a y esol e p oblemas en el ma co de la p og amaci´on
de conjun o de espues a (en ingl´es, Answe Se P og amming, de donde
p oceden las siglas ASP). En es e cap´ı ulo, nos cen a emos en p esen a
los elemen os esenciales de es e lenguaje pa a pode en ende los es an es
cap´ı ulos de es e abajo. Pa a una in o maci´on comple a de es e sis ema se
puede isi a la p´agina web: h ps://po assco.o g.
1.1. Sin axis y sem´an ica de p og amas ASP
ASP es un ipo de p og amaci´on decla a i a o ien ada a la esoluci´on de
p oblemas combina o ios. A a ´es de un conjun o de eglas, se desc iben los
obje os de un dominio y las elaciones que hay en e es os obje os.
Pa a pode de ini qu´e es un p og ama de ASP, eamos p ime o los ele-
men os que pueden apa ece en es os p og amas, que son las cons an es, las
unciones, los p edicados y las a iables. El conjun o de los nomb es de las
cons an es del p og ama se denomina ´a O, y de igual o ma, deno a emos
como F,PyVal conjun o de los nomb es de las unciones, los p edicados
y las a iables espec i amen e. Los p edicados exp esan las elaciones que
hay en e los obje os o p opiedades de los mismos. Se denomina signa u a a
Σ =< O, F, P, V >
Veamos algunos ejemplos.
8
•Sa is ace la egla:
p(a) o p(b) ←p(c), no q(c).
pues no sa is ace el cue po.
•Sa is ace la egla:
p(a) ← ¬p(b).
pues sa is ace el cue po y la cabeza de la egla.
•No sa is ace:
p(b) ←p(a), no p(c), no -p(c).
pues sa is ace el cue po de la egla y no sa is ace la cabeza.
Las es icciones, como dec´ıamos an es, son eglas que no poseen cabeza.
Po an o, pa a que un conjun o L sa is aga una es icci´on, alguno de los
li e ales ex endidos del cue po de la egla debe no sa is ace se en L.
Ejemplo 10. El conjun o L={p(a)}sa is ace la es icci´on:
←p(a),¬q(b),no p(c), no ¬q(a).
1.1.1. Sem´an ica in o mal
La de inici´on que imos an es de conjun o de espues a es una de inici´on
in o mal. En es a secci´on, amos a es udia algunos ejemplos de p og amas
y de sus conjun os de espues as co espondien es.
Ejemplo 1.
a←b. % C ee a si c ee b
b. % C ee b
La segunda egla del p og ama nos obliga a c ee b. Como los conjun os de
espues a del p og ama deben sa is ace odas las eglas, po la p ime a egla
es amos obligados a c ee a. As´ı, el conjun o {a b}cons i uye un conjun o
de espues a del p og ama pues sa is ace odas las eglas, no con iene con-
adicciones y e i ica el p incipio de acionalidad. Po o o lado, el conjun o
{a b c} e i ica ambi´en odas las eglas y no con iene con adicciones, pe o
no es un conjun o de espues a pues no e i ica el p incipio de acionalidad
(no debe c ee nada que no es ´e obligado a c ee , y sin emba go no hay
ninguna egla que obligue a c ee c).
15

Ejemplo 2 (Negaci´on cl´asica).
¬a← ¬b.
¬b.
Los conjun os de espues a del p og ama deben sa is ace odas las eglas.
Pa a ello, deben con ene a ¬b(si no, no se sa is ace ´ıa la segunda egla).
Pa a sa is ace la p ime a, como ya sa is acen el cue po, deben sa is ace la
cabeza, luego ambi´en deben con ene a ¬a. Po an o, el conjun o {¬b¬a}
es un conjun o de espues a pa a el p og ama, ya que sa is ace las eglas, no
con iene con adicciones y e i ica el p incipio de acionalidad.
Ejemplo 3 (Disyunci´on epis ´emica).
a o b. %C ee a o c ee b.
Tan o {a}y{b}como {a b}son conjun os que sa is acen las eglas del
p og ama, pe o solo los dos p ime os son conjun os de espues a pues el
e ce o no sa is ace el p incipio de acionalidad (c ee m´as de lo que es ´a
obligado a c ee ).
Es o no signi ica que la disyunci´on epis ´emica sea excluyen e, de hecho el
p og ama:
a o b.
a.
b.
iene como conjun o de espues a a {a b}, lo cual se ´ıa una con adicci´on si
la disyunci´on uese excluyen e (al se excluyen e, se pod ´ıa c ee aob, pe o
no los dos a ez).
Podemos exp esa la disyunci´on excluyen e a a ´es del siguien e p og ama:
a o b.
¬a o ¬b.
En cuyo caso los conjun os de espues a son {a¬b}y{b¬a}.
Ejemplo 4 (Res icciones).
a o b ←c.
c.
←a.
16
La segunda egla nos obliga a c ee c. La p ime a nos indica que si se c ee
c, se c ee aob, luego los conjun os {c a}y{c b}son posibles conjun os
de espues a. Pe o po la e ce a nos es imposible c ee a, luego el ´unico
conjun o de espues a de es e p og ama es {c b}.
Ejemplo 5 (Negaci´on po de ec o).
Supongamos el p og ama:
p(a) ←no p(b).
Es e p og ama nos obliga a c ee p(a) si p(b) no pe enece al conjun o de
ce ezas. Como no hay ninguna egla que enga a p(b) en la cabeza, no
enemos po qu´e c ee p(b), luego se e i ica el cue po de la egla. Pa a
sa is ace la cabeza, se debe c ee p(a). De es e modo, {p(a)}cons i uye el
´unico conjun o de espues a del p og ama.
Si conside amos aho a el siguien e p og ama m´as comple o:
p(a) ←no p(b).
p(d) ←no p(c).
p(c) ←no p(e).
p(b).
La cua a egla nos obliga a c ee p(b). Como se c ee p(b), el cue po de la
p ime a egla no se e i ica. Como no hay ninguna egla que enga a p(e) en
su cabeza, se sa is ace el cue po de la e ce a egla, po an o p(c) o ma ´a
pa e del conjun o de espues a. Como se c ee p(c), no se e i ica el cue po de
la segunda egla. As´ı, s´olo es amos obligados a c ee p(b) y p(c). El conjun o
de espues a de es e p og ama es po an o {p(c) p(b)}.
Pasemos aho a a de ini qu´e se en iende po consecuencia de un p og ama.
Un p og ama P implica un conjun o de li e ales L si L es ´a con enido en odos
los conjun os de espues a de P. Se dice en onces que L es una consecuencia
de P y se deno a po P L.
En la l´ogica cl´asica, la elaci´on de implicaci´on iene la p opiedad de se
mon´o ona, es deci , aunque a˜nadamos nue as hip´o esis adicionales a un eo-
ema, las consecuencias del eo ema o iginal se man ienen. Sin emba go, la
elaci´on de implicaci´on que acabamos de de ini no es mon´o ona: al a˜nadi
nue a in o maci´on al p og ama P, puede ocu i que las consecuencias de P
disminuyan.
17
Siguiendo con el segundo p og ama del Ejemplo 5, podemos e que los
li e ales p(b) y p(c) son consecuencias de es e, sin emba go, al a˜nadi le una
nue a egla:
p(a) ←no p(b).
p(d) ←no p(c).
p(c) ←no p(e).
p(b).
p(e).
p(c) deja de se una consecuencia.
Se denomina consul a a una conjunci´on o disyunci´on de li e ales. A las
consul as que ca ecen de a iables se les llama b´asicas. La espues a a una
consul a se ´a:
1. Si la consul a es conjun i a, L1∧. . . ∧Ln, en onces:
Si P {L1,. . . ,Ln}, en onces la espues a es s´ı.
Si exis e alg´un i al que P Li, en onces la espues a es no.
En o o caso, la espues a es desconocido.
2. Si la consul a es disyun i a, L1o . . . o Ln, en onces:
Si exis e alg´un i al que P Li, en onces la espues a es s´ı.
Si P {L1,. . . ,Ln}, en onces la espues a es no.
En o o caso, la espues a es desconocido.
3. Si la consul a es de la o ma p(X1, . . . , Xn) donde los Xison a iables,
en onces la espues a es una lis a de ´e minos 1, . . . , nde mane a que
Pp( 1, . . . , n).
donde Ldeno a el li e al complemen a io de L.
Conside amos el siguien e ejemplo:
Ejemplo 6 (Hip´o esis del mundo ce ado).
Se conside a el p og ama:
p(a) ←no q(a).
18
Como q(a) no apa ece como cabeza de ninguna egla, se e i ica el cue po
de la ´unica egla del p og ama y po an o el ´unico conjun o de espues a
que posee es {p(a)}. Veamos las espues as a las siguien es consul as:
¿p(a)? La espues a es s´ı, pues p(a) es consecuencia del p og ama.
¿q(a)? La espues a es desconocido, pues ni q(a) ni ¬q(a) son conse-
cuencias del p og ama.
¿p(a) o q(a)? Como el p og ama implica p(a), la espues a es s´ı.
¿p(a) ∧q(a)? La espues a es desconocido, pues p(a) es consecuencia
del p og ama pe o ni q(a) ni ¬q(a) son consecuencias.
Conside emos aho a el p og ama a˜nadiendo una egla m´as, la cual se deno-
mina hip´o esis del mundo ce ado:
p(a) ←no q(a).
¬q(X) ←no q(X).
Debemos en ende es a egla como: si q(X) no pe enece al conjun o de
ce ezas del p og ama en onces q(X) es also. Es o implica que cada ez que
se enga un ´e mino b´asico ,q( ) o ¬q( ) a a pe ence al conjun o de
espues a. As´ı, el ´unico conjun o de espues a del p og ama es {p(a) ¬q(a)}
y po an o las espues as a las consul as an e io es aho a son:
¿p(a)? La espues a es s´ı, pues p(a) es consecuencia del p og ama.
¿q(a)? La espues a es no, pues ¬q(a) es consecuencia del p og ama.
¿p(a) o q(a)? La espues a es s´ı po que el p og ama implica p(a).
¿p(a) ∧q(a)? La espues a es no, pues el p og ama implica ¬q(a).
1.1.2. Sem´an ica o mal
Pa a e la de inici´on o mal de conjun o de espues a, usamos la no-
ci´on de consis encia: Un conjun o L de li e ales b´asicos es consis en e si no
con iene li e ales complemen a ios.
Adem´as, debemos ene en cuen a si el p og ama con iene o no con iene
negaci´on po de ec o.
19
Conjun os de espues a I: p og amas sin negaci´on po de ec o.
Conside emos en p ime luga ´unicamen e p og amas cuyas eglas no con-
ienen negaci´on po de ec o. En es as condiciones, un conjun o L es un con-
jun o de espues a pa a un p og ama P si:
1. L es consis en e.
2. L sa is ace las eglas del p og ama.
3. L es minimal: ning´un subconjun o p opio de L sa is ace odas las eglas
de P.
A con inuaci´on amos a e a ios ejemplos, e omando algunos desc i os
con an e io idad en la Secci´on 1.1.1:
Ejemplo 7 (Ejemplo 1 de la Secci´on 1.1.1)
a←b.
b.
El conjun o L={a b}es un conjun o de espues a pa a es e p og ama
pues:
Es consis en e, no con iene li e ales complemen a ios.
Sa is ace odas eglas del p og ama: sa is ace la egla de cue po ac´ıo
pues b∈L. Pa a sa is ace la p ime a egla, como sa is ace el cue po
de la egla, debe sa is ace la cabeza, lo cual ocu e pues a∈L.
Es minimal: el conjun o ∅no sa is ace la segunda egla. Lo mismo
ocu e con {a}. Po o o pa e, el conjun o {b}no sa is ace la p ime a.
De es e modo, no hay subconjun os p opios de Lque sa is agan odas
las eglas.
Adem´as es el ´unico conjun o de espues a que posee el p og ama: si exis-
iese o o conjun o Mdis in o a Lde mane a que uese ambi´en un conjun o
de espues a del p og ama, en onces pa a sa is ace odas las eglas, L end ´ıa
que es a con enido en M. Pe o en onces Lse ´ıa un subconjun o p opio de
Mque sa is ace ´ıa odas las eglas del p og ama, luego Mno se ´ıa minimal
y po an o llega ´ıamos a una con adicci´on.
Algunas obse aciones ace ca del p og ama:
20

G¿Es auna consecuencia del p og ama? S´ı.
G¿Es buna consecuencia del p og ama? S´ı.
G¿Es ¬auna consecuencia del p og ama? No.
G¿Es ¬buna consecuencia del p og ama? No.
Ejemplo 8 (Ejemplo 3 de la Secci´on 1.1.1: disyunci´on epis ´emica.)
Conside amos de nue o el p og ama:
a o b.
Los conjun os L1={a}yL2={b}son conjun os de espues a pa a es e
p og ama: sa is acen las eglas, son minimales (el ´unico subconjun o p opio
que poseen ambos conjun os es ∅, que no sa is ace la egla) y son consis en es.
Con es a de inici´on o mal de conjun o de espues a se puede e ambi´en
que el conjun o {a b}no es un conjun o de espues a del p og ama: No es
minimal, pues los subconjun os {a}y{b}son p opios y sa is acen las eglas
del p og ama.
Si nos plan eamos algunas de las consul as an e io es, enemos que:
G¿Es auna consecuencia del p og ama? Desconocido, pues pa a se con-
secuencia, adebe ´ıa pe enece a odos los conjun os de espues a del
p og ama pe o a /∈ {b}, y po o o lado, el p og ama ampoco implica
a¬a
G¿Es buna consecuencia del p og ama? Desconocido: al igual que an-
es, el p og ama no implica a bpues es e no pe enece al conjun o de
espues a {a}, y ampoco implica a ¬b.
O o p og ama cuyas eglas con ienen disyunci´on epis ´emica es el siguien-
e:
a o ¬a.
b←a.
b← ¬a.
Veamos que los conjun os de espues a del p og ama son L1={b a}y
L2={b¬a}:
21
1. Ambos conjun os son consis en es.
2. Ve i ican las eglas: L1sa is ace la p ime a egla pues con iene al ´e mino
a, sa is ace la segunda egla pues e i ica an o el cue po, ya que con-
iene al ´e mino a, como la cabeza, po que con iene a b, y sa is ace la
e ce a egla al no sa is ace su cue po. De mane a an´aloga podemos
e que L2sa is ace odas las eglas del p og ama.
3. Son minimales: odos los ´e minos p esen es en L1son necesa ios pa-
a sa is ace las eglas del p og ama, as´ı que es e no puede con ene
subconjun os p opios que e i iquen odas las eglas. Con el mismo
azonamien o ob enemos que L2es minimal.
Como ya comen amos en la Secci´on 1.1, ao ¬ano es una au olog´ıa. As´ı,
si conside amos el p og ama an e io sin la p ime a egla, el ´unico conjun o
de espues a es ∅, ya que nada nos obliga a c ee que ao¬asea cie o, luego
no se e i ica el cue po de ninguna de las dos eglas.
Ejemplo 9.
Conside emos el siguien e p og ama P:
p(a) ←q(a).
¬p(a).
El conjun o L={¬p(a)}es un conjun o de espues a del p og ama pues es
consis en e, sa is ace odas las eglas del p og ama y es minimal (el ´unico
subconjun o p opio que iene es el ∅, que no sa is ace la segunda egla). De
mane a an´aloga que en el ejemplo an e io , se puede e que de hecho es el
´unico conjun o de espues a del p og ama.
Podemos plan ea las siguien es consul as:
¿¬p(a)? La espues a es s´ı, pues P ¬p(a). Po es e mo i o, la es-
pues a a la consul a ¿p(a)? es no.
Las consul as ¿q(a)? y ¿¬q(a)? ob ienen la misma espues a: desconoci-
do, pues ni q(a) ni su complemen a io son consecuencias del p og ama.
Ano aci´on: Es e ejemplo mues a la di e encia con la implicaci´on cl´asica.
Mien as que en nues o caso el li e al ¬q(a) no es una consecuencia, si
hubi´esemos u ilizado la implicaci´on cl´asica s´ı se ´ıa una consecuencia.
22
Conjun os de espues a II: p og amas con negaci´on po de ec o.
Conside emos aho a p og amas P cuyas eglas pueden con ene negaci´on
po de ec o. Deno amos po PSel p og ama educido de P espec o del con-
jun o de li e ales b´asicos S, que se o ma eliminando pa a cada li e al I∈S
odas las eglas del p og ama que con ienen a no Iy eliminando de las
es an es eglas las p emisas que con engan negaci´on po de ec o. En es a
si uaci´on, S es un conjun o de espues a de P si lo es de g ound(P)S.
Ejemplo 10.
Sea el p og ama Q:
Regla 1: p(a) o q(a) ← (a), no p(b), no q(b).
Regla 2: p(a) ← ¬ (a), p(b), no q(b).
Regla 3: q(a) ←no q(b), no (b).
Regla 4: p(b) ←no q(a), (b).
Regla 5: ¬ (b).
Regla 6: p(a) ←q(a), ¬ (b).
y el conjun o S={ (a), p(b), q(a),¬ (b)}.
En onces, el p og ama educido de Q espec o de S es:
p(a) ← ¬ (a), p(b). (P o iene de la egla 2)
q(a). (P o iene de la egla 3)
¬ (b). (Regla 5, no con en´ıa negaci´on po de ec o)
p(a) ←q(a), ¬ (b). (Regla 6, no con en´ıa negaci´on po de ec o)
La egla 1 del p og ama Q ha sido eliminada pues con en´ıa al li e al ex-
endido no p(b) yp(b)∈S. Po el mismo mo i o se elimina la egla 4, pues
apa ece en ella no q(a) yq(a)∈S.
De es e modo, pa a comp oba que S es un conjun o de espues a de un
p og ama P cualquie a, debemos:
1. Calcula g ound(P).
2. Calcula g ound(P)S.
3. Comp oba que S es consis en e y sa is ace odas las eglas de g ound(P)S.
23
4. Comp oba que S es minimal, es deci , ning´un subconjun o p opio de
S sa is ace odas las eglas de g ound(P)S.
P oseguimos con algunos ejemplos:
Ejemplo 11 (Ejemplo 5 de la Secci´on 1.1.1: negaci´on po de ec o.)
Sea P:
p(a) ←no p(b).
Tomemos el conjun o S={p(a)}.El p og ama educido de P espec o de S,
PS, es:
p(a).
ya que como no hay ninguna egla que con enga a no p(a), empezamos
di ec amen e a elimina las p emisas que con ienen negaci´on po de ec o de
las eglas. El conjun o S es el ´unico conjun o de espues a pa a el p og ama
PSluego es conjun o de espues a del p og ama P.
Veamos aho a el siguien e p og ama Qdel Ejemplo 5 de la secci´on 1.1.1:
p(a) ←no p(b).
p(d) ←no p(c).
p(c) ←no p(e).
p(b).
Sea L={p(b) p(c)}. Pa a ob ene el p og ama educido de Q espec o L,
eliminamos la p ime a y la segunda egla, que con ienen a los li e ales ex en-
didos no p(b) yno p(c), y despu´es de las eglas es an es eliminamos las
p emisas que con ienen negaci´on po de ec o, como no p(e). As´ı, QL iene
la o ma:
p(c).
p(b).
Como el conjun o L es conjun o de espues a del p og ama educido, L es
conjun o de espues a del p og ama Q.
Cabe des aca que algunos p og amas de ASP no poseen conjun os de
espues a. A es os p og amas se les denomina inconsis en es.
24
1.2.6. In e alos
Pa a cons ui in e alos, se usan exp esiones de la o ma s.. , donde
suponemos que s <= , que ep esen an la sucesi´on de n´ume os na u ales
consecu i os en e s y . Vemos un ejemplo de in e alos en un c´odigo:
pa es iguales(X,Y) :- X=0..2, Y=0..2, X=Y.
Ob enemos los pa es (X,X) con X en e 0 y 2.
En es e ejemplo, los in e alos se encuen an en el cue po de la egla po
lo que se expanden de o ma disyun i a. Si el in e alo apa ece en la cabeza
de la egla, se expande de o ma conjun i a. Po ejemplo, el hecho:
p(2..5).
se expande al conjun o de hechos:
p(2).
p(3).
p(4).
p(5).
1.2.7. Ag upaci´on
En los p og amas puede apa ece el mismo s´ımbolo de p edicado o unci´on
a ias eces e aluado en dis in os a gumen os. Es e es el caso del ejemplo que
se expone en la secci´on 1.2.5:
cons an e(a). cons an e(ab). cons an e(ac).
en e o(2). en e o(3). en e o(1).
es mayo (X,Y) :- X>Y, cons an e(X), cons an e(Y).
En es e ejemplo, los p edicados cons an e() oen e o() apa ecen m´as
de una ez en el p og ama e aluados en a gumen os di e en es.
La ag upaci´on se usa pa a esc ibi de o ma compac a los a gumen os
de p edicados o unciones, e i ando as´ı el uso ei e ado de es os. Pa a ello,
sepa amos los a gumen os con ";". De es a o ma, el c´odigo an e io puede
eesc ibi se como:
31

cons an e(a;ab;ac).
en e o(2;3;1).
es mayo (X,Y) :- X>Y, cons an e(X), cons an e(Y).
es mayo en e os(X,Y) :- X>Y, en e o(X), en e o(Y).
Como ocu ´ıa en el caso de los in e alos, dependiendo de si la ag upaci´on
se encuen a en la cabeza o en el cue po de la egla, se expande de o ma
conjun i a o disyun i a, espec i amen e.
1.2.8. Condicionales
Pa a esc ibi condicionales en CLINGO, se usa el s´ımbolo “:”. Los condi-
cionales son de la o ma:
L0:L1, . . . , Ln
donde los Ljpa a odo j=0 . . . n son li e ales. A L1, . . . , Lnse le denomina
condici´on. Los li e ales que o man la condici´on se encuen an sepa ados po
comas, al igual que los li e ales que apa ecen en el cue po de las eglas. Pa a
no con undi los li e ales que apa ecen despu´es de un condicional con los
li e ales que cons i uyen la condici´on, se usa el s´ımbolo “;” al inal de la
condici´on. Es o es, supongamos que enemos el p og ama:
elemen o(1..4).
consecu i os(X,Z):- elemen o(X), # alse : elemen o(Y), X<Y, Y<Z;
elemen o(Z), X<Z.
Hemos usado ";"pa a e i a la con usi´on en e los li e ales que pe enecen a
la condici´on del condicional y los que no. El condicional en es a egla e i a
que se e i ique el p edicado consecu i os(X,Z) cuando exis e un n´ume o
in e medio en e X y Z.
En las eglas de los p og amas apa ecen a iables que no se encuen an
suje as a ning´un condicional. Es as a iables se denominan globales y en el
p oceso de ins anciaci´on, se sus i uyen po ´e minos an es que las a iables
que s´ı es ´an suje as a condicionales. Es po es a az´on que no debemos nom-
b a a las a iables que apa ecen en las exp esiones condicionales de o ma
que se puedan con undi con las globales.
32
1.2.9. Res icciones
Las es icciones son exp esiones de la o ma:
s1<1α{ 1:L1;. . . ; n:Ln}<2s2
donde:
Los elemen os iyLison uplas de ´e minos y li e ales espec i amen e.
Si alguna de las uplas de li e ales es ´a ac´ıa, s´olo apa ece la upla de
´e minos que la p ecede (suponemos que no es ´a ac´ıa) y no apa ecen
los dos pun os.
s1ys2son ´e minos y <1y<2son p edicados de compa aci´on.
αes una unci´on que se aplica a las uplas de ´e minos que se encuen an
den o de las lla es una ez se hayan e aluado los condicionales.
CLINGO a a a los elemen os que apa ecen en e las lla es como ele-
men os de un conjun o. Po ello, si apa ece un condicional epe ido den o
de las lla es, se a a como un ´unico elemen o.
Los p edicados <1y<2pueden se eemplazados po “<=”, en cuyo caso
ob enemos una co a supe io o in e io pa a el conjun o.
αpuede se alguna de las unciones siguien es:
#coun , que nos da el n´ume o de elemen os que posee el conjun o.
#sum: Suma de los pesos de las uplas de ´e minos del conjun o (con
peso, nos e e imos al p ime elemen o de la upla). Tambi´en αpuede
se #sum+, en cuyo caso se suman solo los pesos posi i os.
#min y #max, que nos dan el m´ınimo elemen o y el m´aximo del con-
jun o, espec i amen e.
Veamos aho a un ejemplo. Supongamos que que emos e las dis in as
o mas de in e i en 4 emp esas de mane a que ob engamos m´ınimo 1000
eu os. Es o lo podemos esc ibi en CLINGO a a ´es de la es icci´on:
33
1000 <=#sum {300 : emp esa 1; 250: emp esa 2; 600: emp esa 3;
250: emp esa 4}.
Si se decide in e i en la emp esa 1 y en la emp esa 3, el conjun o se
educe a {300,600}. Como al aplica la suma ob enemos 900, no se e i ica
el p edicado de compa aci´on y po an o no se e i ica la es icci´on, luego
no es una posible soluci´on. Pa a que CLINGO nos de odas las soluciones, al
llama lo debemos inclui un ce o (supongamos que hemos llamado al a chi o
donde se encuen a el p og ama Ejemplo Res icciones):
% clingo Ejemplo Res icciones.lp 0
Es o nos da:
% Reading om Ejemplo Res icciones.lp
% Sol ing...
% Answe : 1
% emp esa 1 emp esa 4 emp esa 3
% Answe : 2
% emp esa 1 emp esa 2 emp esa 3
% Answe : 3
% emp esa 1 emp esa 2 emp esa 4 emp esa 3
34
Cap´ı ulo 2
P opiedades de los p og amas
en ASP
A lo la go de es e cap´ı ulo, amos a expone algunas de las p opiedades
que poseen los p og amas de ASP. Adem´as, es udia emos cu´ando un p og a-
ma de ASP es consis en e, es deci , posee alg´un conjun o de espues a, y los
equisi os bajos los cuales es e conjun o de espues a es ´unico.
2.1. Conjun os de espues a: Exis encia, uni-
cidad y p opiedades
Conside emos un p og ama P en ASP compues o po eglas de la o ma:
A0o .. . o Ai←Ai+1, . . . , Am,no Am+1,...,no An
donde los Aipa a i= 0 . . . n son li e ales.
Sean L1yL2dos conjun os de espues a dis in os de P. En onces, se
e i ica que L16⊆ L2yL26⊆ L1(los conjun os no pueden compa a se espec o
a la inclusi´on).
Obse aci´on: Si un conjun o uni a io, po ejemplo L={a}, es un conjun o
de espues a pa a P, no pueden exis i o os conjun os de espues a de P que
con engan al ´e mino a, pues si exis iese un conjun o M al que a∈Men-
onces L⊆My es o no puede ocu i como acabamos de e . Po el mismo
azonamien o, si ∅es un conjun o de espues a de P, en onces es el ´unico
35
conjun o de espues a de P pues odo conjun o L e i ica que ∅ ⊆ L.
Conside emos aho a p og amas de ASP cuyas eglas no con ienen nega-
ci´on cl´asica ni es icciones, es deci , p og amas que solo poseen eglas de la
o ma:
A0o .. . o Ai←Ai+1, . . . , Aj,no Aj+1,..., no Am.(2.1)
donde los Asson ´a omos pa a odo s≥0. Es e ipo de p og amas se deno-
minan no males.
Ejemplo 1.
El siguien e p og ama de una egla:
p(a) ←no p(a).
es un p og ama no mal, ya que no posee es icciones ni negaci´on cl´asica y
adem´as, es inconsis en e.
Con es o, emos que no podemos asegu a la exis encia de conjun os de
espues a pa a p og amas no males. Sin emba go, pa a algunos ipos de p o-
g amas no males pod emos ga an iza no s´olo la exis encia, sino ambi´en la
unicidad de conjun os de espues a. En p ime luga , es udiemos los deno-
minados p og amas posi i os.
De inici´on 1 (P og amas posi i os) Se dice que un p og ama P es po-
si i o si sus eglas no poseen negaci´on po de ec o, es deci , si sus eglas
ienen la o ma:
A0o .. . o Ai←Ai+1, . . . , Aj.(2.2)
donde los Asson ´a omos y s≥0.
Ejemplo 2.
El siguien e p og ama es un p og ama posi i o:
es udian e(juan,colegio).
es udian e(ana,uni ).
es udian e(ma a, ins i u o).
36

es udian e(ma co, uni ).
uni e si a io(X) ←es udian e(X, uni ).
Pa a es udia si es e p og ama posee alg´un conjun o de espues a, usamos
la p oposici´on:
P oposici´on 1 Sea P un p og ama posi i o. En onces, P es consis en e. M´as
a´un, si las eglas de P no con ienen disyunci´on, en onces P posee un ´unico
conjun o de espues a.
Como el p og ama an e io no posee disyunci´on en sus eglas, usando la
p oposici´on que acabamos de e podemos asegu a que el p og ama posee
un ´unico conjun o de espues a.
Ejemplo 3.
En el caso del p og ama (lo esc ibimos con la sin axis de CLINGO pa a
pode u iliza lo):
es udian e(ana;juan).
colegio(X);uni e sidad(X) :- es udian e(X).
sabemos que iene al menos un conjun o de espues a po que es posi i o,
pe o como posee disyunci´on en sus eglas, no podemos asegu a que posea
un ´unico conjun o de espues a. De hecho, CLINGO nos de uel e cua o
conjun os de espues a pa a es e p og ama:
% Answe : 1
% es udian e(ana) es udian e(juan) colegio(ana) uni e sidad(juan)
% Answe : 2
% es udian e(ana) es udian e(juan) colegio(ana) colegio(juan)
% Answe : 3
% es udian e(ana) es udian e(juan) uni e sidad(ana) uni e sidad(juan)
% Answe : 4
% es udian e(ana) es udian e(juan) uni e sidad(ana) colegio(juan)
Ejemplo 4.
Sea el p og ama:
(a,b).
(b,c).
37
(Y,X) ← (X,Y).
(X,Z) ← (X,Y), (Y,Z).
Es e p og ama es posi i o y po lo an o es consis en e. Como no po-
see disyunci´on epis ´emica en las eglas, podemos asegu a ambi´en que el
p og ama iene un ´unico conjun o de espues a.
Obs´e ese que el an e io p og ama posi i o cons uye el cie e sim´e ico
y ansi i o de la elaci´on bina ia /2.
Veamos aho a las nociones de p og amas es a i icados ylocalmen e es-
a i icados, pa a los que ambi´en amos a pode expone algunos esul ados
de exis encia y unidad de conjun os de espues a.
De inici´on 2 (G a o de dependencia) Conside emos un p og ama P cu-
yas eglas son de la o ma (2.1). Sea Q el conjun o o mado po los nomb es
de p edicados del p og ama P. Se denomina g a o de dependencia de P
al g a o cuyos nodos son los s´ımbolos de p edicado p esen es en Q y cuyas
a is as son de la o ma (p1, p2,+) o(p1, p2,−), donde p1yp2son s´ımbolos
de p edicado, que se denominan espec i amen e a co posi i o y nega i o y
que apa ecen en el g a o seg´un:
1. Si exis e una egla en P e i icando que su cabeza con iene un ´a omo
o mado po el s´ımbolo de p edicado p1y su cue po con iene un ´a omo
o mado po p2, en onces el a co (p1, p2,+) apa ece en el g a o.
2. Si exis e una egla en P e i icando que su cabeza con iene un ´a omo
o mado po el s´ımbolo de p edicado p1y su cue po con iene un li e al
de la o ma no I, con I el ´a omo o mado po el s´ımbolo de p edicado
p2, en onces el a co (p1, p2,−)apa ece en el g a o.
De inici´on 3 (Funci´on de ni el) Sea P un p og ama no mal sin a ia-
bles. Las unciones || || que asocian a cada elemen o del conjun o de los
´a omos b´asicos de P un n´ume o na u al se denominan unciones de ni el
pa a P.
Obse aciones:
1. Dos nodos p1yp2de un mismo g a o de dependencia pueden apa ece
conec ados po un a co posi i o (p1, p2,+) y uno nega i o (p1, p2,−)
simul ´aneamen e.
38
2. Sea D=p1o . . . o pnuna disyunci´on epis ´emica de a ´omos de un
p og ama P y sea || || la unci´on de ni el pa a el p og ama. En onces,
||D|| =min{||p1||,...,||pn||}.
Ejemplo 5.
Sea el p og ama no mal:
p(a) o p(c) ←no p(b).
p(c) ←p(d), no p(a).
p(d).
El conjun o de ´a omos b´asicos del p og ama es {p(a),p(b),p(c),p(d)}.
Tenemos que la siguien e unci´on es un ejemplo de unci´on de ni el pa a
el p og ama P:
||p(a)|| = 2, ||p(b)|| = 2, ||p(c)|| = 3, ||p(d)|| = 0
De inici´on 4 (P og amas es a i icados) Sea P un p og ama de la o -
ma (2.1) y sea G su g a o de dependencia. Se dice que P es un p og ama
es a i icado si G no con iene ning´un ciclo nega i o, es o es, ciclos que
con ienen al menos un a co nega i o.
De inici´on 5 (P og amas localmen e es a i icados) Sea un p og ama
P cuyas eglas son de la o ma:
A0o .. . o Ai←Ai+1, . . . , Aj,no Aj+1,..., no Am.
y sea g ound(P)el p og ama o mado po eglas de la o ma:
: A0o .. . o Ai←Ai+1, . . . , Aj,no Aj+1,..., no Am.
En onces se dice que P es ´a localmen e es a i icado si exis e una
unci´on de ni el || || pa a g ound(P)de mane a que pa a cada egla del
p og ama g ound(P), se e i ica:
1. ||Ak|| ≤ ||cabeza( )|| pa a odo Akcon i<k≤j.
2. ||Ak|| <||cabeza( )|| pa a odo Akcon j < k ≤m.
39
Sigamos con los ejemplos.
Ejemplo 6.
Conside amos el p og ama R:
p(a) ←q(a).
(a) ←no q(b).
q(a).
Los nodos del g a o de dependencia de R son p,qy .
El a co (p, q, +) debe apa ece en el g a o po que en la p ime a egla se
encuen a p(a) en la cabeza y q(a) en el cue po.
Del mismo modo, el a co ( , q, −) debe apa ece en el g a o pues en la cabeza
de la segunda egla apa ece (a) y en su cue po, no q(b).
Como no con iene ciclos nega i os, el p og ama R es ´a es a i icado.
Ejemplo 7.
Conside emos el p og ama S:
q(b) ←q(a).
q(a).
Las unciones:
||q(s)||1=1 si s=b
0 si s=a||q(s)||2=0 si s=b
1 si s=a
son unciones de ni el pa a el p og ama S. Sin emba go, || ||2no e i i-
ca las condiciones de la De inici´on 5, pues pa a la egla 1 no se e i ica
||q(a)||2= 1 ≤ ||q(b)||2= 0. A´un as´ı, se iene que S es un p og ama local-
men e es a i icado pues || ||1si e i ica las condiciones de la de inici´on.
Obse aciones:
1. Los p og amas que no con ienen negaci´on cl´asica ni negaci´on po de ec-
o es ´an localmen e es a i icados (una unci´on de ni el || || pa a es os
p og amas que e i ica las condiciones de la De inci´on 5 es la unci´on
que asocia cada ´a omo pkque apa ece en las eglas con el n´ume o 0, es
deci , ||pk|| = 0). En es e caso se encuen a el p og ama S que acabamos
de e en los ejemplos.
2. Si un p og ama es ´a es a i icado, en onces ambi´en es ´a localmen e
es a i icado; sin emba go, el ec´ıp oco no es cie o. El p og ama R
40
ecinos(X,Y) :- esidencia B(X), esidencia B(Y),
no con i ien es(X,Y).
Sin emba go, al ejecu a el c´odigo (las es eglas conjun amen e) ob enemos:
% Answe : 1
% ecinos(julia,julia) ecinos(ma a,julia) ecinos(manuel,julia)
% ecinos( ocio,julia) ecinos(ma a,ma a) ecinos(manuel,ma a)
% ecinos( ocio,ma a) ecinos(julia,manuel) ecinos(ma a,manuel)
% ecinos(manuel,manuel) ecinos( ocio,manuel) ecinos(julia, ocio)
% ecinos(ma a, ocio) ecinos( ocio, ocio)
No a: hemos usado la di ec iz #show pa a que s´olo salgan los hechos ela-
cionados con el p edicado ecinos.
Los hechos ecalcados no debe ´ıan apa ece en el conjun o de espues a ya que
una pe sona no puede se su p opio ecino y adem´as an o Roc´ıo y Manuel
como Ma a y Julia son con i ien es, luego ca ece de sen ido que sean a su
ez ecinos.
El p oblema eside en que:
1. No hemos modelizado el conocimien o ´ımplici o de que una pe sona no
puede se ecina de s´ı misma.
2. No hemos modelizado lo que sabemos po sen ido com´un: la elaci´on
“se con i ien e” es una elaci´on sim´e ica, es deci , si a es con i ien e
con b, b es con i ien e con a, po an o, ni a puede se ecino de b, ni
b de a.
Ca ´ac e sim´e ico de la elaci´on con i ien es/2.
A˜nadimos la siguien e egla al p og ama, que ep esen a el ca ´ac e sim´e i-
co de la elaci´on con i ien es:
con i ien es(X,Y) :- con i ien es(Y,X).
Veamos un segundo in en o (ya de ini i o) de ep esen aci´on de la elaci´on
ecinos. De inimos ecinos/2 de la siguien e o ma: X e Y son ecinos si
ambos esiden en el ba io B, no son la misma pe sona y no cons a que sean
con i ien es. De es a mane a, la egla queda como:
47

ecinos(X,Y) :- esidencia B(X), esidencia B(Y),
no con i ien es(X,Y), X != Y.
y ob enemos la siguien e salida p opo cion´andole a CLINGO el p og ama
comple o:
% Answe : 1
% ecinos(manuel,julia) ecinos( ocio,julia) ecinos(manuel,ma a)
% ecinos( ocio,ma a) ecinos(julia,manuel) ecinos(ma a,manuel)
% ecinos(julia, ocio) ecinos(ma a, ocio)
Ob enemos po an o la siguien e in o maci´on nue a:
1. Manuel y Roc´ıo son ecinos de Julia y Ma a.
2. Julia y Ma a son ecinas de Manuel y Roc´ıo.
A˜nadiendo nue a in o maci´on a la base de conocimien os.
Sabemos aho a que:
1. Albe o eside en el ba io B.
2. No enemos conocimien o de que Albe o i a con nadie m´as.
Modelizamos la in o maci´on usando de nue o los p edicados pe sona/1
y esidencia B/1:
pe sona(albe o).
esidencia B(albe o).
Si le p egun amos al p og ama: ¿son Ma a y Albe o con i ien es?, su es-
pues a es desconocido, pues no apa ecen los li e ales con i ien es(ma a,albe o)
ni -con i ien es(ma a,albe o) en el conjun o de espues a. Sin emba go, no-
so os no enemos cons ancia de que Ma a y Albe o sean con i ien es, y
po an o en nues o d´ıa a d´ıa abaja ´ıamos con la hip´o esis de que no lo
son a menos que se nos indicase lo con a io.
Modelizamos es e conocimien o a a ´es de la hip´o esis del mundo ce a-
do: si no se iene cons ancia de que dos pe sonas dis in as son con i ien es,
en onces no lo son. A˜nadimos as´ı la siguien e egla al p og ama:
48
-con i ien es(X,Y) :- no con i ien es(X,Y), pe sona(X),
pe sona(Y), X!=Y.
Ob enemos como salida:
% ecinos(julia,albe o) ecinos(ma a,albe o)
% ecinos(manuel,albe o) ecinos( ocio,albe o)
% ecinos(albe o,julia) ecinos(manuel,julia)
% ecinos( ocio,julia) ecinos(albe o,ma a)
% ecinos(manuel,ma a) ecinos( ocio,ma a)
% ecinos(albe o,manuel) ecinos(julia,manuel)
% ecinos(ma a,manuel) ecinos(albe o, ocio)
% ecinos(julia, ocio) ecinos(ma a, ocio)
% -con i ien es(julia,albe o) -con i ien es(ma a,albe o)
% -con i ien es(manuel,albe o) -con i ien es( ocio,albe o)
% -con i ien es(albe o,julia) -con i ien es(manuel,julia)
% -con i ien es( ocio,julia) -con i ien es(albe o,ma a)
% -con i ien es(manuel,ma a) -con i ien es( ocio,ma a)
% -con i ien es(albe o,manuel) -con i ien es(julia,manuel)
% -con i ien es(ma a,manuel) -con i ien es(albe o, ocio)
% -con i ien es(julia, ocio) -con i ien es(ma a, ocio)
Hemos ob enido as´ı la siguien e in o maci´on nue a sob e Albe o:
1. Albe o es ecino de Julia, Roc´ıo, Ma a y Manuel.
2. Albe o no con i e con Roc´ıo, Julia, Manuel, ni Ma a.
Es a egla adem´as no p o oca con adicciones, es deci , supongamos aho a
que se sabe que Albe o eside en el ba io B y que con i e con Ma a.
De nue o, modelizamos es a elaci´on a a ´es del p edicado con i ien es/2:
con i ien es(albe o,ma a).
Ob enemos as´ı la salida:
% ecinos(julia,albe o) ecinos(manuel,albe o) ecinos( ocio,albe o)
% ecinos(albe o,julia) ecinos(manuel,julia) ecinos( ocio,julia)
% ecinos(manuel,ma a) ecinos( ocio,ma a) ecinos(albe o,manuel)
% ecinos(julia,manuel) ecinos(ma a,manuel) ecinos(albe o, ocio)
% ecinos(julia, ocio) ecinos(ma a, ocio)
49
% -con i ien es(julia,albe o) -con i ien es(manuel,albe o)
% -con i ien es( ocio,albe o) -con i ien es(albe o,julia)
% -con i ien es(manuel,julia) -con i ien es( ocio,julia)
% -con i ien es(manuel,ma a) -con i ien es( ocio,ma a)
% -con i ien es(albe o,manuel) -con i ien es(julia,manuel)
% -con i ien es(ma a,manuel) -con i ien es(albe o, ocio)
% -con i ien es(julia, ocio) -con i ien es(ma a, ocio)
Aunque sin la egla an e io CLINGO nos de ol ´ıa -con i ien es(albe o,ma a)
en el conjun o de espues a, el inclui la no p o oca con adicci´on pues la adi-
ci´on de la nue a egla hace que el li e al an e io no apa ezca en el conjun o
de espues a al no e i ica se el cue po de la egla del que p ocede.
Algunas ano aciones de la egla (suponiendo que Albe o y Ma a son con-
i ien es):
1. Cuando CLINGO nos de uel e el conjun o de espues a de es e p o-
g ama, en ´el nos apa ece el li e al -con i ien es(albe o,julia). Es o es
po que el sen ido com´un no s´olo nos dice que la elaci´on “se con i-
ien es” es sim´e ica sino que ambi´en es ansi i a: si X es con i ien e
con Y e Y es con i ien e con Z, en onces X y Z son con i ien es, y
es a in o maci´on no apa ece e lejada en el p og ama. La modelizamos
a a ´es de la egla:
con i ien es(X,Z) :- con i ien es(X,Y), con i ien es(Y,Z),
X!=Z.
Es necesa io pone que X y Z no son la misma pe sona: en caso con a-
io, como se e i ica ´ıa con i ien es(albe o,ma a) y, po la sime ´ıa,
con i ien es(ma a,albe o), se ob end ´ıa con i ien es(albe o,albe o),
que no que emos que apa ezca en el conjun o de espues a ya que una
pe sona no con i e consigo misma.
2. Si en ez de la egla an e io , hubi´esemos pues o la egla:
-con i ien es(X,Y) :- no con i ien es(X,Y), X!=Y.
CLINGO nos hubiese de uel o el siguien e mensaje de e o (hemos
llamado al a chi o con las eglas del p og ama Ejemplo Vecinos.lp):
% Ejemplo Vecinos.lp:6:1-51: e o : unsa e a iables in:
% (-con i ien es(X,Y)):-#inc base;X!=Y;no con i ien es(X,Y).
% Ejemplo Vecinos.lp:6:15-16: no e: ‘X’ is unsa e
50
% Ejemplo Vecinos.lp:6:17-18: no e: ‘Y’ is unsa e
que nos indica que las a iables X e Y no son segu as. Una a iable Z
se dice segu a si apa ece al menos una ez en el cue po de la egla sin
es a in luenciada po la negaci´on po de ec o no . En nues o caso, las
a iables X e Y apa ecen a ec adas po no y po el ope ado “!=”, que
ampoco nos si e pa a hace la egla segu a. Po eso, debemos inclui
en la egla los li e ales pe sona(X) ype sona(Y).
3.3. Modelizaci´on de las elaciones amilia es
3.3.1. De inici´on ecu si a de an epasado
Tenemos el siguien e ma co amilia :
1. An onio y Luisa son los pad es de Rosa.
2. Rosa y Ma cos ienen un hijo llamado Lucas.
3. Roc´ıo y Lucas son los pad es de Julie a.
4. Ne ea y Ped o son los pad es de Roc´ıo.
5. Suponemos que X no es el pad e o la mad e de Y si no enemos cons-
ancia de es os hechos.
Modelicemos es a in o maci´on conocida.
Pa a clasi ica los elemen os, usamos el p edicado pe sona/1:
pe sona(ne ea;ped o; ocio;ma cos;an onio;luisa; osa;lucas;
julie a).
Pa a ep esen a las elaciones en e ellos, usamos los p edicados pad e/2
ymad e/2:
pad e(ped o, ocio;an onio, osa;ma cos,lucas;lucas,julie a).
mad e(ne ea, ocio; ocio,julie a;luisa, osa; osa,lucas).
51
Al igual que en la Secci´on 3.2, usamos la hip´o esis del mundo ce ado
pa a modeliza el siguien e conocimien o: si no enemos cons ancia de que X
sea pad e (o mad e) de Y, en onces X no es pad e ( espec i amen e mad e)
de Y. Incluimos po an o las siguien es dos eglas al p og ama:
-pad e(X,Y) :- no pad e(X,Y), pe sona(X), pe sona(Y).
-mad e(X,Y) :- no mad e(X,Y), pe sona(X), pe sona(Y).
No a: enemos que inclui los li e ales pe sona(X) y pe sona(Y) pa a que
la egla sea segu a pues an o X como Y se en a ec adas po la negaci´on po
de ec o.
Concep o: P ogeni o .
Usando los p edicados pad e/2 ymad e/2, de inimos ambi´en el p e-
dicado p ogeni o /2: X es p ogeni o de Y si es pad e o mad e de Y. Mo-
delizamos el conocimien o con las eglas:
p ogeni o (X,Y) :- pad e(X,Y).
p ogeni o (X,Y) :- mad e(X,Y).
Ob enemos con es as eglas la siguien e in o maci´on:
%p ogeni o (ped o, ocio) p ogeni o (an onio, osa) p ogeni o (ma cos,lucas)
% p ogeni o (lucas,julie a) p ogeni o (ne ea, ocio) p ogeni o ( ocio,julie a)
% p ogeni o (luisa, osa) p ogeni o ( osa,lucas)
Concep o: An epasado.
De inimos aho a la elaci´on an epasado de la siguien e o ma ecu si a:
Si X es p ogeni o de Y, en onces X es an epasado de Y.
Si X es an epasado de Y e Y es p ogeni o de Z, en onces X es an epa-
sado de Z.
Implemen amos es a in o maci´on a a ´es de las siguien es eglas:
an epasado(X,Y) :- p ogeni o (X,Y).
an epasado(X,Z) :- p ogeni o (Y,Z),an epasado(X,Y).
52

Comple amos la in o maci´on u ilizando la hip´o esis del mundo ce ado:
si no enemos cons ancia de que X sea an epasado de Y, en onces X no es
an epasado de Y.
-an epasado(X,Y) :- no an epasado(X,Y),pe sona(X), pe sona(Y).
Veamos el modelo que nos da CLINGO:
% an epasado(ped o, ocio) an epasado(an onio, osa) an epasado(ma cos,lucas)
% an epasado(lucas,julie a) an epasado(ne ea, ocio) an epasado( ocio,julie a)
% an epasado(luisa, osa) an epasado( osa,lucas) an epasado(ped o,julie a)
% an epasado(an onio,lucas) an epasado(ma cos,julie a)
% an epasado(ne ea,julie a) an epasado(luisa,lucas) an epasado( osa,julie a)
% an epasado(an onio,julie a) an epasado(luisa,julie a)
Ob enemos in o maci´on nue a, como:
1. Ped o, Ma co, Ne ea, Rosa, An onio y Luisa son an epasados de Julie a.
2. An onio y Luisa son an epasados de Lucas.
3.3.2. De inici´on de hijo ´unico
Poseemos los da os de dos amilias:
La p ime a es ´a o mada po Ne ea y Ped o, que ienen una hija, I ene.
La segunda es ´a o mada po Jose a y Rod igo, que ienen dos hijos,
Ma cos y Ma io.
Veamos c´omo podemos implemen a la in o maci´on.
Pa a clasi ica los elemen os ol emos a usa el p edicado pe sona/1
jun o con el p edicado gene o/2:
pe sona(ne ea;i ene;ped o;jose a; od igo;ma cos;ma io).
gene o(i ene,muje ;ne ea,muje ;jose a,muje ).
gene o(ped o,homb e;ma cos,homb e;ma io,homb e; od igo,homb e).
Pa a modeliza las elaciones en e ellos, usamos los p edicados pad e/2
ymad e/2:
53
pad e(ped o,i ene; od igo,ma io; od igo,ma cos).
mad e(ne ea,i ene;jose a,ma cos;jose a,ma io).
Si le p egun amos aho a a CLINGO si Ne ea es el pad e de Ma cos, su es-
pues a es desconocido, pues ni pad e(ne ea,ma cos) ni -pad e(ne ea,ma cos)
pe enecen al conjun o de espues a del p og ama. Pe o sabemos que Ne ea
no puede se el pad e de Ma cos, po que Ne ea es una muje . Pa a ep esen a
es e conocimien o impl´ıci o, usamos las dos eglas siguien es:
-pad e(X,Y) :- gene o(X,muje ),pe sona(Y), X!=Y.
-mad e(X,Y) :- gene o(X,homb e),pe sona(Y), X!=Y.
Concep o: p ogeni o .
De nue o, implemen amos en la base de conocimien o la elaci´on p oge-
ni o : X es p ogeni o de Y si X es pad e o mad e de Y.
p ogeni o (X,Y) :- pad e(X,Y).
p ogeni o (X,Y) :- mad e(X,Y).
Concep o: he manos.
Supongamos que que emos sabe qui´enes de los indi iduos son he manos.
Tenemos que modeliza la elaci´on he manos: X e Y son he manos si no son la
misma pe sona y ienen los mismos pad es. La de inici´on queda ep esen ada
usando el p edicado he manos/2:
he manos(X,Y) :- pad e(F,X), pad e(F,Y), mad e(M,X),mad e(M,Y),
X != Y.
La elaci´on he manos es sim´e ica y ansi i a:
he manos(X,Y) :- he manos(Y,X).
he manos(X,Z) :- he manos(X,Y),he manos(Y,Z), X != Z.
Si le p opo cionamos es e p og ama a CLINGO, nos de uel e (nos ijamos
s´olo en el p edicado he manos):
%he manos(ma io,ma cos) he manos(ma cos,ma io)
54
As´ı, CLINGO nos p opo ciona la in o maci´on que nos in e esaba conoce :
Ma cos y Ma io son he manos.
Comple i ud de la in o maci´on de la base de conocimien o.
U ilizamos la hip´o esis del mundo ce ado pa a ep esen a lo siguien e:
si no enemos cons ancia de que X e Y sean he manos, en onces X e Y no
son he manos.
-he manos(X,Y) :- no he manos(X,Y), pe sona(X), pe sona(Y).
Concep os: hijo e hijo ´unico.
Nos in e esa sabe qui´enes de los indi iduos son hijos ´unicos. Pa a ello,
de inamos p ime o la elaci´on hijo.
Usando el p edicado p ogeni o /2, modelizamos la elaci´on hijo: X es
hijo de Y si Y es un p ogeni o de X.
hijo(X,Y) :- p ogeni o (Y,X).
Po ´ul imo, ep esen emos la elaci´on “se hijo ´unico”: X es hijo ´unico si
es hijo de alguien y no iene he manos (su p ogeni o no iene m´as hijos):
hijoUnico(X) :- hijo(X,Y), # alse: Z !=X, hijo(Z,Y).
De es a mane a, p opo cion´andole a CLINGO odas las eglas an e io es,
ob enemos la salida:
%hijoUnico(i ene)
Y ob enemos as´ı la in o maci´on que busc´abamos: I ene es hija ´unica.
3.4. Modelizaci´on de un conjun o de medios
de anspo e
En es e ´ul imo ejemplo, amos a e c´omo modeliza una base je ´a quica
de conocimien o: los medios de anspo e.
55
Disponemos de la siguien e in o maci´on:
1. Los eh´ıculos se di iden en ma ´ı imos y no ma ´ı imos.
2. Los subma inos, los ele os y las lanchas son eh´ıculos ma ´ı imos.
3. Los au obuses y las ca a anas son eh´ıculos no ma ´ı imos.
4. Des as e es una ca a ana conc e a.
5. Ul ama es un eh´ıculo ma ´
imo conc e o.
Es udiemos c´omo modeliza es e conocimien o je ´a quico del que dispo-
nemos.
Usa emos el p edicado clase/1 pa a enume a las clases que cons i uyen
la je a qu´ıa:
clase( ehiculo;ma ;no ma ;subma ino; ele o;lancha;
au obus;ca a ana).
Pa a desc ibi la je a qu´ıa en e ellas, usamos el p edicado subclase de/2,
que ep esen a la con enci´on inmedia a o di ec a en e clases:
subclase de(ma , ehiculo).
subclase de(no ma , ehiculo).
subclase de(subma ino,ma ).
subclase de( ele o,ma ).
subclase de(lancha,ma ).
subclase de(au obus,no ma ).
subclase de(ca a ana,no ma ).
Concep o: subclase.
Vamos a modeliza la clausu a ansi i a de la elaci´on subclase de/2:
1. Si C1 es subclase di ec a de C2, en onces C1 es subclase de C2.
2. Si C1 es subclase di ec a de C2 y C2 es subclase de C3, en onces C1 es
subclase de C3.
56
Rep esen aci´on del de ec o 1.
Sigamos con el ejemplo. Pa a ep esen a el de ec o “no malmen e, los
ecinos son amigos”, usamos la egla:
amigos(X,Y) :- ecinos(X,Y), no ab(d amigos(X,Y)),
no -amigos(X,Y).
La elaci´on “se amigos” es sim´e ica:
amigos(X,Y) :- amigos(Y,X).
Adem´as, si X no es amigo de Y, Y ampoco es amigo de X:
-amigos(X,Y) :- -amigos(Y,X).
La in o maci´on que disponemos ace ca de que Ma a y Manuel no son
amigos es una excepci´on ue e, y se ep esen a a a ´es de la egla:
-amigos(ma a,manuel).
De es a mane a, el p og ama ya no es inconsis en e y se ob iene la si-
guien e salida:
% -amigos(ma a,manuel) -amigos(manuel,ma a) amigos( ocio,ma a)
% amigos(ma a, ocio)
Ob eniendo as´ı in o maci´on ace ca de qui´enes de los suje os son amigos:
Ma a y Roc´ıo son amigas.
Modelizaci´on de nue a in o maci´on.
Se dispone aho a de la siguien e in o maci´on:
1. Se sabe si algunas de las pe sonas del ba io se conocen en e ellas.
2. Se sabe que dos pe sonas que no se conocen no pueden se amigas.
Pa a modeliza es a in o maci´on, se usa el p edicado conocidos/2, que
ep esen a que X conoce a Y e Y conoce a X.
63

La elaci´on “se conocidos” es sim´e ica: si se e i ica que X e Y son cono-
cidos, an o X conoce a Y como Y conoce a X, luego ambi´en se e i ica que
Y y X son conocidos. Rep esen amos el ca ´ac e sim´e ico de la in o maci´on
a a ´es de:
conocidos(X,Y) :- conocidos(Y,X).
Po mo i os simila es, si no se e i ica que X e Y sean conocidos, ampoco
puede e i ica se que Y y X sean conocidos, lo que ep esen amos con la egla:
-conocidos(X,Y) :- -conocidos(Y,X).
Rep esen emos aho a la excepci´on ue e: si X e Y no se conocen, en onces
no pueden se amigos.
-amigos(X,Y) :- -conocidos(X,Y).
De es e modo, si no se iene cons ancia de que X e Y se conozcan, en on-
ces no debe aplica se el de ec o 1 ya que X e Y pueden se una excepci´on.
Rep esen amos es a excepci´on d´ebil a a ´es de la egla:
ab(d amigos(X,Y)) :- no conocidos(X,Y), pe sona(X), pe sona(Y).
Veamos en onces qu´e nue o conocimien o ob enemos seg´un la in o maci´on
sob e el p edicado conocidos/2 de la que se disponga:
Ejemplo 1.
Se posee la siguien e in o maci´on ace ca de conocidos/2:
Ma a y Manuel se conocen.
Ma a y Manuel no son amigos.
Rep esen amos es a in o maci´on con las eglas:
conocidos(manuel, ma a).
-amigos(ma a, manuel).
Ob enemos la salida ( ij´andonos en el p edicado amigos/2 y-amigos/2):
% -amigos(ma a,manuel) -amigos(manuel,ma a)
Como no enemos cons ancia de que Ma a y Roc´ıo se conozcan, no ob-
enemos in o maci´on sob e si son o no amigas.
64
Ejemplo 2.
Se posee la siguien e in o maci´on:
Ma a y Manuel se conocen.
Ma a y Manuel no son amigos.
Ma a y Roc´ıo se conocen.
A˜nadimos a las dos eglas an e io es la egla:
conocidos(ma a, ocio).
Ob enemos as´ı:
% -amigos(ma a,manuel) -amigos(manuel,ma a) amigos( ocio,ma a)
% amigos(ma a, ocio)
Luego disponemos de nue a in o maci´on: Ma a y Roc´ıo son amigas.
Ejemplo 3.
Se posee la siguien e in o maci´on:
Ma a y Manuel se conocen.
Ma a y Manuel no son amigos.
Ma a y Roc´ıo no se conocen.
CLINGO nos p opo ciona el conjun o de espues a:
% -amigos(ma a,manuel) -amigos(ma a, ocio) -amigos( ocio,ma a)
% -amigos(manuel,ma a)
Y conseguimos de es e modo nue a in o maci´on: Ma a y Roc´ıo no son
amigas.
Modelizaci´on de una excepci´on ue e usando el axioma de cance-
laci´on.
Aunque an es se haya modelizado una excepci´on ue e sin el axioma de
cancelaci´on (pues no e a necesa io), en o as ocasiones debemos
65
implemen a lo ambi´en en el p og ama. Veamos un ejemplo.
Supongamos que poseemos la siguien e in o maci´on:
1. Ma a, Manuel y Roc´ıo i en en el ba io B.
2. Manuel y Roc´ıo i en jun os.
3. De ec o 1: no malmen e, los ecinos el ba io B son amigos.
4. Las pe sonas de la casa c1 y las pe sonas de la casa c2 no son amigas.
5. Manuel i e en la casa c1.
6. Una pe sona no puede i i en m´as de una casa.
7. Se conoce in o maci´on sob e qui´enes de los suje os, apa e de Manuel,
i en en c1 o c2.
Rep esen amos las dos casas usando el p edicado casa/1:
casa(c1).
casa(c2).
Rep esen amos que Manuel i e en la casa c1 con el p edicado i i En/2:
i i En(manuel,c1).
Una p opiedad ace ca de la elaci´on “ i i en” es que si una pe sona X
i e en una casa C y es con i ien e con o a pe sona Y, en onces Y i e en
C:
i i En(Y,C) :- i i En(X,C), con i ien es(X,Y).
Usando la siguien e egla, modelizamos que una pe sona no puede i i
en m´as de una casa:
- i i En(X,C) :- i i En(X,C1), C!=C1, casa(C).
Rep esen emos aho a la excepci´on ue e: si una pe sona i e en c1 y o a
pe sona i e en c2, en onces no son amigas. Se usa pa a ello la egla siguien e:
-amigos(X,Y) :- i i En(X,c1), i i En(Y,c2).
Necesi amos acompa˜na la egla con el axioma de cancelaci´on pa a e-
p esen a que si no enemos cons ancia de que ni X ni Y i en en c1 o c2,
66
en onces puede que X e Y no sean amigos. Po an o, usamos las siguien es
dos eglas:
ab(d amigos(X,Y)) :- no - i i En(X,c1), no - i i En(Y,c2),
pe sona(X), pe sona(Y).
ab(d amigos(X,Y)) :- no - i i En(Y,c1), no - i i En(X,c2),
pe sona(X), pe sona(Y).
Veamos como an es qu´e conocimien o nue o podemos ob ene seg´un la
in o maci´on que poseamos del p edicado i i En/2.
Ejemplo 1.
Se dispone de la siguien e in o maci´on:
Ma a, Manuel y Roc´ıo se conocen en e ellos.
Ma a no i e en c2.
Rep esen amos que Ma a, Manuel y Roc´ıo se conocen en e ellos:
conocidos(ma a,manuel;ma a, ocio;manuel, ocio).
Rep esen amos aho a que Ma a no i e en c2:
- i i En(ma a,c2).
En es e caso, ob enemos la salida:
% amigos(manuel,ma a) amigos( ocio,ma a) amigos(ma a,manuel)
% amigos(ma a, ocio)
Luego hemos ob enido la siguien e in o maci´on:
1. Ma a y Roc´ıo son amigas.
2. Ma a y Manuel son amigos.
Ejemplo 2.
Se dispone de la siguien e in o maci´on:
67
Ma a, Manuel y Roc´ıo se conocen en e ellos.
Ma a i e en c2.
Rep esen amos el conocimien o a a ´es de las eglas:
conocidos(ma a,manuel;ma a, ocio;manuel, ocio).
i i En(ma a,c2).
Ob enemos la salida:
% -amigos(manuel,ma a) -amigos( ocio,ma a) -amigos(ma a,manuel)
% -amigos(ma a, ocio)
Luego ob enemos la siguien e in o maci´on:
1. Ma a y Manuel no son amigos.
2. Roc´ıo y Ma a no son amigas.
Ejemplo 3.
No disponemos in o maci´on ace ca de d´onde i e Ma a.
En es e caso, no ob enemos en el conjun o de espues a nada ace ca de si
Ma a es amiga o no de Manuel y Roc´ıo. Es o es po que se aplica el axioma
de cancelaci´on an e io , que a˜nadimos a la excepci´on ue e.
Si no lo hubi´esemos conside ado, el de ec o se aplica ´ıa y el agen e consi-
de a ´ıa que son amigos en e ellos.
Caso especial: de ec os con in o maci´on comple a.
Sea el de ec o d: “no malmen e, los elemen os de c e i ican la p opiedad
p” y supongamos que se iene un conjun o ede excepciones. Si la in o maci´on
que se iene sob e ees comple a, en onces el axioma de cancelaci´on en las
excepciones d´ebiles se educe a:
ab(d(X)) :- e(X).
y en las excepciones ue es, dicho axioma puede se omi ido.
68

En el ejemplo desc i o an e io men e, si hubi´esemos enido una lis a con
las pe sonas que i en en la casa c1y con las pe sonas que i en en la casa
c2, la excepci´on ue e se hubiese ep esen ado ´unicamen e po la egla:
-amigos(X,Y) :- i i En(X,c1), i i En(Y,c2).
pues una pe sona de la que no se conoce d´onde i e deja de se una posible
excepci´on ya que, al se la in o maci´on sob e las pe sonas que i en en c1o
c2comple a, si i iese en una de es as casas, el agen e lo sab ´ıa.
4.2. Modelizaci´on de la in o maci´on con a-
lo es nulos
Los de ec os pueden usa se ambi´en pa a modeliza in o maci´on en la que
apa ecen alo es nulos, es o es, cons an es que indican que el alo de una
a iable o unci´on es desconocido.
Supongamos que enemos una emp esa con a ios depa amen os, y dis-
ponemos de la siguien e in o maci´on:
1. Nu ia es la enca gada del depa amen o D1.
2. Luis es el enca gado del depa amen o D2.
3. En los depa amen os D3yD4se a a con a a a una pe sona como
enca gado en e las que lo solici en.
4. De ec o 1: no malmen e, si una pe sona no es ´a en la lis a de enca gados
jun o a un depa amen o, no se enca ga de ese depa amen o.
5. Los solici an es de los pues os acan es son Nu ia y Ma cos.
La lis a de los enca gados con sus espec i os depa amen os es la siguien e:
Pe sona Depa amen o
Nu ia D1
Luis D2
Vacan e D3
Vacan e D4
69
En es e ejemplo, “Vacan e” es un alo nulo que nos indica que las pe -
sonas enca gadas de los depa amen os D3yD4es ´an po de e mina .
Veamos c´omo modeliza es a in o maci´on.
En p ime luga , ep esen amos los elemen os que in e ienen en el ejem-
plo con los p edicados pe sona/1 ydepa amen o/1:
pe sona(nu ia;luis;ma cos).
depa amen o(d1;d2;d3;d4).
Rep esen amos la in o maci´on de la lis a de enca gados con el p edicado
enca gado/2:
enca gado(nu ia,d1;luis,d2; acan e,d3; acan e,d4).
y modelizamos ambi´en con el p edicado solici an e/1 los suje os que
han solici ado los pues os acan es:
solici an e(nu ia;ma cos).
Rep esen amos el de ec o 1 a a ´es de la egla:
-enca gado(X,D) :- pe sona(X), depa amen o(D),
no ab(d enca gado(X,D)), no enca gado(X,D).
que se lee como “si no enemos cons ancia de que X pueda se una excepci´on
del de ec o y ampoco enemos cons ancia de que X sea la pe sona enca ga-
da del depa amen o D, es deci , no enemos cons ancia de que X sea una
excepci´on, en onces X no es la pe sona enca gada del depa amen o D”.
Sin emba go, los enca gados de los depa amen os D3yD4es ´an po de-
e mina : se con a a ´a a alg´un solici an e aunque sus nomb es no apa ezcan
en la lis a jun o a es os depa amen os. Es a in o maci´on po an o es una
excepci´on d´ebil del de ec o 1 y se modeliza con la egla:
ab(d enca gado(X,D)) :- solici an e(X), enca gado( acan e,D).
Es a egla ep esen a el siguien e conocimien o: “si X es un solici an e,
en onces puede se un enca gado de los depa amen os D con pues os acan es
aunque su nomb e no apa ezca en la lis a jun o a ellos”.
De es a mane a, ob enemos la siguien e salida:
70
% enca gado(nu ia,d1) enca gado(luis,d2) enca gado( acan e,d3)
% enca gado( acan e,d4) -enca gado(nu ia,d2) -enca gado(luis,d1)
% -enca gado(luis,d3) -enca gado(luis,d4) -enca gado(ma cos,d1)
% -enca gado(ma cos,d2)
As´ı, se dispone de la siguien e in o maci´on nue a:
Nu ia no se enca ga del depa amen o D2.
Luis no se enca ga de los depa amen os D1,D3yD4.
Ma cos no se enca ga de los depa amen os D1yD2.
No ob enemos in o maci´on sob e si Nu ia y Ma cos son o no enca gados de
los depa amen os D3yD4ya que son los solici an es, igu an como posibles
excepciones.
Tambi´en pod ´ıamos habe ep esen ado la in o maci´on del siguien e modo:
Pe sona Depa amen o
Nu ia D1
Luis D2
Vacan e D3
Vacan e D4
{Nu ia, Ma cos}D3
{Nu ia, Ma cos}D4
donde aho a el alo nulo “Vacan e” nos indica que los enca gados de los de-
pa amen os D3yD4es ´an po con a a y el alo nulo “{Nu ia, Ma cos}”
nos indica qui´enes son los posibles enca gados de los susodichos depa amen-
os. Pa a ep esen a es a in o maci´on, sus i uimos las dos ´ul imas eglas del
p og ama:
solici an e(nu ia;ma cos).
ab(d enca gado(X,D)) :- solici an e(X), enca gado( acan e,D).
po las eglas:
enca gado(nu ia,d3) | enca gado(ma cos,d3).
enca gado(nu ia,d4) | enca gado(ma cos,d4).
71
que ep esen an, a a ´es de la disyunci´on epis ´emica, que Nu ia y Ma cos
pod ´ıan se los enca gados de los depa amen os D3yD4.
Se ob ienen cua o posibles soluciones:
%Answe : 1
% enca gado(nu ia,d1) enca gado(luis,d2) enca gado( acan e,d3)
% enca gado( acan e,d4) -enca gado(nu ia,d2) -enca gado(luis,d1)
% -enca gado(luis,d3) -enca gado(luis,d4) -enca gado(ma cos,d1)
% -enca gado(ma cos,d2) enca gado(nu ia,d3) enca gado(ma cos,d4)
%Answe : 2
% enca gado(nu ia,d1) enca gado(luis,d2) enca gado( acan e,d3)
% enca gado( acan e,d4) -enca gado(nu ia,d2) -enca gado(luis,d1)
% -enca gado(luis,d3) -enca gado(luis,d4) -enca gado(ma cos,d1)
% -enca gado(ma cos,d2) enca gado(nu ia,d3) enca gado(nu ia,d4)
%Answe : 3
% enca gado(nu ia,d1) enca gado(luis,d2) enca gado( acan e,d3)
% enca gado( acan e,d4) -enca gado(nu ia,d2) -enca gado(luis,d1)
% -enca gado(luis,d3) -enca gado(luis,d4) -enca gado(ma cos,d1)
% -enca gado(ma cos,d2) enca gado(ma cos,d3) enca gado(ma cos,d4)
%Answe : 4
% enca gado(nu ia,d1) enca gado(luis,d2) enca gado( acan e,d3)
% enca gado( acan e,d4) -enca gado(nu ia,d2) -enca gado(luis,d1)
% -enca gado(luis,d3) -enca gado(luis,d4) -enca gado(ma cos,d1)
% -enca gado(ma cos,d2) enca gado(ma cos,d3) enca gado(nu ia,d4)
Todos los conjun os de espues a nos p opo cionan la siguien e in o ma-
ci´on:
1. Ni Luis ni Ma cos son los enca gados del depa amen o D1.
2. Ni Nu ia ni Ma cos son los enca gados del depa amen o D2.
3. Luis no se enca ga de los depa amen os D3yD4.
En la p ime a soluci´on, ob enemos:
Nu ia es la enca gada del depa amen o D3.
Ma cos es el enca gado del depa amen o D4.
72
-pe enece(X,C2) :- pe enece(X,C1), he manas(C1,C2).
Modelizaci´on de de ec os y excepciones.
Rep esen amos los colo es a a ´es del p edicado colo /1:
colo (na anja;blanco;neg o;azul).
An es de empeza con la ep esen aci´on de los de ec os, modelizamos la
siguien e in o maci´on conocida: un elemen o s´olo puede se de un colo .
-deColo (X,C) :- deColo (X,C1), C1 !=C, colo (C), colo (C1).
Rep esen amos el de ec o 1, “en gene al, las ca a anas son blancas”, como
sigue:
deColo (X,blanco) :- pe enece(X,ca a ana), no ab(d1(X)),
no -deColo (X,blanco).
Rep esen amos el de ec o 2, “los eh´ıculos no ma ´ı imos son habi ual-
men e de colo neg o”, a a ´es de la egla:
deColo (X,neg o) :- pe enece(X,no ma ), no ab(d2(X)),
no -deColo (X,neg o).
Pa a modeliza el de ec o 3: los au obuses no malmen e son na anjas, se
u iliza:
deColo (X, na anja) :- pe enece(X,au obus), no ab(d3(X)),
no -deColo (X,na anja).
Rep esen amos el de ec o 4, “no malmen e, los au obuses u ´ıs icos son
de colo azul”, con la egla:
deColo (X,azul) :- pe enece(X, u is ico), no ab(d4(X)),
no -deColo (X,azul).
Y po ´ul imo, se modeliza el de ec o 5, “en gene al, los eh´ıculos ma ´ı imos
son blancos”, con la egla:
79

deColo (X,blanco) :- pe enece(X,ma ), no ab(d5(X)),
no -deColo (X,blanco).
La in o maci´on ace ca de si X es una ca a ana no es comple a: si no
enemos cons ancia de que X, que es un eh´ıculo no ma ´ı imo, no es una
ca a ana, puede se una excepci´on del de ec o 2 (puede que no sea de colo
neg o). Es o se ep esen a a a ´es de una excepci´on d´ebil:
ab(d2(X)) :- no -pe enece(X,ca a ana), elemen o(X).
De la misma mane a, la in o maci´on sob e si X es un au ob´us o un au ob´us
u ´ıs ico no es comple a. Po es e mo i o, si no enemos cons ancia de que
X no sea alguno de es os eh´ıculos, puede que X sea una excepci´on de los
de ec os 2 y 3 espec i amen e. Rep esen amos de nue o la in o maci´on como
excepciones d´ebiles:
ab(d2(X)) :- no -pe enece(X,au obus), elemen o(X).
ab(d3(X)) :- no -pe enece(X, u is ico), elemen o(X).
Veamos en onces qu´e in o maci´on nos p opo ciona CLINGO sob e los
colo es de la ca a ana Des as e y el eh´ıculo ma ´ı imo Ul ama . Ob enemos
la salida:
% deColo (des as e,blanco) deColo (ul ama ,blanco)
De es e modo, hemos conseguido los siguien es da os ace ca de Ul ama
y Des as e:
Des as e es de colo blanco.
Ul ama es de colo blanco.
Es e conocimien o es consis e pues Des as e e a una ca a ana, luego se
ha aplicado el de ec o 1, y Ul ama e a un eh´ıculo ma ´ı imo, lo que quie e
deci que se ha aplicado el de ec o 5.
Adici´on de un nue o elemen o a la in o maci´on conocida.
Veamos qu´e in o maci´on ob enemos ace ca del colo de un nue o ele-
men o, Le i, que es un eh´ıculo no ma ´ı imo, seg´un la in o maci´on que se
disponga sob e es e.
80
Ejemplo 1.
S´olo conocemos que Le i es un eh´ıculo no ma ´ı imo. Rep esen amos es a
in o maci´on con las eglas:
elemen o(le i).
es un(le i,no ma ).
En la salida, no ob enemos in o maci´on sob e el colo de Le i, pues pue-
de se una excepci´on del de ec o 2 (no hemos especi icado que no es una
ca a ana, au ob´us o au ob´us u ´ıs ico).
Ejemplo 2.
Si especi icamos aho a que Le i es un au ob´us:
es un(le i,au obus).
Seguimos sin ob ene in o maci´on de su colo , ya que no hemos especi i-
cado que no sea un au ob´us u ´ıs ico.
Ejemplo 3.
Si aho a especi icamos que es un au ob´us u ´ıs ico:
es un(le i, u is ico).
Ob enemos:
% deColo (le i,azul)
Luego se ob iene que Le i es azul. Es o es g acias al de ec o 4, que iene
p io idad espec o a los de ec os 2 y 3.
Es deci , aunque an e io men e imos que la p io idad en e de ec os se
pod´ıa ep esen a median e excepciones ue es, en es e caso, se ha ep esen-
ado a a ´es de excepciones d´ebiles (a a ´es de es as, hemos ep esen ado
que el de ec o 4 iene p e e encia sob e el de ec o 3 y que el de ec o 3 iene
p e e encia sob e el de ec o 2).
De es a mane a, se obse a que la in o maci´on m´as espec´ı ica iene p e-
e encia sob e la in o maci´on menos espec´ı ica. En gene al, si enemos C1
subclase de C2, y los de ec os: “no malmen e, los elemen os de C2 ienen la
p opiedad P” y “no malmen e, los elemen os de C1 no ienen la p opiedad
P”, en onces el segundo de ec o p edomina sob e el p ime o. Es o es lo que
81
se conoce como p incipio de especi icidad.
82
Cap´ı ulo 5
El pa adigma de p og amaci´on
ASP
En las secciones an e io es, nos hemos cen ado en la modelizaci´on de
bases de conocimien o en ASP con la inalidad de ob ene elemen os que
e i icasen cie os p edicados o pa a e la e acidad o alsedad de cie as
a i maciones. En es a secci´on, se p e ende mos a c´omo se pueden usa las
bases de conocimien o en ASP pa a encon a soluciones a dis in os p oble-
mas educi´endolos a encon a conjun os de espues as de p og amas de ASP.
El p ocedimien o de esoluci´on de p oblemas a a ´es de educi los a encon-
a conjun os de espues a de p og amas en ASP es lo que se denomina el
pa adigma de p og amaci´on ASP.
En nues o caso, amos a cons ui bases de conocimien o cuyos conjun os
de espues a den soluci´on a los dos p oblemas siguien es: halla los ciclos
hamil onianos de un g a o y encon a la soluci´on de sudokus.
5.1. Ciclos hamil onianos de un g a o
Nues o obje i o es cons ui un p og ama de ASP cuyos conjun os de
espues as sean los ciclos hamil onianos de un g a o di igido G.
Un ciclo hamil oniano de un g a o G es un camino que pasa po odos
los ´e ices o nodos del g a o una sola ez y empieza y e mina en el mismo
´e ice o nodo.
83
Pa a ep esen a el g a o, se usan los p edicados:
inicial/1, donde inicial( 0) nos indica que el nodo 0es el nodo del
que se pa e (y po an o, debe se ambi´en el ´ul imo nodo en isi a se).
nodo/1, pa a ep esen a los nodos del g a o.
a co/2, donde a co( 0, 1) ep esen a el a co del g a o G que pa e del
nodo 0y accede al nodo 1.
Los ciclos hamil onianos (que se ´an los conjun os de espues a del p o-
g ama) se ep esen an po conjun os en( 0, 1), en( 1, 2), . . . , en( k, 0),
donde el p edicado en( i, j) ep esen a que el a co que pa e de iy accede
a jpe enece al ciclo hamil oniano < 0, 1, 2, ... k, 0>.
Pa a que un conjun o en( 0, 1), en( 1, 2), . . . , en( k, 0) o me un ciclo
hamil oniano de G, se debe cumpli :
1. Se accede y se sale de un ´e ice como m´aximo una ez.
2. Debe con ene a odos los nodos del g a o.
Se ep esen a que se accede como m´aximo una ez a cada ´e ice V del
g a o de la siguien e mane a: si el a co que pa e desde uno de los nodos V1
del g a o y accede a V ya es ´a en el ciclo hamil oniano, es deci , se e i ica
en(V1,V), en onces no puede exis i o o ´e ice V2 dis in o de V1 al que
el a co que pa e de V2 y accede a V es ´e en el ciclo hamil oniano. La egla
que modeliza es a in o maci´on es:
-en(V2,V) :- en(V1,V), V1 != V2, nodo(V1), nodo(V2), nodo(V).
De mane a an´aloga, ep esen amos que s´olo se sale de un ´e ice V una
´unica ez: si el a co que pa e de V y llega a V1 es ´a en el ciclo hamil oniano,
en onces cualquie o o a co que pa a de V y llegue a un ´e ice V2 dis in o a
V1 no puede es a en el ciclo hamil oniano. Es a in o maci´on queda ecogida
po la egla:
-en(V,V2) :- en(V,V1), V1 != V2, nodo(V1), nodo(V2), nodo(V).
Rep esen emos la o a condici´on que debe e i ica un ciclo hamil oniano:
debe con ene a odos los nodos del g a o.
84

Pa a ep esen a es e conocimien o, p ime o debemos de ini la elaci´on
alcanzable: el nodo V es alcanzable en el ciclo que se es ´e conside ando si
exis e un a co que pa e del ´e ice inicial y accede a V o si en el ciclo exis e
un a co que pa e de un ´e ice V1 alcanzable y accede a V. Es e conocimien o
se ep esen a a a ´es del p edicado alcanzable/1, que es ecu si o:
alcanzable(V) :- en(V1,V), inicial(V1), nodo(V).
alcanzable(V) :- en(V1,V), alcanzable(V1), nodo(V).
Pa a comple a la in o maci´on sob e los ´e ices que son y no son alcan-
zables, usamos la hip´o esis del mundo ce ado: si no enemos cons ancia de
que un ´e ice sea alcanzable, en onces supond emos que no es alcanzable.
-alcanzable(V) :- no alcanzable(V), nodo(V).
De es a mane a, se ep esen a que el ciclo debe pasa po odos los nodos
con la es icci´on siguien e, que impide la p esencia de nodos no alcanzables
en el conjun o de espues a:
:- -alcanzable(V), nodo(V).
Con es as condiciones, CLINGO es capaz de de e mina cu´ando un ciclo
es hamil oniano y cu´ando no.
Aho a, necesi amos ep esen a los posibles candida os a ciclos hamil o-
nianos, es deci , los posibles caminos que podemos o ma en G. Pa a ello,
siemp e que exis a un a co en G que pa a de V1 y acceda a V2, se consi-
de a ´a la opci´on de inclui lo o no en el ciclo. Modelizamos es a in o maci´on
usando la disyunci´on:
en(V1,V2) | -en(V1,V2) :- a co(V1,V2).
Veamos algunos ejemplos de g a os y sus ciclos hamil onianos.
Ejemplo 1.
Conside emos el g a o di igido G de la igu a 5.1.
Que emos encon a los ciclos hamil onianos que pa en del nodo a.
Pa a desc ibi a es e g a o, usamos los p edicados nodo/1 ya co/2:
nodo(a;b;c;d;e).
a co(a,b;b,a;b,c;c,d;d,e;e,b;e,a;a,c).
85
y con el p edicado inicial/1, indicamos el nodo del que que emos que pa a:
inicial(a).
CLINGO nos de uel e pa a es e g a o dos conjun os de espues a, que
son los ´unicos ciclos hamil onianos que posee el g a o:
%Answe : 1
% en(a,b) en(b,c) en(c,d) en(d,e) en(e,a)
%Answe : 2
% en(b,a) en(c,d) en(d,e) en(e,b) en(a,c)
Figu a 5.1: g a o G
Vemos que ambos conjun os sa is acen los equisi os pa a se ciclos ha-
mil onianos: acceden y pa en de odos los nodos una ´unica ez y empiezan
y e minan en el ´e ice a.
Ejemplo 2.
Conside emos los dos g a os de la igu a 5.2.
De nue o, que emos halla los ciclos hamil onianos de ambos g a os que
pa en del nodo a.
Es os dos g a os son el mismo sal o po un a co: el g a o J1posee un a co
que pa e del nodo c y accede al nodo i y el g a o J2no posee es e a co. Es o
hace que en J2no se pueda accede a los nodos h, i, , g, d y e, luego en es e
caso no debemos ob ene ning´un ciclo hamil oniano.
86
(a) G a o J1(b) G a o J2
Figu a 5.2: g a os J1yJ2
Modelizamos el g a o J1a a ´es de las eglas:
nodo(a;b;c;d;e; ;g;h;i).
a co(a,b;b,a;b,c;c,i;d,a;d,e;e,d;e,a; ,e; ,g;g,h;
g, ;g,d;h, ;h,g;i,g;i,h).
inicial(a).
Pa a es e g a o, ob enemos como soluci´on es ciclos hamil onianos:
%Answe : 1
% en(a,b) en(b,c) en(c,i) en(d,a) en(e,d) en( ,e) en(g, ) en(h,g) en(i,h)
%Answe : 2
% en(a,b) en(b,c) en(c,i) en(d,a) en(e,d) en( ,e) en(g,h) en(h, ) en(i,g)
%Answe : 3
% en(a,b) en(b,c) en(c,i) en(d,e) en(e,a) en( ,g) en(g,d) en(h, ) en(i,h)
Modelizamos aho a el g a o J2:
nodo(a;b;c;d;e; ;g;h;i).
a co(a,b;b,a;b,c;d,a;d,e;e,d;e,a; ,e; ,g;g,h;g, ;g,d;h, ;
h,g;i,g;i,h).
87
inicial(a).
CLINGO nos de uel e:
%UNSATISFIABLE
En e ec o, como dijimos, es e g a o no posee ciclos hamil onianos pues
es os eco en odos los nodos del g a o y J2con iene algunos nodos a los
que no se puede accede .
Pa a gene a los candida os a ciclos hamil onianos, ambi´en podemos
modi ica el p og ama an e io como sigue: se sus i uye la ´ul ima egla que
acabamos de expone , que se u iliza como hemos is o pa a gene a los po-
sibles caminos candida os a se ciclos hamil onianos, po una egla que se
denomina egla de elecci´on.
Las eglas de elecci´on ienen dos o mas:
s1<1{p(X) : q(X)}<2s2:- cue po.
s1<1{p(c1); . . . ;p(c )}<2s2:- cue po.
donde s1ys2son en e os no nega i os los cuales pueden omi i se y <1y
<2son p edicados de compa aci´on.
La p ime a egla a˜nade a los conjun os de espues a del p og ama cie os
conjun os S o mados po ´a omos p( ) de mane a que s1≤ |S| ≤ s2y ales
que si un ´a omo p( )∈S, en onces el co espondien e q( ) debe pe enece al
conjun o de espues a. Es o es, la p ime a egla es ´a gene ando un p edicado p
en unci´on de un p edicado qp e iamen e de inido. La segunda egla pe mi e
la adici´on a los conjun os de epues a de conjun os S o mados po ´a omos
p(ci) en e los que se encuen an en la cabeza de la egla de mane a que
s1≤ |S| ≤ s2.
En nues o caso, eemplazamos la ´ul ima egla del p og ama pa a halla
los ciclos hamil onianos de un g a o po la egla:
{en(V1,V2) : a co(V1,V2)}.
con la que se es ´a de iniendo el p edicado en/2 en unci´on del p edicado
a co/2 de o ma que pa a cada a co de G, se plan ea inclui lo o no en el
ciclo que se es ´e conside ando.
88
si es NP y NP-ha d al mismo iempo. Se puede p oba que el Nu ikabe
es un p oblema NP-ha d, y decidi si exis e soluci´on del Nu ikabe es un
p oblema NP-comple o. Pa a m´as in o maci´on, puede isi a se el siguien e
enlace: enlace.
Las eglas del Nu ikabe son:
1. Todas las celdas nume adas deben pe manece blancas.
2. Toda celda blanca debe pe enece a una isla.
3. Cada isla debe con ene una ´unica celda nume ada.
4. Cada isla debe es a o mada po el n´ume o de celdas blancas que
indique la casilla nume ada que con iene.
5. Las celdas blancas de cada isla deben es a o ogonalmen e conec adas.
6. Dos islas no pueden es a conec adas.
7. Todas las celdas neg as deben es a conec adas o ogonalmen e.
8. Ning´un subconjun o de celdas neg as puede o ma un cuad ado 2x2.
Se puede isi a ambi´en el siguien e enlace pa a encon a m´as in o ma-
ci´on sob e las eglas del Nu ikabe: enlace. Adem´as, es e nos pe mi e juga en
l´ınea, lo que puede esul a de u ilidad pa a gene a m´as ejemplos de puzzles
Nu ikabe apa e de los que amos a expone .
Comencemos pues con la modelizaci´on de los puzzles Nu ikabe.
Supongamos que nos dan una cuad ´ıcula ec angula de dimensi´on nxm
(n ilas y m columnas). Se ep esen a la cuad ´ıcula desc ibiendo las celdas que
es ´an nume adas con el p edicado nume ada/3, donde nume ada(X,Y,A)
se e i ica si la celda que ocupa la posici´on (X,Y) en la cuad ´ıcula, con X la
ila e Y la columna, con iene el n´ume o A (po an o, es a celda a a pe ene
a una isla de ama˜no A).
Pa a ep esen a las ilas y las columnas de la cuad ´ıcula, se usa el p edi-
cado ila/1 ycol/1:
ila(1..n).
col(1..m).
95

Se ep esen an los dos colo es de celdas que podemos ene con el p e-
dicado colo /1, donde b ep esen a el colo blanco y n ep esen a el colo
neg o:
colo (n).
colo (b).
Vamos a gene a odas las posibles cuad ´ıculas que se pueden conside a
seleccionando subconjun os de celdas que pe manece ´an blancas y pin ando
de neg o las celdas es an es.
Pa a gene a las cuad ´ıculas, se usa el p edicado celda/3, de o ma que
celda(C,X,Y) ep esen a que la celda que es ´a en la posici´on (X,Y) es de
colo C. A a ´es de una egla de elecci´on, se gene an los conjun os de celdas
que pe manece ´an blancas:
{celda(b,X,Y)}1 :- ila(X), col(Y).
Pa a pin a las es an es celdas de neg o, usamos la siguien e egla:
celda(n,X,Y) :- no celda(b,X,Y), ila(X), col(Y).
Aho a, amos a implemen a las eglas pa a elimina las cuad ´ıculas que
no las e i iquen.
REGLA 1.
Debemos modeliza la egla 1: “ odas las celdas nume adas deben pe ma-
nece blancas”. Rep esen amos la egla con una es icci´on, de mane a que
pa a e i ica se no puede ocu i que una celda (X,Y) sea neg a y a su ez
es ´e nume ada:
:- nume ada(X,Y,A), celda(n,X,Y).
REGLAS 2 Y 5.
Pa a la implemen aci´on de 2 y 5, usamos la egla 3: po las eglas 2, 3 y 5,
sabemos que cada celda blanca debe pe enece a una isla, que cada isla debe
con ene una ´unica celda nume ada y que las celdas blancas de cada isla se
conec an o ogonalmen e. Po an o, oda celda blanca debe es a conec ada
o ogonalmen e a una celda nume ada.
Pa a ep esen a es e conocimien o, amos a de ini an es algunos con-
cep os.
96
P ime o, amos a de ini la elaci´on “se adyacen es”: las celdas adyacen-
es a una celda (X,Y) son las celdas (X+1,Y), (X-1,Y), (X,Y+1), (X,Y-1).
Rep esen amos que la celda (X,Y) y la celda (U,V) son adyacen es usando
el p edicado ady/4:
ady(X,Y,U,V) :- ila(X), ila(U), col(Y), col(V),
|X-U|+|Y-V| == 1.
No a: ambi´en se puede denomina o ogonal, pues ep esen a que dos
celdas es ´an conec adas o ogonalmen e.
P oseguimos modelizando cu´ando dos celdas se an a conec a o ogonal-
men e a a ´es de un colo .
Pa a ello, in oducimos el p edicado conec adas/4, que se e i ica si:
1. conec adas(C,X,Y,X,Y) se e i ica si (X,Y) es una celda de colo C. Es
deci , amos a conside a que una celda (X,Y) de colo C es ´a conec ada
consigo misma a a ´es del colo C.
2. conec adas(C,X,Y,U,V) se e i ica si la celda (U,V) es de colo C y si
exis e una celda in e media que es adyacen e a (U,V) y es ´a conec ada
o ogonalmen e a a ´es del colo C a (X,Y).
El p edicado es ´a de inido po ecu si´on, as´ı que lo ep esen amos con las
eglas:
conec adas(C,X,Y,X,Y) :- celda(C,X,Y).
conec adas(C,X,Y,U,V) :- celda(C,U,V), conec adas(C,X,Y,X1,Y1),
ady(X1,Y1,U,V).
Finalmen e, pa a ep esen a que oda celda blanca debe es a
conec ada o ogonalmen e a una celda nume ada, se de ine el p edicado
conec adaB/2, donde conec adaB(X,Y) se e i ica si (X,Y) es ´a conec ada
o ogonalmen e a a ´es del colo blanco a una celda nume ada, e imponemos
que oda celda blanca e i ique el p edicado conec adaB/2 a a ´es de una
es icci´on:
97
conec adaB(X,Y) :- conec adas(b,X,Y,U,V), celda(b,X,Y),
nume ada(U,V,A).
:- celda(b,X,Y), no conec adaB(X,Y).
REGLAS 3 Y 6.
Pa a ep esen a las eglas 6 y 3, usamos la egla 2: se iene que cada isla
con iene una ´unica celda nume ada, que oda celda blanca pe enece a una
isla y que dos islas no pueden es a conec adas. Es o implica que dos celdas
nume adas no an pode es a conec adas o ogonalmen e a a ´es del colo
blanco po que sino, dos islas dis in as es a ´ıan conec adas.
:- conec adas(b,X,Y,U,V), nume ada(X,Y,A), nume ada(U,V,M),
(X,Y) != (U,V).
REGLA 4.
Pa a la egla 4: “cada isla debe es a o mada po el n´ume o de celdas
blancas que indique la casilla nume ada que con iene”, amos a de ini qu´e
se conside a po isla.
La isla es a ´a o mada po una casilla nume ada (X,Y), supongamos que
es al que se e i ica nume ada(X,Y,A), y po exac amen e A celdas blancas
que se conec an o ogonalmen e a a ´es del colo blanco a la celda nume-
ada. Es deci , el ca dinal del conjun o de celdas blancas que se conec an
o ogonalmen e a (X,Y) debe se exac amen e A. Como po la egla 3, cada
isla con iene una ´unica celda nume ada, iden i icamos la isla con la celda
nume ada:
isla(X,Y) :- nume ada(X,Y,A), A {conec adas(b,X,Y,U,V)}A,
ila(X), col(Y).
Todas las celdas nume adas deben de ini una isla:
:- nume ada(X,Y,A), no isla(X,Y).
REGLA 7.
Veamos c´omo ep esen a la egla 7: “ odas las celdas neg as deben es a
conec adas o ogonalmen e”. Pa a ello, usamos de nue o una es icci´on: no
pueden exis i dos celdas (X,Y) y (U,V) de colo neg o que no es ´en conec-
98
adas o ogonalmen e a a ´es del colo neg o.
:- celda(n,X,Y), celda(n,U,V), no conec adas(n,X,Y,U,V).
REGLA 8.
Po ´ul imo, ep esen emos la egla 8: “ning´un subconjun o de celdas ne-
g as puede o ma un cuad ado 2x2”. Pa a ello, de inimos p ime o cu´ando
un subconjun o de celdas neg as de ine un cuad ado: si enemos una celda
(X,Y) neg a, es ´a de ine un cuad ado cuando las celdas (X,Y+1), (X+1,Y)
y (X+1,Y+1) ambi´en son neg as.
cuad adoN(X,Y) :- celda(n,X,Y), celda(n,X,Y+1), celda(n,X+1,Y),
celda(n,X+1,Y+1).
Finalmen e, se impide que cualquie celda o me un cuad ado de celdas
neg as usando una es icci´on:
:- cuad adoN(X,Y).
Como al p incipio odas las celdas de la cuad ´ıcula son blancas, la soluci´on
del Nu ikabe se ´a el conjun o de celdas que inalmen e se han pin ado de
neg o. As´ı, de inimos el p edicado celdaNeg a/2, que se e i ica si la celda
es ´a pin ada de neg o:
celdaNeg a(X,Y) :- celda(n,X,Y).
Po an o, la soluci´on a nues o p oblema nos la da ´a el conjun o de li e-
ales de la o ma celdaNeg a(X,Y) que apa ezca en el conjun o de espues a:
#show celdaNeg a/2.
Veamos aho a algunos ejemplos de puzzles Nu ikabe.
Ejemplo 1.
En es e ejemplo, amos a conside a el Nu ikabe de la igu a 6.1.
Vamos a desc ibi es e puzzle con usando el p edicado nume ada/3:
nume ada(2,1,2). nume ada(3,3,2). nume ada(3,5,4). nume ada(5,2,2).
nume ada(5,6,3). nume ada(6,4,2). nume ada(8,4,3). nume ada(9,2,6).
nume ada(10,7,4).
Pa a ca ga el iche o, debemos especi ica le a CLINGO el n´ume o de
99
ilas y columnas de la cuad ´ıcula (lo que denominamos como n y m, espec-
i amen e). Gua dando el c´odigo del Nu ikabe en el a chi o nu ikabe.lp
y el iche o con la desc ipci´on de la cuad ´ıcula en el a chi o con nomb e
nu ikabe1.lp, ca gamos los a chi os como:
clingo nu ikabe.lp nu ikabe1.lp -c n=11 -c m=8
y nos de uel e la soluci´on del puzzle:
%celdaNeg a(1,1) celdaNeg a(4,1) celdaNeg a(5,1) celdaNeg a(6,1)
%celdaNeg a(7,1) celdaNeg a(8,1) celdaNeg a(9,1) celdaNeg a(10,1)
%celdaNeg a(11,1) celdaNeg a(1,2) celdaNeg a(2,2) celdaNeg a(3,2)
%celdaNeg a(4,2) celdaNeg a(7,2) celdaNeg a(11,2) celdaNeg a(1,3)
%celdaNeg a(4,3) celdaNeg a(5,3) celdaNeg a(6,3) celdaNeg a(7,3)
%celdaNeg a(8,3) celdaNeg a(9,3) celdaNeg a(11,3) celdaNeg a(1,4)
%celdaNeg a(2,4) celdaNeg a(3,4) celdaNeg a(4,4) celdaNeg a(7,4)
%celdaNeg a(9,4) celdaNeg a(11,4) celdaNeg a(1,5) celdaNeg a(4,5)
%celdaNeg a(5,5) celdaNeg a(6,5) celdaNeg a(9,5) celdaNeg a(11,5)
%celdaNeg a(1,6) celdaNeg a(3,6) celdaNeg a(4,6) celdaNeg a(6,6)
%celdaNeg a(7,6) celdaNeg a(8,6) celdaNeg a(9,6) celdaNeg a(10,6)
%celdaNeg a(11,6) celdaNeg a(1,7) celdaNeg a(3,7) celdaNeg a(6,7)
%celdaNeg a(11,7) celdaNeg a(1,8) celdaNeg a(2,8) celdaNeg a(3,8)
%celdaNeg a(4,8) celdaNeg a(5,8) celdaNeg a(6,8) celdaNeg a(7,8)
%celdaNeg a(8,8) celdaNeg a(9,8) celdaNeg a(10,8) celdaNeg a(11,8)
(a) Nu ikabe ni el medio (b) Soluci´on
Figu a 6.1: puzzle Nu ikabe y su soluci´on
100

Ejemplo 2.
Es udiemos aho a la soluci´on del Nu ikabe de la igu a 6.2.
Figu a 6.2: puzzle Nu ikabe ni el medio
Desc ibamos el puzzle de nue o con el p edicado nume ada/3:
nume ada(2,2,2). nume ada(2,5,2). nume ada(3,7,2). nume ada(4,3,2).
nume ada(5,4,2). nume ada(6,3,2). nume ada(7,7,6). nume ada(8,1,4).
nume ada(9,5,4). nume ada(10,6,2).
Aho a, gua damos el c´odigo de la desc ipci´on en el iche o nu ikabe2.lp.
Ca gando de nue o los a chi o como:
clingo nu ikabe.lp nu ikabe2.lp -c n=10 -c m=7
nos de uel e la soluci´on del Nu ikabe:
%celdaNeg a(1,1) celdaNeg a(2,1) celdaNeg a(3,1) celdaNeg a(4,1)
%celdaNeg a(5,1) celdaNeg a(6,1) celdaNeg a(1,2) celdaNeg a(3,2)
%celdaNeg a(5,2) celdaNeg a(7,2) celdaNeg a(8,2) celdaNeg a(9,2)
%celdaNeg a(10,2) celdaNeg a(1,3) celdaNeg a(3,3) celdaNeg a(5,3)
%celdaNeg a(7,3) celdaNeg a(10,3) celdaNeg a(1,4) celdaNeg a(2,4)
%celdaNeg a(3,4) celdaNeg a(4,4) celdaNeg a(6,4) celdaNeg a(7,4)
%celdaNeg a(8,4) celdaNeg a(10,4) celdaNeg a(1,5) celdaNeg a(4,5)
%celdaNeg a(6,5) celdaNeg a(8,5) celdaNeg a(10,5) celdaNeg a(1,6)
%celdaNeg a(2,6) celdaNeg a(3,6) celdaNeg a(4,6) celdaNeg a(5,6)
101
%celdaNeg a(6,6) celdaNeg a(8,6) celdaNeg a(9,6) celdaNeg a(1,7)
%celdaNeg a(4,7) celdaNeg a(9,7)
6.2. Puzzle Heyawake
El Heyawake es un puzzle que se juega en una cuad ´ıcula ec angula
di idida en celdas. Adem´as, la cuad ´ıcula se di ide a su ez en habi aciones
ec angula es de di e sos ama˜nos. Al comienzo, las celdas de la cuad ´ıcula
son blancas y algunas habi aciones con ienen una celda nume ada. El obje i o
es decidi qu´e celdas deben pe manece blancas y qu´e celdas se pin an de
neg o de acue do a las eglas que se exponen a con inuaci´on. Al igual que el
Nu ikabe, decidi si exis e una soluci´on del puzzle Heyawake es un p oblema
NP-comple o.
Las eglas del puzzle son las siguien es:
1. Dos celdas neg as no pueden se adyacen es ni e ical ni ho izon al-
men e.
2. Todas las celdas blancas deben es a conec adas o ogonalmen e.
3. En las habi aciones en las que se encuen e una celda nume ada, el
n´ume o de la celda indica c´uan as celdas de la habi aci´on deben pin a se
de neg o.
4. Una habi aci´on sin celda nume ada puede con ene cualquie n´ume o
de celdas neg as.
5. Un camino ec o de celdas blancas no puede a a esa m´as de dos
habi aciones.
De nue o, podemos isi a el siguien e enlace pa a ob ene m´as in o ma-
ci´on sob e las eglas del juego y pode juga en l´ınea: enlace.
Veamos en onces c´omo se puede modeliza el puzzle. P ime o, amos a
desc ibi la cuad ´ıcula dada.
Supongamos que la cuad ´ıcula que conside amos iene dimensiones nxm
(n ilas y m columnas) y es ´a di idida en habi aciones.
102
Pa a desc ibi la cuad ´ıcula, a cada habi aci´on se le asigna una e ique a
y se ep esen a a a ´es del p edicado hab/4: supongamos que enemos una
habi aci´on delimi ada po las celdas (X1,Y1), (X1,Y2), (X2,Y1) y (X2,Y2)
a la que se le asigna una e ique a A, en onces, es o se ep esen a como
hab(A,X1,Y1,X2,Y2). La e ique a A que podemos asigna le a cada habi-
aci´on i ´a de 0 a -1, y se ep esen a po el p edicado e ique a/1.
ila(1..n).
col(1..m).
e ique a(0.. -1).
Algunas de las habi aciones con ienen una celda nume ada y o as no. Pa-
a ep esen a lo, usamos el p edicado con iene/2, de mane a que
con iene(A,N) ep esen a que la habi aci´on cuya e ique a es A con iene una
celda nume ada con el n´ume o N. Pa a ep esen a que la habi aci´on A no
iene celda nume ada, se usa con iene(A,-1).
Es udiemos en onces el p og ama que nos da ´a la soluci´on del Heyawake.
Vamos a gene a las dis in as cuad ´ıculas candida as a se soluci´on a en-
diendo a las eglas 3 y 4, con emplando odas las mane as de pin a celdas de
neg o en cada habi aci´on de la cuad ´ıcula (la celda nume ada ambi´en puede
pin a se de neg o es a ez).
Pa a ello, de inimos p ime o el “ ama˜no de la habi aci´on”: una habi aci´on
con una celda nume ada con el n´ume o N end ´a ama˜no N, y una habi a-
ci´on sin celda nume ada end ´a ama˜no -1. El ama˜no de la habi aci´on nos
indica cu´an as celdas de la habi aci´on pueden pin a se de neg o. Usamos el
p edicado dimHab/4 pa a ep esen a el ama˜no de la habi aci´on:
dimHab(N,X1,Y1,X2,Y2) :- hab(A,X1,Y1,X2,Y2), con iene(A,N).
REGLAS 3 Y 4.
Veamos c´omo ep esen a las eglas 3 y 4. Pa a ello, usamos el
p edicado celdaNeg a/2 donde celdaNeg a(X,Y) indica, como an es, que
la celda (X,Y), donde X es la ila e Y la columna, se ha pin ado de ne-
g o. Usamos ambi´en el p edicado den ohab/3, donde den ohab(X,Y,A)
ep esen a que la celda (X,Y) es ´a den o de la habi aci´on A:
den ohab(X,Y,A) :- hab(A,X1,Y1,X2,Y2), X1<=X, X<=X2, Y1<=Y,
Y<=Y2, ila(X), col(Y).
103
Gene emos odas las posibles mane as de pin a celdas de neg o en una
habi aci´on que con iene una celda nume ada a endiendo a la egla 3. Usamos
una egla de elecci´on:
N{celdaNeg a(X,Y):den ohab(X,Y,A)}N :- hab(A,X1,Y1,X2,Y2),
dimHab(N,X1,Y1,X2,Y2),
N>0.
Aho a, gene amos odas las posibles o mas de pin a celdas de neg o en
una habi aci´on que no iene ninguna celda nume ada de acue do a la egla
4.
{celdaNeg a(X,Y):den ohab(X,Y,A)}:- hab(A,X1,Y1,X2,Y2),
dimHab(-1,X1,Y1,X2,Y2).
Las celdas es an es que no hayamos pin ado de neg o pe manece ´an blan-
cas:
celdaBlanca(X,Y) :- no celdaNeg a(X,Y), ila(X), col(Y).
Implemen emos las eglas que quedan pa a desca a las cuad ´ıculas que
no las e i ican.
REGLA 1.
Tenemos que modeliza la egla 1: “dos celdas neg as no pueden se ad-
yacen es ni e ical ni ho izon almen e”.
Como ya hicimos, usamos el p edicado ady/4 pa a ep esen a que dos
celdas son adyacen es. Dada una celda (X,Y), sus adyacen es son las celdas
(X+1,Y), (X-1,Y),(X,Y+1), (X,Y-1). Po an o, de inimos el p edicado con
la egla:
ady(X1,Y1,X2,Y2) :- ila(X1), ila(X2), col(Y1), col(Y2),
|X1-X2| + |Y1-Y2| == 1.
Rep esen amos que dos celdas neg as no pueden se adyacen es ni e ical
ni ho izon almen e a a ´es de la es icci´on:
104
yblanco/2, donde neg o(X,Y) nos indica que la celda que se encuen a
en la ila X y en la columna Y con iene un c´ı culo neg o y, an´alogamen e,
blanco(X,Y) nos indica que la celda (X,Y) con iene un c´ı culo blanco.
Veamos aho a como gene a la l´ınea soluci´on del puzzle. Pa a ep esen-
a las ilas y las columnas de la cuad ´ıcula, se usa como an e io men e los
p edicados col/1 y ila/1:
col(1..m).
ila(1..n).
Aho a, amos a conside a odos los segmen os posibles que podemos
ene a a esando las celdas del able o. Las di ecciones que pueden lle a
es os segmen os son la ho izon al y la e ical, y lo ep esen amos con el
p edicado di ec/1, donde di ec(h) ep esen a que el segmen o lle a di ecci´on
ho izon al y di ec( ), que lle a di ecci´on e ical.
di ec(h).
di ec( ).
Pa a ep esen a los segmen os, amos a conside a el p edicado seg/3,
donde seg(h,X,Y) se e i ica si se pin a un segmen o ho izon al que a a iesa
las celdas (X,Y) y (X,Y+1), y seg( ,X,Y) se e i ica si se pin a un segmen o
e ical que a a iesa las celdas (X,Y) y (X+1,Y).
Gene amos as´ı los posibles segmen os que pod ´ıamos dibuja en las celdas
de la cuad ´ıcula usando una egla de elecci´on:
{seg(S,X,Y)}:- di ec(S), ila(X), col(Y).
Como seg(S,X,Y) se e i ica si se a a iesa (X,Y) y alguna de las celdas
(X+1,Y) o (X,Y+1), seg´un si el segmen o es e ical u ho izon al espec i-
amen e, en las celdas de la ´ul ima columna no se pod ´an ealiza segmen os
ho izon ales que pa an de ellas, pues no exis i ´an las celdas de la o ma
(X,m+1), y del mismo modo, ampoco se pod ´an ealiza segmen os e ica-
les que pa an de las celdas de la ´ul ima ila, pues no exis i ´an celdas de la
o ma (n+1,Y). Rep esen amos es o a a ´es de las siguien es dos eglas:
:- seg(h,X,m), ila(X).
:- seg( ,n,Y), col(Y).
Es o nos da los posibles conjun os candida os a se soluci´on del puzzle
Masyu. Aho a, debemos implemen a las eglas, que elimina ´an los conjun os
de segmen os que no esuel an el puzzle.
111

P ime o, ep esen emos que la l´ınea soluci´on del puzzle debe pasa po
odos los c´ı culos de la cuad ´ıcula, ya sean blancos o neg os. Pa a ep esen a
es o, amos a usa dos p edicados:
1. Usamos el p edicado ci culo/2 donde ci culo(X,Y) se e i ica si la
celda (X,Y) con iene un c´ı culo blanco o neg o:
ci culo(X,Y) :- blanco(X,Y), ila(X), col(Y).
ci culo(X,Y) :- neg o(X,Y), ila(X), col(Y).
2. Usamos el p edicado pasaPo /2 donde pasaPo (X,Y) ep esen a que
alguno de los segmen os que componen la soluci´on pasa po (X,Y).
pasaPo (X,Y) :- seg(S,X,Y), ila(X), col(Y), di ec(S).
pasaPo (X,Y+1) :- seg(h,X,Y), Y<m, ila(X), col(Y).
pasaPo (X+1,Y) :- seg( ,X,Y), X<n, ila(X), col(Y).
Finalmen e, se ep esen a que la l´ınea soluci´on debe pasa po odas las
celdas que con ienen c´ı culos median e una es icci´on:
:- ci culo(X,Y), no pasaPo (X,Y).
Implemen emos aho a las eglas.
REGLA 1.
Debemos ep esen a que la l´ınea soluci´on o ma un ´unico camino ce ado
que en a y sale de cada celda que a a iesa una ´unica ez.
Pa a ep esen a que en a y sale de cada celda que a a iesa una ´uni-
ca ez, amos a impone que la celda sea a a esada ´unicamen e po dos
segmen os, ya sea alg´un segmen o que pa e de la misma celda en di ecci´on
e ical u ho izon al u o o segmen o que pa a de la celda (X-1,Y) en di ec-
ci´on e ical o de (X,Y-1) en di ecci´on ho izon al. Po an o, el ca dinal del
conjun o o mado po es os cua o segmen os es exac amen e 2.
:- 3 {seg(h,X,Y); seg( ,X,Y); seg( ,X-1,Y); seg(h,X,Y-1)},
pasaPo (X,Y).
:- {seg(h,X,Y); seg( ,X,Y); seg( ,X-1,Y); seg(h,X,Y-1)}1,
pasaPo (X,Y).
112
Se debe pin a una ´unica l´ınea que sea la soluci´on del puzzle. Es o quie e
deci que si la l´ınea soluci´on pasa po dos celdas, podemos llega de una a
o a eco i´endola.
Pa a ep esen a es o, debemos de ini an es el p edicado ady/4, que e-
p esen a cu´ando dos celdas an a se adyacen es: una celda a a se adyacen e
a (X,Y) si podemos llega a la celda a a ´es de un segmen o que pa e de
(X,Y) y que o ma pa e de la l´ınea soluci´on. As´ı, se de ine ady/4 a a ´es
de las eglas:
ady(X,Y,X+1,Y) :- seg( ,X,Y), X<n.
ady(X,Y,X,Y+1) :- seg(h,X,Y), Y<m.
Si (X,Y) es adyacen e a una celda (W,Z), la celda (W,Z) se ´a adyacen e
a (X,Y). Pa a ep esen a la sime ´ıa de la elaci´on, usamos:
ady(X,Y,W,Z) :- ady(W,Z,X,Y).
Rep esen a emos que si la l´ınea soluci´on a a iesa dos celdas, se puede
llega de una a o a eco iendo la l´ınea usando el p edicado alcanzable/4,
que se de ine como sigue:
1. Supond emos que oda celda que a a iesa la l´ınea soluci´on es alcanza-
ble desde ella misma.
alcanzable(X,Y,X,Y) :- pasaPo (X,Y), ila(X), col(Y).
2. Supond emos que la celda (W,Z) es alcanzable desde la celda (X,Y) si
exis e una celda (X1,Y1) de mane a que (X,Y) y (X1,Y1) son adyacen-
es y (W,Z) es alcanzable desde (X1,Y1).
alcanzable(X,Y,W,Z) :- ady(X1,Y1,X,Y), alcanzable(X1,Y1,W,Z),
ila(X), col(Y), ila(X1), col(Y1),
ila(W), col(Z).
Finalmen e, pa a ep esen a que dada dos celdas po las que la l´ınea
soluci´on pasa, siemp e debemos llega de una a o a eco i´endola, usamos
una es icci´on:
:- pasaPo (X,Y), pasaPo (W,Z), no alcanzable(X,Y,W,Z).
113
REGLA 2.
El camino debe a a esa las celdas con c´ı culos blancos en l´ınea ec a,
es deci , supongamos que (X,Y) es una celda que con iene un c´ı culo blanco,
en onces si de (X,Y) pa e un segmen o ho izon al, a (X,Y) lo debe a a esa
o o segmen o ho izon al, que debe pa i de (X,Y-1), y si de (X,Y) pa e
un segmen o e ical, a (X,Y) lo debe a a esa un segmen o e ical, es a
ez pa iendo de (X-1,Y). Pa a ep esen a es o, se usa una es icci´on, que
impedi ´a que se d´e cualquie o a posibilidad que no sean las que acabamos
de expone :
:- 1 {seg(h,X,Y); seg(h,X,Y-1)}, 1 {seg( ,X,Y); seg( ,X-1,Y)},
blanco(X,Y).
Adem´as, la l´ınea soluci´on debe gi a 90 g ados en la celda an e io o
pos e io en el camino a la celda que con iene el c´ı culo blanco. Es deci , si la
celda (X,Y) con iene un c´ı culo blanco, de ella pa e un segmen o ho izon al
y adem´as es a a esada po o o segmen o ho izon al que pa e de (X,Y-1),
no puede ocu i que (X,Y-1) sea a a esada po un segmen o ho izon al a
la ez que de (X,Y+1) pa a un segmen o ho izon al.
:- blanco(X,Y), seg(h,X,Y), seg(h,X,Y-1), seg(h,X,Y-2),
seg(h,X,Y+1).
De la misma mane a, si la celda (X,Y) que con iene el c´ı culo blanco uese
a a esada po un segmen o e ical que pa e de (X-1,Y) y adem´as, de ella
pa iese un segmen o e ical, no pod ´ıa pa i a la ez un segmen o e ical
de (X-2,Y) y de (X+1,Y). Usamos pa a ep esen a lo la es icci´on:
:- blanco(X,Y), seg( ,X,Y), seg( ,X-1,Y), seg( ,X+1,Y),
seg( ,X-2,Y).
REGLA 3.
Po ´ul imo, amos a modeliza la egla 3. P ime o, ep esen emos que el
camino debe ealiza gi os de 90 g ados en las celdas que con engan c´ı culos
neg os. Pa a ello, supongamos que (X,Y) es una celda que con iene un c´ı culo
neg o. En onces, si de (X,Y) pa e un segmen o e ical, no puede ocu i que
de (X-1,Y) pa a o o segmen o e ical, po que si no la celda queda eco ida
en l´ınea ec a. De igual modo, si de (X,Y) pa e un segmen o ho izon al, no
puede ocu i que de (X,Y-1) pa a un segmen o ho izon al, po el mismo
114
mo i o. Usando es icciones, lo ep esen amos a a ´es de las eglas:
:- neg o(X,Y), seg( ,X,Y), seg( ,X-1,Y), ila(X), col(Y).
:- neg o(X,Y), seg(h,X,Y), seg(h,X,Y-1), ila(X), col(Y).
Pa a ep esen a que las celdas an e io y pos e io en el camino a la celda
que con iene el c´ı culo neg o (que es amos suponiendo que es (X,Y)) deben
se a a esadas en l´ınea ec a, se usan cua o es icciones:
1. Si de la celda (X,Y) pa e un segmen o ho izon al, en onces la celda
siguien e en el camino a (X,Y) es (X,Y+1) y pa a que sea po an-
o a a esada el l´ınea ec a, de ella no debe pa i ni accede nig´un
segmen o e ical:
:- neg o(X,Y), seg(h,X,Y), 1 {seg( ,X,Y+1); seg( ,X-1,Y+1)}.
2. Si de la celda (X,Y-1) pa e un segmen o ho izon al que a a iesa a
(X,Y), en onces (X,Y-1) es la celda an e io en el camino a (X,Y) y po
an o, ni de ella ni de (X-1,Y-1) deben pa i segmen os e icales pa a
que la l´ınea soluci´on a a iese (X,Y-1) en l´ınea ec a.
:- neg o(X,Y),seg(h,X,Y-1), 1 {seg( ,X,Y-1); seg( ,X-1,Y-1)}.
3. Si de la celda (X,Y) pa e un segmen o e ical, la celda siguien e a
(X,Y) en el camino es (X+1,Y), luego pa a que es a se eco a en l´ınea
ec a, no puede ocu i que pa a de ella un segmen o ho izon al o pa a
de (X+1,Y-1) un segmen o ho izon al.
:- neg o(X,Y), seg( ,X,Y), 1 {seg(h,X+1,Y); seg(h,X+1,Y-1)}.
4. Si de la celda (X-1,Y) pa e un segmen o e ical, es a es la celda
an e io a la celda (X,Y) en el camino, luego no puede ocu i que sea
a a esada po un segmen o ho izon al ni que de ella pa a un segmen o
ho izon al.
:- neg o(X,Y),seg( ,X-1,Y), 1 {seg(h,X-1,Y-1); seg(h,X-1,Y)}.
La soluci´on del Masyu end ´a dada po los segmen os que inalmen e se
pin en en la cuad ´ıcula y cumplan las eglas, luego nos ijamos ´unicamen e
en los li e ales o mados po el p edicado seg/3 en el conjun o de espues a:
#show seg/3.
Como hemos hecho en los puzzles an e io es, amos a e algunos ejemplos
de puzzle Masyu y sus soluciones.
115
(a) Masyu ni el no mal (b) Soluci´on
Figu a 6.5: puzzle Masyu y su soluci´on
Ejemplo 1.
Es udiemos p ime o la soluci´on del puzzle Masyu de la igu a 6.5.
Desc ibimos la cuad ´ıcula ep esen ando las celdas que poseen un c´ı culo
blanco o neg o con los p edicados neg o/2 yblanco/2:
blanco(1,4). neg o(2,5). blanco(3,1). blanco(3,6). neg o(4,2).
neg o(5,7). blanco(6,2). blanco(7,5). neg o(8,3).
blanco(8,5). neg o(8,7).
Gua dando el c´odigo del puzzle Masyu en el a chi o masyu.lp, la desc ip-
ci´on de la cuad ´ıcula en el a chi o masyuNo mal.lp y ejecu ando CLINGO
de la siguien e mane a:
clingo masyu.lp masyuNo mal.lp -c n=8 -c m=8
ob enemos la soluci´on del puzzle:
%seg(h,1,3) seg(h,1,4) seg(h,1,5) seg(h,1,6) seg(h,1,7) seg(h,2,1) seg(h,2,3)
%seg(h,2,4) seg(h,2,6) seg(h,4,2) seg(h,4,3) seg(h,4,5) seg(h,5,1) seg(h,5,4)
%seg(h,5,5) seg(h,5,6) seg(h,6,3) seg(h,6,4) seg(h,6,5) seg(h,6,7) seg(h,7,1)
%seg(h,7,4) seg(h,7,5) seg(h,8,1) seg(h,8,2) seg(h,8,4) seg(h,8,5) seg(h,8,6)
%seg( ,1,3) seg( ,1,8) seg( ,2,1) seg( ,2,2) seg( ,2,5) seg( ,2,6) seg( ,2,7)
%seg( ,2,8) seg( ,3,1) seg( ,3,2) seg( ,3,5) seg( ,3,6) seg( ,3,7) seg( ,3,8)
%seg( ,4,1) seg( ,4,4) seg( ,4,7) seg( ,4,8) seg( ,5,2) seg( ,5,8) seg( ,6,2)
%seg( ,6,3) seg( ,6,6) seg( ,6,7) seg( ,7,1) seg( ,7,3) seg( ,7,4) seg( ,7,7)
116

Ejemplo 2.
Aho a, es udiamos la soluci´on del puzzle de la igu a 6.6.
Figu a 6.6: puzzle Masyu ni el di ´ıcil
Desc ibimos el puzzle a a ´es de las eglas:
blanco(1,9). neg o(2,1). blanco(2,3). blanco(2,6). blanco(2,7).
blanco(3,8). blanco(4,2). blanco(4,3). blanco(4,4). neg o(4,6).
blanco(5,6). blanco(5,7). neg o(6,1). blanco(7,3). blanco(7,5).
blanco(7,7). blanco(7,10). blanco(8,2). blanco(8,6). neg o(9,5).
blanco(9,6). neg o(9,9). blanco(10,2).
Gua dando es a desc ipci´on en masyuDi icil.lp y ejecu ando CLINGO:
clingo masyu.lp masyuDi icil.lp -c n=10 -c m=10
se ob iene la soluci´on siguien e del puzzle:
%seg(h,1,4) seg(h,1,5) seg(h,1,7) seg(h,1,8) seg(h,1,9) seg(h,2,1) seg(h,2,2)
%seg(h,2,3) seg(h,3,2) seg(h,3,4) seg(h,3,7) seg(h,3,8) seg(h,4,6) seg(h,4,7)
%seg(h,4,8) seg(h,5,1) seg(h,5,3) seg(h,5,5) seg(h,5,6) seg(h,5,7) seg(h,5,9)
%seg(h,6,1) seg(h,6,2) seg(h,6,3) seg(h,6,5) seg(h,6,6) seg(h,6,7) seg(h,6,9)
%seg(h,7,2) seg(h,7,3) seg(h,7,6) seg(h,7,7) seg(h,7,8) seg(h,9,2) seg(h,9,3)
%seg(h,9,4) seg(h,9,7) seg(h,9,8) seg(h,10,1) seg(h,10,2) seg(h,10,3)
%seg(h,10,4) seg(h,10,5) seg(h,10,7) seg(h,10,8) seg(h,10,9) seg( ,1,4)
%seg( ,1,6) seg( ,1,7) seg( ,1,10) seg( ,2,1) seg( ,2,6) seg( ,2,7) seg( ,2,10)
117
%seg( ,3,1) seg( ,3,2) seg( ,3,3) seg( ,3,4) seg( ,3,5) seg( ,3,6) seg( ,3,9)
%seg( ,3,10) seg( ,4,1) seg( ,4,2) seg( ,4,3) seg( ,4,4) seg( ,4,5) seg( ,4,10)
%seg( ,5,8) seg( ,5,9) seg( ,6,1) seg( ,6,4) seg( ,6,5) seg( ,6,10) seg( ,7,1)
%seg( ,7,2) seg( ,7,5) seg( ,7,6) seg( ,7,9) seg( ,7,10) seg( ,8,1) seg( ,8,2)
%seg( ,8,5) seg( ,8,6) seg( ,8,9) seg( ,8,10) seg( ,9,1) seg( ,9,6) seg( ,9,7)
%seg( ,9,10)
118
Bibliog a ´ıa
[CKK+07] Me e Cayli, Ayse G¨ul Ka a op, Ahme Em ah Ka lak, Hakan
Kayna , Fe han Tu e, and E. E dem, Sol ing challenging g id
puzzles wi h answe se p og amming, 2007.
[GK14] Michael Gel ond and Yulia Kahl, Knowledge ep esen a ion,
easoning, and he design o in elligen agen s, Camb idge Uni-
e si y P ess, New Yo k, 2014, The answe -se p og amming ap-
p oach.
[GKK+19] Ma in Gebse , Roland Kaminski, Benjamin Kau mann, Ma ius
Lindaue , Max Os owski, Ja ie Rome o, To s en Schaub, S en
Thiele, and Philipp Wanko, Po assco use guide, 2019.
[GL88] Michael Gel ond and Vladimi Li schi z, The s able model seman-
ics o logic p og amming, P oceedings o In e na ional Logic
P og amming Con e ence and Symposium (Robe Kowalski, Bo-
wen, and Kenne h, eds.), MIT P ess, 1988, pp. 1070–1080.
[HD21] Ma ´ıa Jos´e Hidalgo Doblado, L´ogica compu acional y eo ´ıa
de modelos,h ps://www.glc.us.es/~mjoseh/LCyTM2020/
index.php/L%C3%B3gica_compu acional_y_ eo %C3%ADa_de_
modelos_(cu so_2020-21), Cu so 2020-2021.
[Li 08] Vladimi Li schi z, Wha is answe se p og amming?, ol. 3,
2008, pp. 1594–1597.
[Li 19] Vladimi Li schi z, Answe se p og amming, Sp inge In e na io-
nal Publishing, 2019.
119