4. Prolog 3 - Inteligencia Articial: Introduccin a Prolog...

Info iconThis preview shows pages 1–6. Sign up to view the full content.

View Full Document Right Arrow Icon
Inteligencia Artifcial: Introducci´ on a Prolog (Parte 3) Jorge Baier DCC-PUC Jorge Baier (DCC-PUC) Intro a Prolog 1/20
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Generaci´on y Prueba: El problema de las ocho reinas I El problema de las 8 reinas consiste en ubicar 8 reinas en un tablero de ajedrez de manera que ninguna reina quede en posici´ on de ataque con respecto a la otra. Una soluci´ on: Para resolver este tipo de problemas primero necesitamos representar una confguraci´ on del tablero. Jorge Baier (DCC-PUC) Intro a Prolog 2/20
Background image of page 2
Generaci´on y Prueba: El problema de las ocho reinas II Debido a que, claramente, toda soluci´on s´olo tiene a una reina por columna, representaremos el estado como una lista: [[1,Y1],[2,Y2],. ..,[8,Y8]] Donde el par [i,Yi] representa el hecho que hay una reina en la posici´ on ( i,Yi ) del tablero. Construiremos primeramente el procedimiento genera_configuracion(L) que genera una confguraci´ on posible del tablero. genera_configuracion(L) :- gen_aux(L,1). gen_aux([],N) :- N>8. gen_aux([[N,X]|L],N) :- N=<8, member(X,[1,2,3,4,5,6,7,8]), Jorge Baier (DCC-PUC) Intro a Prolog 3/20
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Generaci´on y Prueba: El problema de las ocho reinas III M is N+1, gen_aux(L,M). Al hacer la consulta genera_configuracion(L) , Prolog responde: ?- genera_configuracion(L). L=[ [ 1 ,1 ] ,[ 2 ] 3 ] 4,1],[5,1] ,[6,1],[7,1],[8,1]]; [ 1 ] 2 ] 3 ] ,[6,1],[7,1],[8,2]]; [ 1 ] 2 ] 3 ] ,[6,1],[7,1],[8,3]]; ... [ 1 ] 2 ] 3 ] ,[6,1],[7,2],[8,1]]; [ 1 ] 2 ] 3 ] ,[6,1],[7,2],[8,2]]; ... Ahora debemos escribir un predicado para verifcar la soluci´ on. La restricci´ on de que ning´un par de reinas debe atacarse se representa atrav´ esde lp red icado seguro(L) . Donde L representa a una Fracci´ on de la confguraci´ on. segura([]). segura([X|L]) :- no_ataca(X,L), segura(L). Jorge Baier (DCC-PUC) Intro a Prolog 4/20
Background image of page 4
Generaci´on y Prueba: El problema de las ocho reinas IV La segunda regla establece que una fracci´on de conFguraci´ on es segura si la reina (representada por X )queapa receenlap r imera ubicaci´ on de la lista no ataca al resto de las reinas de la conFguraci´ on (representada por L ). La primera regla dice que una fracci´on de conFguraci´ on vac´ ıa es segura. ±alta escribir el predicado no_ataca(X,L) ,quecuando X representa la posici´ on de una reina y L representa una conFguraci´ on parcial, se satisface si la reina representada por X no ataca a ninguna reina que aparece en L . no_ataca(_,[]).
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 6
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 19

4. Prolog 3 - Inteligencia Articial: Introduccin a Prolog...

This preview shows document pages 1 - 6. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online