Your SlideShare is downloading. ×
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Iabusq
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Iabusq

1,892

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,892
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Inteligencia Artificial e Ingenieria del Conocimiento I BUSQUEDA Julio J. Fiubio Garcia Area de Ciencias de Ia Computacidn e Inteligencia Artificial Pedro R. Mura Medrano Jose A. Bañares Bañares Area de Lenguajes y Sisiemas In/ orméticos v 1.0 Bonador del November 9. 1998 18:19 Departamento de Informatica e Ingenieria de Sistemas Universldad de Zaragoza
  • 2. TEMA I PRIMERA APROXIMACION A COMMON LISP. ... ... ... ... ... ... .., ... ... ... ... ... ... ...3 I . I . lNTRoDucmON. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 3 1.2. PRIMERA VISITA A LA FAMIUA DE ELEMENTOS LIS? Y Al. EVALUADOR . ... ... ... ... ... ... ... ... ... . . . 6 1.3. CONDICIONALES. RECURSIVIDAD Y IJSTAS COMO EsmuCrLrRAs m; DATOS. .. ... ... ... ... ... . . . l l TEMA 2. SISTEMAS DE PRODUCCION Y 16 2. l. RESOLLTCION DE PROBLEMAS EN INTEUGENCIA AKTIF-ICMI. .. ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 16 2.2. SISTEMAS DI: ` PRODUCCION Y BCISQLII-LDA. . . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . 18 2.3. REPRESENTACICJN DE PROBLEMAS . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 21 2.4. EsmLrCrLIR As DE mms EN LISP: vscrones. REGISTROS. usus. .. ... ... ... ... ... ... ... ... ... ... .. 25 2.4. l. Vector: : a: Usp. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . 25 2.4.2. Registrar en Lisp . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 28 2.4.3. Usia: como eslructuras de darus en Lisp . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 30 2.4.4. EI nivcl fixica de la represenlucién para e! problema dc las garmfux . ... ... ... ... ... ... . . . 31 2.5. Esmclos DE aswwos. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . 34 2.6. ; Quiz SlGNlI-'ICA ENCONTRAR UNA SOI . ucI0N? .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . 38 'IEMA 3. ESHKATEGIAS DE CONTROL NO INFORMADAS . ... ... ... ... ... ... ... ... ... .. . .41 3. l. ESOUEMA ALoonlmlco GENERICO DE BUSOUEDA . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . 41 3.2. BIJSQUEDA EN ANCHURA . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 42 3.3. MAS samua COMMON LISP: VARIABLES LOCALES. ITERACION. MISCELANEA. .. ... ... ... ... .. . .47 3.4. TEXT! ) DI-J. vacuum SEARCHLSP. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . . $4 3.5. BnsQuEnA FN omm . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 59 3.6. BUSQLTEDA EN PRORINDIDAD . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 64 TEMA 4. ESTRATEGIAS DE CONTROL HEURISTICAS . ... ... ... ... ... ... ... ... ... ... ... . . . 75 4. l. HEURISTICAS. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 75 4.2. Merooos DE ESCALADA. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . 79 4.3. Mêrrouos "PRlMI-ZRO EL MFJOR' . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 83 TEMA 5. BUSQUEDA DE UNA SOLUCION OPTIMA m. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...88 5. l. ESTRATEGIAS NO INFORMADAS PARA LA BUSQLIEIJA DE UNA SOLUCION OPTIMA. .. ... ... ... .. 88 5.2. ESTRATEGIAS HEunisncAs: ALGORITMOS A. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. . . 95 TEMA 6. ESTRATEGIAS PARA JUEGOS. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 114 6.1. Annoussbejusoo. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . I 14 6.2. Amoknxuos MINIMAX. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. l IS 6.3. Pom ALFA/ BETA. .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 123
  • 3. BUSOUEDA 3 TEMA 1 Primera agroximacién a Common Lisp 1.1 . Introduccién. Common Lispt como el resto de Ienguajes de Ia familia Lisp. tiene Ia caracteristica de ser un Ienguaje de programacion interactivo. Es decir, el modo habitual de trabajar en Common Lisp consiste en introducir (desde el teclado o bien por lectura de un fichero) una expresion. que es procesada (evaluada. segan Ia terminologia Lisp) y por ultimo se procede a Ia escritura del resultado (en Ia pantalla o en otro iichero). quedando a continuacion el sistema a Ia espera de que se Ie iacilite una nueva expresion. En el modo mas simple de trabajo se utilizan como dispositivos estandar de entrada y salida, respectivamente. el teclado y el monitor. En este caso las primeras sesiones de trabajo en un entorno Common Lisp pueden recordar al manejo de una calculadora de bolsillo o de un sistema operativo como D. O.S. o Unix. puesto que todos ellos estén basados en un bucle de Iecturaevaluacion- escritura. Veamos algunos ejemplos de uso de un entorno Common Lisp. En estos ejemplos el simbolo 2- es utilizado como 'prompt' del entomo (puede variar segan las implementaciones). el texto escrito a continuacion debe ser entendido como una expresion tecleada por el usuario y el sirnboto ---zv habitualmente no apareoe explicitamente en los entornos y representa aqui el proceso de evaluacion. Por Ultima, lo escrito a la derecha de ---^: ~ es lo que el sistema Lisp mostraria en Ia fase de escritura del bucle de Iectura-evaluacion-escritura. Un primer ejemplo: j) : :zh Si tecleamos un numero (una secuencia de digitos) el sistema lo escribe tal cual: dicho de otro modo: Ia evaluacion de un numero produce el mismo numero. Otro ejemplo: J Rab-o. PR Mx: ) 'J @Maros mwvwart? . 1998- Cursa 96-97
  • 4. BUSCNJED/ l 4 [v j; jg; == =~; . it; Este ejemplo admite una explicacion simple (el producto de 3 por 3 es 9). pero contiene la mayor parte de los elementos esenciales de Lisp. Asi en él aparecen. ademas de los numeros. un simbolo (r) y una Ilsta (un paréntesis que se abre seguido por una secuencia de elementos Lisp. separados por espacios en blanco. y un paréntesis que se cierra). Ademas se puede observer que Ia notacion en Lisp es prelija: en primer lugar aparece el operador (A) y a continuacion los argumentos. EI siguiente ejemplo nos permitira explicar un poco mejor oomo ha luncionadc el evaluador (Ia parte del sistema Lisp que realiza Ia evaluacion) en este caso. 33 r» 5 ll'I --». v r -r _r': E* i* ~ii = En este ejemplo Ia expresion introducida por el usuario es una lista compuesta por tres elementos Lisp: el primero es un simbolo (el operador +) y el segundo y el tercero son a su vez Iistas. Esta es una estructura tipica en Lisp (la de Iistas anidadas) que conlleva una multiplicacion del numero de paréntesis. una de las caracterlsticas extemas mas llamativas de Lisp. Ante una expresion como la anterior, el evaluador. tras verificar que el primer elemento de la lista es un operador ccnocido. procede a evaluar secuencialmente el resto de elementos de la Iista. En nuestro caso. la evaluacion de I' _a 3.; produce 9 y Ia de l* 5 si produce ; i A los resultados asi obtenidos se les aplica el operador de la lista iniclal (+) y se obtiene el resultado final. 34. Obsérvese que el evaluador es recursive: se Irama a si mismo para evaluar los 'argumentos'. En cambio. el bucle de Iectura-evaluacion-escritura no es recursivo. En particular. notese que los resultados de Ia evaluacion de r* 3 3a de r* 5 5:» no han sido escritos en Ia pantalla. La evaluacion de esas expresiones (y por tanto Ia dada en el segundo ejemplo) responde exactamente al mismo patron explicado para Ia entrada mas compleja: se compmeba que el primer elemento de la lista es un operador (r) y se procede a evaluar los argumentos: pero. como ya hemos indicado. un nomero es evaluado a si mismo. con lo que reencontramos la explicacion simple dada mas arriba (el producto de 3 por 3 es 9). EI ejemplo anterior recoge ya Ia mayor parte de la sintaxis y de la descripcion del comporfamiento de los programas Lisp. Pero si tuviesemos que Iimitarnos a utilizar los operadores predefinidos del Ienguaje tendrfamos una capacidad expresiva no mucho mayor que Ia de una calculadora (sofisticada) de bolsillo. Sin embargo, Lisp permite la definicion de funcicnes de usuario que van a facilitar un desarrollo por retinamientos suoesivos de programas complejos y van a ser Ia herramienta fundamental de organizacion del software en Lisp. Veamos un ejemplo: idoiuh Cuadrado (xi J Pemicu PR . mm 'J Bañares ? ulararrbar 9. 1217- (Lusa E154??
  • 5. BUSOUEDA 5 i* x x)] = ==> CLJADRFADC* La prlmitlva besar: de Common Lisp va a permitir Iigar un cierto simbolo (cuadrado en el ejemplo) con una deflniclon de funcion (en este caso, Ia funcion que a x Ie hace corresponder l' x xl). La sintaxis es facilmente deducible del ejemplo: se trata de una lista en la que defur'. es seguido de un simbolo (el nombre de una funcion). de una lista de simbolos (los nombres de los parametros formales) y de una expresion Lisp cualquiera (el cuerpo de la funcion). Obsérvese el lormato en que ha sido escrita la expresion de entrada: el cuerpo de Ia funcion aparece en una Iinea dlferente. En Lisp. los elementos de una lista pueden estar separados por cualquier nomero de espacios en blanco o de saltos de llnea. Pero Ia forma de escribir Ia definicion de esa iuncion no es casual: hay unas reglas de escritura del codigo y de sangrado (indentacion) que permiten hacer los programas mas facilmente Ieglbles. Durante el proceso de evaluacion de la expresion anterior tiene lugar algo que no aparecla en los eiemplos anteriores: se produce un electo lateral. Un electo lateral es algo que acontece durante el proceso de evaluaclon y que es distinto de la oonstruccion del valor a devolver (el valor que sera escrito en la fase de escritura del bucle de lectura-evaluacion-escritura). En el caso de defun el electo lateral obtenido es Ia ligadura del nombre de Ia funcion con la funcion en sl. Iigadura que altera el contextc de modo que el nombre podra ser utilizado en las siguientes expresiones del usuario (hasta que terrnine Ia sesion). Habitualmente defun es utilizado para conseguir ese efecto lateral. Pero las nonnas generales de Lisp deben ser respetadas. por lo que la evaluacion de Ia expresion debe producir un valor que sera a continuacion escrito. EI valor que se devuelve es el nombre de la funcion. como queda recogido en el ejemplo. Notese que el entorno puede decidir escribir el simbolo nombre en mayusculas. En Lisp los simbolos pueden ser escritos (por el usuario o por el sistema) indistintamente con mayosculas o minosculas (como los identificadores en Pascal. por ejemplo, pero no como sucede en C). Tras evaluar Ia expresion anterior, el usuario puede utilizar el simbolo cuadrado como si se tratase de un operador predefinido, como puede comprobarse en los siguientes ejemplos: > (cuadreidc 3] = => 9 > (+ (cuadracio 3) (cuacirado 5)) ---> 34 1.2. Primera visita a Ia familia de elementos Lisp y al evaluador. J RubnofRR, MWN) Bañares November& 15398- Cuma 96-97
  • 6. BUSKXJED/ l B* Después de Ia anterior introduccién informal, podemos resumir lo que sabemos del entorno Lisp. Los elementos Lisp que conocemos se agrupan del siguiente modo: - Atomos. que a su vez se dividen en: - Numeros - Simbolos - Listas Sin entrar en detalles léxicos, los numeros son secuencias de digitos (también se pueden manejar en Lisp numeros reales. racionales y complejos. con los formatos correspondientes) y los simbolos (su apariencia extema. mas bien) son secuencias de tetras y digitos (en los que Ia diferencia entre mayusculas y minusculas no es tenida en cuenta). Es importante no oonfundir los simbolos oon las cadenas de caracteres (estructuras de datos que seran explicadas mas adelante). Las Iistas se definen del siguiente modo: un paréntesis que se abre, seguido de un numero cualquiera de elementos Lisp separados por los delimitadores Lisp (recuérdese: cualquier numero de espacios en blanco o saltos de linea) y un paréntesis que se cierra. Es importante hacer notar que la dellnicién de las Iistas es recursive. lo que permite el anidamlento con cualquier grado de profundidad de listas (ya hemos visto ejemplos de estas estructuras anidadas mas arriba). Este hecho hace que el tratamiento recursive sea en Lisp mas Comodo y mas frecuentemente utilizado que en otros lenguajes de programacién. Entender Lisp es equivalente a oomprender como funciona el evaluador. Para ello vamos a retomar como se comporta el evaluador ante cada una de las familias de elementos introducidas antes. - Atomos: - Numeros: son evaluados a si mismos. Ejemplo: 4 : : : j. - Simbolos: se comprueba sl tienen algun valor asociado: si no tienen ningun valor. se produce un error: == => ; ;;; EFtFlQF. !! '.I 3* Ll Aqul hemos supuesto que los ejemplos que vamos escribiendo son las unicas expresiones introducidas en una misma sesion, desde que se ha entrado a ella. Lo que sucede tras haberse producido un error durante ei bucle de Iectura-evaluacién- J Pertuan PR . mm 'J Hanara. : ? thunder f? . 1211- (Lusa E154??
  • 7. BUSCXJEDA 7 escritura depende del entorno concreto con el que estemos trabajando. Habilualmente. se continua en el bucle de Iectura-evaluacion-escritura o existe algun modo sencillo de volver a él. Si un simbolo tiene un valor asociado, este valor es el resultado de Ia evaluacién. Para enoonfrar una muestra de esta situacién entre los ejemplos anteriores, hay que mirar con un poco mas de detalle el proceso de evaluacion de una expresion en la que aparezca una funcion definida por el usuario. Asi. tras la evaluacion de: [deiun Cuadradc (xi (v x z-; n = ==> : :'; .a. riaA: :u: i si introducimos: r_zçrigieinçirhaz: lrzz 3) **ni- ?4 en el proceso (intemo) de evaluacion de esa expresion. se produce Ia Iigadura del parametro formal : -; con el (resultado de evaluar el) argumento 3:. de modo que cuando se evalua el cuerpo de la funcion ~: ~ ; -: x). Ia evaluacion de : r. (en cada ocasion), produce el valor 3 obteniéndose finalmente el comportamiento observado (escritura de a). Es importante resaltar que Ia Iigadura del parametro formal 2-: con el parametro real 3 es local al cuerpo de Ia funcion. de modo que su evaluacion fuera de ese contextc producira un error: x -~~: - ; Mr ? _-'~ll'<`. ~f)l`1. l! !! Por supuesto, también exlsten modos de ligar valores a simbolos de mcdo global. Pero este aspecto sera tratado mas adelante. Continuamos explicando el modo de evaluacion del resto de elementos Lisp que conocemos: las Iistas. En cierto modo. aqui se reooge el nucleo de Ia programacién Lisp. puesto que en | ..isp definir un programa es escribir una lista (una definicion de funcion que, habitualmente, se apoya en muchas otras) y ejecutar un programa no es mas que evaluar una lista (una Ilamada a una luncién oon ciertos argumentos). - Listas: se compmeba que el primer miembro es un simbolo que tiene asociado un operador (predefinido o delinido previamente por el usuario) y si esto no es cierto (bien porque el primer miembro no sea un simbolo. bien porque ésle no tenga asociada una funcion) se produce un error: J @author PR . mm 'J Hanara: : ? thunder 9. 1217- (Lusa 51597
  • 8. BUSCNJEDA b' 1.53) 2-» ; ;-, ; ERRCF'. :rss ; ; : :Race : :as [cuurjzud 3] I= ~ g; En otro caso. se procede a evaluar secuencialmente de izquierda a derecha el resto de miembros de Ia Iista. siguiendo (recursivamente) las mismas reglas que estamos dando: si en algun momento se produce un error. el proceso es detenido y el usuario es informado de que se ha producido un error. En otro caso (es decir. si cada uno de los miembros de Ia lista han sido evaluados con éxito). se procede a aplicar el operador que aparecia en cabeza (primer lugar) de Ia lista a los Valores obtenidos en el proceso de evaluacion anterior. Aqul pueden volver a aparecer nuevos errores, por ejemplo debidos a que el numero de argumentos o el tipo de los argumentos definitivos (es decir, tras su evaluacion) no sean los adecuados. Si no se produce ningun error adicional. se alcanza un elemento Iisp que sera el resultado de Ia evaluacion de Ia lista inicial. La situacion puede ser explicada con mas detalle en el caso de que el operador haya sido definido por el usuario (si es predefinido. el manual del Ienguaje es el que nos indicara el comportamiento del operador). en Ia Iinea que ha sido esbozada mas arriba cuando se ha hablado de la evaluacion de simbolos con ligaduras (locales). pero por el momento nos contentamos con dar esta informacion somera. Esta es Ia regla general, Ia que se aplica por defecto. para Ia evaluacion de Iistas. Pero ya conocemos un ejemplo de evaluacion de una lista que no ha seguido el mismo proceso. Asi cuando explicamos el ejemplo: [cinzfu rt cuaciraxjc- (K) rj* x : -cm = = = T' C [JAC 31.34.01?- no se produjo ningun error. mientras que si se hubiese seguido el procedimiento general se hubiese producido un error al intentar evaluar el simbolo ~: '.1a~. 'lra-i~: ~ que no tiene asociado ningun valor. Esto es asi porque una lista encabezada por de: itu'. es tratada de un modo especial por el evaluador. En particular. los argumentos provisionales de . jas-en no seran evaluados. Un simbolo como 'fit-fun. que tiene asociado un operador predetinido y tal que si aparece en cabeza de una lista las reglas generales de evaluacion de Iistas no son aplicadas sobre ella. se denomina elemento especial. Cada elemento especial requiere una intormacion adicional sobre como se evaluan las Iistas en las que aparece como primer miembro. Otra observacion que puede ser extraida de las explicaciones anteriores es que. de hecho. los simbolos son tralados por el evaluador de modo dilerente segan aparezcan como primer miembro de una lista o en cualquier otra situacion (dentro o J Ramon PR . mm 'J Hanara: : however 9. 1217- 0446096437
  • 9. &SUKMA 9 luera de una Iisla). En el primer caso, el evaluador busca si el simbolo tiene asociada una funcion, con el objeto de aplicarla a (los valores obtenidos por evaluacion de) sus argumentos. En el segundo. inlenla enoontrar el valor que tiene ligado en el contexto actual. Ambos prooesos son lotalmenle independienles. Por ejemplo: > cuadrado = ==> ; ;;; ERROR Z! !! Esta consideracion pemite ver que un simbolo es en Lisp un objeto muy rioo (mucho mas que un identilicador en lenguajes como C o Pascal) en el que hemos podido dislinguir. hasta el momento, tres componentes: - su nombre (la secuencia de caracteres que nos permite referimos a él) - su valor (como en el caso de la Iigadura local de x y 3) - su valor luncional (que puede ser creado o modilicado usando defun) Précticamenle ya conocemos todos los elementos bésicos que nos van a permitir programer en Lisp. Al ser tan reducido el namero de herramientas con las que contamos, va a ser obligatorio que algunos de estos elementos pueden ser utilizados para varios lines. Esto es lo que sucede oon los simbolos y las Iistas. Los simbolos pueden ser utilizados como: o identificadores: para nominar funciones (como cuadrado), parémelros lonnales (como x en la defnniclon de cuadrado) o variables (todavia no lenemos nlngun ejemplo de este ultimo uso). - Datas, como veremos en breve. Las Iistas a su vez pueden ser utilizadas como: - "Programasi es decir expresiones que pueden ser evaluadas. oomo en la mayorla de los ejemplos anteriores. - Delimitadores sintécticos, como en el caso de las Iistas de parametros lormales. - Estructuras de datos, como veremos al final del tema. Vamos a continuacion a explicar como es posible ligar. de modo global un simbolo y un elemento Lisp. Veamos algunos ejemplos: > (setq x 5) = ==> 3 > x ---> 5 > (l x 8) ---> 13 Jem»/ RRAmmfJGMwn Ihwmuwarñw-&mawar
  • 10. &samua W EI operador predefinido setq es un elemento especial. Su primer argumento debe ser un simbolo (en olro caso se produce un error) que no sera evaluado y su segundo argumento es cualquier elemento Lisp, que sera evaluado. El resultado de evaluar este segundo argumento sera el resultado de la evaluacion de Ia lista iniclal y ademés, como electo lateral, dicho resultado sera Iigado en el contexto aclivo en ese momento (el global en el ejemplo) al simbolo que era el primer argumento del se: q. Algunos ejemplos mas: > tsenq y (cuadrado (* 1 2))) | | ll | | ll | | ll V V L4.) D . b > (+ (cuadrado x) yl Esta primitiva nos permite manipular los simbolos oomo variables (su teroer uso como identificadores enumerado mas arriba). Sin embargo. para utilizar los simbolos como datos en si todavia nos faltan recursos. Por ejemplo si quisiésemos ligar al simbolo 2 el simbolo caballo no podrlamos teclear algo como: > (setq 2 caballo) -'*> 333; ERROR E! !! La razon es que. segan se ha explicado mas arriba. el evaluador intentara enoontrar el valor asociado al simbolo caballo lo que producira un error. Por ello. si queremos utilizar un simbolo oomo un dato. es obligatorio que podamos impedir Ia evaluacion. Esto es posible gracias al elemento especial quote que no evalua su unico argumento. que puede ser cualquier elemento Lisp. Asi: > (quote caballol ---> CABALLO Lo que utilizado en oonjuncion con setq permite ya manipular simbolos como datos: > (setq z (quote caballol) = ==> CABALLO > z = ==> CABALLO Puesto que quote es una primitiva muy utilizada (Lisp es un lenguaie muy adecuado para Ia manipulacion simbolica. lo que no es ajeno a su ampllo uso en Inteligencia Artificial). los diseñadores de Lisp han previsto una abreviatura. Ia comilla simple '. Asi: > 'caballo ---> CABALLO > (setq pieza 'aLfi1) ---> ALFIL > pieza = ==> ALFIL Obsérvese en cambio: > 'pieza = ==> PIEZA JRMWIRRANW/ JBMWW Mmmñwalñw-GMOQG7
  • 11. BUSCUFD/ l I r 1.3. Condicionales, recursividad y Iistas como estructuras de datos. Tras Ia pnmera visita al evaluador vamos a terminar el tema con una breve introduccion a Ia programacion en Lisp. Para ello en primer lugar necesitaremos una primitiva de seleccion condicional (un 4 j) y esto a su vez requiere de Ia nocion de predicado: funcion que devuelve un valor booleano. Asi pues debemos comenzar por explicar cueles son los valores booleanos en Lisp. El valor "false" es representado en Iisp por el simbolo 111 1. Este simbolo es una constante predeiinida cuyo valor es el mismo simbolo r. ; 1: m1 ~-- icn. EI valor booleano "cierto" por defecto es el simbolo T. (por "true") que también se comporta respeclo al evaluador como una constanle de valor ella misma: f : ::'; .. 'I' Hemos indicado que r es el valor ”cierto” por defecio debido a que en Lisp cualquier elemento distnnto de ni- es considerado como "cierto" (es una situacion similar a Ia que se produce en C. donde el entero 0 es el valor booleano 'falso'. mientras que cualquier numero distinto de cero es considerado “cierto”. aunque el valor "cierto" por delecto es 1). Eso significa que el valor r. es solamente elegido por Lisp para ser devuelto cuando ningun olro valor distinto de n'. - es significativo en ese contextc. Para terminar con esta breve introduccion a los valores booleanos en Lisp, es necesario observar que el simbolo ni 1 tiene un sinénimo: la lista vacia ~: ti. Es decir. el simbolo ni- y Ia lista vacia u: I» son elementos indistinguibies en Lisp. Se trata de un solo elemento que es el (mico que es simulténeamente un étomo (de hecho. un simbolo) y una Iista. Esto conlleva varias consecuencias. Asi Ia regla de evaluacion de Iistas se generaliza del siguieme modo para Ia lista sin ningun miembro: l; :: ::~. _i _q Y Ia afirmacion de que cualquier elemento dislinto de m1 en Lisp representa el valor booleano "cierto" no nos debe hacer pensar que toda lista en Lisp representa el valor "cierto"; esto solo es verdad para las Iistas que tienen algun miembro. las que no son Ia lista vacia. EI Lisp existen muchos predicados predefinidos que permiten conocer propiedades o comparar elementos. Veamos algunos: J Ranny PR . mm J Hanara: : . Nbraññar rr, raiu: . (mas. ) ziv; ;Jr
  • 12. BUSCXJEDA 12 iêqua; 'a ni = ==> HIL iequu; U ui = ==> T La funcion predeiinida aqg-_il sirve para determinar si dos elementos Lisp son iguales. Existe otro operador de oomparacion de la igualdad que solo puede ser utilizado con numeros: i~ H [cuadradc ? ii ~~~> T Aunque en Lisp no hay un 'tipado explicito' de los datos y variables. si que existe un "Iipado implicito" que oonsisle en que ciertos operadores predefinidos producen error si sus argumentos (delinilivos: tras Ia evaluacién) no son del tipo adecuado. Ask i: ai "gi = ==> ; ;-; Essa& 1:! ! ya que. si continuamos en Ia misma sesién desde el comienzo del tema. u ___, q Lo mismo sucede con otros operadores numéricos. ya sean de comparacién (. =-. -r -) o aritmétioos (o, -, ,. ..). Una vez que conocemos cienos predicados. podemos pasar a considerar Ia primitiva oondicional més elemental en Lisp: ; f. Veamos algunos ejemplos: [se-sfq x 7] ---t- 7' > [xi li x bj '. 'r. v;1'1~r: ~L _r;1.i--. ~_«_* i n 1* : J 'wayor_c_1guaZ_que_3incoi = = = 2» I~1A'x': :a_~: ;_ I L3IJAL_I; `:F. JE_I. `. : :-16:: ljzeLrj 5; 3] = ==> 3 lit Ir x 5] 'renor_qJe_cin: a 'muyar_c_1qua; _que_:1ncoi ~~~> HENDR_QUZ_CINCO EI oondicional i I es un elemento especial. Tiene tres argumentos. de los cuales el primero (la condicién) sera siempre evaluado; su valor tendra' una interpretacion booleana. Si dicho valor es "cierto" (es decir. distinto de m1. Ia lista vacia). el segundo argumento del 1:" (Ia rama 'entonces") sera evaluado y su valor sera devuelto como valor del r r: el tercer argumento del - r no sera evaluado. Si el valor J @author PR . mm 'J Bañares ? tersebar 9. 1217- (Rusa 51597
  • 13. BIBOUEDA 13 del primer argumento es nil (Ia lista vacia). el segundo argumento no seré evaluado. pero si lo sera el tercero (Ia rama "si no"). cuyo valor ser& el del 1 f. Esto nos permite programer una tuncion que caloule el méximo de dos numeros enteros: > (defun mayor (xl x2) ; xl y x2 debaran ser numeros enteros (if t< xl x2) x2 xl)) = ==> MAYOR > (mayor 2 3) ---> 3 > (mayor t* 2 7) 3) ---> 14 > (mayor 6 'numeroi = ==> ; ;;; ERROR E! !! En Lisp los comentarios (aquellas partes del texto que no seran tomadas en consideracion por el evaluador) se indican mediante ; . el punto y come Cuando aparece en una Iinea el carécter reservado ; se entiende que el texto que aparece tras el en esa Iinea es un comentario. En el eiemplo anterior se ha escrito oomo comentario Ia especiticacion de entrada de Ia funcion de mayor: si sus argumentos (detinitivos) no son numeros enteros su comportamiento esta indetinido. En particular. si se introduce un simbolo oomo argumento (como en Ia Ultima linea del ejemplo) se producire un error. Con estos pocos preliminares. podemos ya escribir programas que realicen célculos repetitivos. Para elo nos apoyamos en la recursividad. que en Lisp puede ser comprendida sin mes que aplicar las reglas generales de evaluacion expticadas mas arriba. Por ejemplo. Ia siguiente funcion permite caicular el tactorial de un numero entero positive: > (defun factorial (ni ; n debet& ser un numero entero positive (if = n O) 1 t' n tfactorial (- R 1))))) ---> FACTORIAL > tfactorial 4) ---> 24 Para tenninar esta brevisima introduccion a Ia programacion en Common Lisp. vamos a mostrar oomo las Iistas pueden ser empleadas como estructuras de datos J RIJDIbRR, Mun/ J SMUN; Manuver! . 1998 - Cuma 9597
  • 14. BUSCNJEDA 14 en Lisp. Por ejemplo. si deseamos almaoenar una coleccién de numeros enteros en Pascal o C empleariamos una eslruclura de Ia familia “vector” (un "array'). En Lisp esto puede ser conseguido utilizando una lista. Para tratar con una lista de enteros es necesario impedir su evaluacién: : r: ; ;;, ~ macan l! !! li (1231: '(1 L 3) = ==> iL L 31 Ahora necesitamos operadores predefinidos que nos permitan acceder a los elementos de una Iista. El operador 1 1; -_. ~r_ extrae el primer miembro de una Iista. mientras que el operador re -. devuelve una lista como Ia iniclal, pero sin su primer miembro. Estos dos operadores utilizados combinadamente permiten acceder a cualquier miembro de una lista: iflrst '47 17 ~3Ji **'> 7 treat '(7 `7 3)) I- 117 3] [idrst (rest ' il' lT" -rI-i II J = ==> ll' > [Z1LsL (LCEL (: :3L '(7 17 ~3)JJi = ==> ~3 Obsérvese el siguienle ejemplo de comportamiento de 1 . _« v. : (rest '( 3)! *"* N; ; Por ultimo el predicado Emily& nos informa de si una lista es vacia (esto es. igual a n1lk iki-hdp' ` (7 17 -TI l -~4-'- f-(Tf. > [endp '()) = ==> T [v: r`1d{: :~ (H : ==> T [êndp 'niii ~~-2 T > [endp nlli = ==> T [endy: (resL 'i-Sl i' = == * 'I' Estas pocas herramientas para el tratamiento de Iistas. utilizadas junto a Ia recursividad. nos permiten ya impiementar algoritrnos para el procesamiento de datos estmcturados. Por ejemplo. la siguiente funcion calcula Ia suma de los elementos de una lista de enteros (se impone que si Ia lista de entrada es vacia se devuelva O). Ldeiun suma-lista-entercs (li5ta~enterc5] (if Iendp 1153& enterosi J n.1n; .o. ~P. n . mm 'J Hanara: : hbrGITñGf 9. 1217- corsa 135537
  • 15. BIBOUEDA 15 = ==> SUKA-LI STA-ENTEROS > (suma-lista-enteros '(7' 17 -3)] = ==> 21 Eiercicios. Se pide escribir funciones Lisp que realicen la tarea que se indica. Para cada una de ellas se debaran escribir unos cuantos ejemplos significativos de Ilamadas a Ia funcion. I) Diseñar un predicado (funcion que devuelve valores booleanos) que. a partir de una lista y un elemento Lisp cualquiera, decide si el elemento es equal a alguno de los elementos de Ia lista (si Ia lista es vacia se entiende que el resultado de la busqueda debe ser ni 1). 2) Diseñar una funcion que. a partir de una lista de enteros positivos. calcule el elemento méximo (se impone que si Ia lista es vacia se devuelva el entero -1). lndicacion: utilioese Ia funcion mayor que aparece en el texto mas arriba. 3) Diseñar una funcion que. a partir de una lista no vacia de enteros. calcule ei elemento minimo. Indicacion: diséñense dos funciones auxiliares, un predicado que verifique si una lista tiene un Onico elemento y una funcion que calcule el minimo de dos numeros enteros. J RIJDIbRR, Mun/ J SMUN; Navevrñera 1998 - Cuma 9597
  • 16. SUSCKJFD/ l H. ? TEMA 2. Sistemas de groduccién y loiiisgueda 2.1. Resolucion de problemas en Inteligencia Artificial. En general, podemos alirmar que un problema consisle en: - una descripcion de la situacion de la que se parte: - una descripcion de Ia siluacion a Ia que se quiere llegar: - una descripcion de los medios de que disponemos para alcanzar nuestro objelivo. En el conlexto de Ia lnlormalica. a partir de un problema. se inlenla construir un sistema que lo resuelva. Resumidamenle. las acciones para conslruir un sistema que resuelva un problema serian: - Delinir el problema con preciszén (especilicacién del problema). habitualmente a partir de un enunciado del problema expresado en Ienguaie natural: - de que se parte: - cuél es el obielivo. - Analizar el problema: inlormacion para elegir las técnicas. - Aislar y representar el Conocimiento necesario para resolver el problema. -Elegir Ia mejor lécnica que resuelva el problema y aplicarla al problema particular. Parlicularizar eslas acciones al contexlo de la Inteligencia Artificial conslsle en elegir las técnicas de resolucion entre aquellas que son utilizadas en esia disciplina. En nuestro caso. nos cenlraremos en los siguientes lemas en las lécni-: as relacionadas con los sistemas de produccion y la busqueda en espacios de eslados. . .l @Elmo PR Mw! ? . J 63744.32:: Mfu-nrnm-. r:'{ l ? PAR ~1'I'. urx.1:`. »'i. '.| ,?
  • 17. SUSCUFD/ l l. ? En los lemas siguientes ulilizaremos como ejemplos para ilustrar las nociones leéricas algunos problemas que no son aplicaciones realcs de Ia lnleligencia Arlilical. Se trala mas bien de ejemplos que han sido elegidos porque son sulicienlemente mancjables, tanto en cuanlo a la laciladad de su enunciado como en cuanlo al volumcn de datos que es necesario explorer para oblenor una solucion. He aqui algunos de ellos: - EI 8-puzzle. - Enlrada: Un lablero 3x3 donde aparecen dislribuidos los digitos 1. 2. 3. 4, 5. 6, 7 y 8, quedando por lanto una de las Casillas del lablero en blanco. Por ejemplo. un tablero lal y como aparece en la Figura 1. F igura 1 -Salidaz Alcanzar una dlsposicién distinla de los digitos en el tablero. Habitualmenle se toma como conrguracién de Ilegada el tablero que tiene el digrto 1 en la primera casilla de Ia primera linea (esquina superior izquierda) y los digitos 2, 3. 8 se distnbuyen uno a conlinuacion de olro en el sentido de las agujas del reloj, quedando la posicién central del tablero sin ocupar (ver Figura 2) F igura 2 -Nlediosz si una casilla del tablero esta al lado de Ia casilla vacia se puede desplazar sobre ella. (En particular, esta prohibido usar un destornillador para sacar las piezas y resituarlas como a uno le parezca r. .) ~ EI problema de las garrafas de vino. - Entrada: dos garrafas vacias. una de cuatro litros y otra de tres. - Salida: Ia garrafa de cuatro Iitros contiene exactamente dos litros de vino. . .I F1'. itu: : PR Mun? ., .| 63744.32: . F.R1i-r. in*x. -.r: i, r refill ~ ii`z. rx.1:^. »'; 3.1,?
  • 18. BUSOUEDII 18 -Mediosz se dispone de un deposito con mucho vino (mas de 100 litros . ..) y las onicas operaciones permitidas son llenar cada garrafa en el deposito. vaciarlas en el deposito y pasar contenido de una garrala a la otra, hasta que la primera se vacie o Ia segunda se Ilene. (En particular. no es licito suponer que se dispone de Otra garrala que puede contener exactamenle dos litros . ..) - El problema del granjero, el lobo, el carnero y Ia Iechuga. o Entrada: un granjero, un lobo, un camera y una lechuga se encuenlran en la orilla derecha de un rio. - Salida: todos ellos han pasado a la orilla izquierda del rio. -Medios y restricciones: se dispone de una barca que debe ser conducida por el granjero y que solo tiene capacidad para uno de los otros elementos: el lobo se comeré al camera si los deja junlos sin oompañia en uno de los Iados; el camera se camera la lechuga si los deja solos. Elerclclos. A partir de las siguientes descripciones de los problemas que se indican, detallar oon mayor precision Ia entrada, la salida y los medios de resolucion. 1) EI problema del viqjante. Un represeniante de comercio tiene que visitar una serie de ciudades viajando entre ellas por carretera. Dispone de un plano de la region con la inlonnacion de las dislancias entre las ciudades. Desea partir de la ciudad en la que esta para volver a ella tras haber visilado el resto de ciudades. pero habiendo hecho el minimo numero de kilomelros posible. 2) Las n reinas. Se trata de situar n reinas (siendo n un namero entero positive mayor que 3) del ajedrez en un lablero n x n (el nonnal tiene 8 x 8 casillas) de modo que no se "ooman" entre si. 2.2. Sistemas de produccion y busqueda. Si particularizamos la detinicion de problema dada en el apartado anterior del siguiente modo: - Entrada: una descripcion del estado iniclal del mundo. - Salida: una descripcion (parcial) del estado del mundo deseado. J RubnofRR, MWN) Bañares November& 15398- Cuma 96-97
  • 19. ruu _a en ; otro sec? E15 san : cnnsideradaie cam. epjeradñfesi 'lienriremus et eunceapmali que pamit& resetter; elpgprablenraipaarvl medium ; uni sistematis prniducnlñn. ha: : deden; p j -unaesrrategfatñe cnnrrrilzi artiiialrsnrjgiasrnfçta diri recnnnrrrnranrn-eçtnncién- Partaitmiñls Imnnnanree elsternasnile iprndncclñn Ie 13311316913146& ' armada. ieu ei! EUDIEXYG Gallus& sistema; mepanlsmn o. . motor de: “ayi ia asrama& -êl. “Dtññêêd nan : bilamana : ne ; a selartan; dagang: _ dari prabtema ninna : dada * tr irma; rincian: dar: -esraçin -tdie »munriicjs padamu. : eniendarnlzezmfslsletna : te-inpres sweetie azasi: puede erander? eneltgstacid? &lain para antigen Inennerannresf naquézeucede sl han: operadaresyppnrsibles; aeaplibarii ; iresnljuciñn dia& Lies 1615312116132: organisme. , sini: que pueden irranslannar jun estado: `n Ganeraiinante : seaiiistinguen en ; JEYKHDYES ; parte izquierda: ata! ? patrñn q enndicliifnir san& aristninnlniai iapllcabliidad; rie ilaa renta (se- rum emutan; aque- -sl ee: ;ranum : ia condition 1a 'mulia Havana: n ei apiiwie! ngerasain (o nsparania una. rerata ui operador
  • 20. BUSOUEDA 20 - Precondicién: descripcién parcial del estado del mundo que debe ser verdad para realizar una accion. - Instrucciones para crear el nuevo estado. Taxonomias de los Sistemas de produccion/ busqueda/ ostrategia de control: - Hacia adelante I hacia atrés I bidireocional - Irrevocable! lentativa - Informada I no informada Ventajas de los sistemas de produccion: -Separacion de conocimianto (reglas) y control (ciclo de reconocimiento- actuacion). - Modularidad de las reglas/ operadores: - no hay interacciones sintécticas entre reglas: - la oomunicacion se establace a través de cienas estructuras de almacenamiento comunes, que se denominan de modo genérioo memoria de trabajo. (No es estrictamente necesario que exisla una variable o estructura de datos explicita con esa nombre. ) - Control dirigido por patrones: v programas en IA necesitan llexibilidad: - reglas pueden dispararse en cualquier secuencia; ~ estado > reglas aplicablas > camino de Ia solucion. - Traza y axplicacién: ~ secuencia de aplicacion de reglas; - cada regla es una pieza de oonocimiento oon su justificacion para un cambio de estado. - Independencia del Ienguaje: J woman. Mimi. ) @Maros November! . 188-00180969?
  • 21. BUSCUFD/ l 2 i' - el modelo es independiente de la representacién elegida para reglas y memoria de trabajo; - es posible siempre que el Ienguaje soporte el reconocimienlo de patrones. - Modelo plausible del mecanismo humano de resolucion de problemas. lntérpretes generales de sistemas de produccion: - Lenguajes basados en reglas: - OPS5 (Brownston. en 1985. de CMU. en Common Lisp usa RETE): - CLIPS (C Language Integrated Production System) (de NASA, permite Ia integracion con lenguajes oomo C y Ada). ~ Lenguajes basados en logica: el mas exlendfdo es PROLOG. - Armazones de sistemas expertos: - EMYCIN; - en entornos de IA (KEE, KnowledgeCralt. LOOPS. .. .). - Arquitecturas generales de resolucién de problemas: - GPS (Newell. Shaw. Simon) 1963; - SOAR (Newell. Laird, .. .) 1987. 2.3. Representacién de problemas. Una vez decidido que el problema planteado va a ser resuelto por medio de un sistema de produccionsbusqueda en el espacio de estados. debemos elegir una representacion adecuada para el problema. Esto debe ser resuelto en tres niveles: - Conceptual. - Logico. J Qlm`l7l PR Alim J Hanara: : . Nbraññar 9, rm# . Cars. : : :w ; Jr
  • 22. BUSOUEDA 2 o Fisico. y en cada uno de ellos deberemos elegir representaciones para dos cosas: o Estados. o operadores. EI nivel Conceptual hace relerencia a qué oonsideramos oomo estado del problema y qué como regla u operador valido, pero independientemente de cualquier estructura de datos o descripcion de algoritmos que vayamos a usar. En el nivel légico se elige una estructura de datos para los estados y se determina el tormato de oodilicacién de los operadores (puede ser también una estructura de datos o se puede hacer prooeduralmente). Por ultimo en el nivel lisico se ooncreta para el Ienguaje de programacion elegido la implementacion de estados y operadores determinada en el nivel légico. Los niveles logico y fisico estan conlundidos en ocasiones y, ademas, la tase clave para un prooesamiento eticiente esta en el nivel conceptual. Por ejemplo. en el 8-puzzle se podria decir que el estado incluye inlomtacién sobre el material o el tamaño del lablero. etc. Sin embargo. nada de eso es relevante. Basla oon conocer la ”situacién relativa' de los digitos. En general. la nocion de estado elegida deberia describir: -todo lo que es necesario para resolver el problema: - nada que no sea necesario para resolver el problema. Para el problema del 8-puzzle: o Iocalizacion de cada casilla y el hueoo: o nada mas. Observese que, un vez lijado el nivel Conceptual, todavia tenemos muchas opciones en el nivel Iogioo: o matriz 3 x 3; - vector de longitud 9; - conjunto de hechos: {(superior-izda = 2). (superior-centro = 1), .. .}. J Rasio/ PR, MKDVU Bañares November! . 138-00180969?
  • 23. BUSOUEDA 27 (A su vez. dependiendo de las estructuras permitidas en un Ienguaje de programacion concrete. para cada una de ellas son posibles dilerentes elecciones. pero esto nos interesa menos: es mas un problema de programaclon que de Ik) En cualquier caso, la eleccion de la representacion para los estados esta muy ligada a la que se haga para los operadores, puesto que ambos elementos deben "oooperaf para la resolucion del problema. En cuanto a los operadores. deben ser tan generales como sea posible para asi reducir el numero de reglas distintas. En el caso del 8-puzzle: 04 x 9! operadores para pasar de un estado cualquiera a sus. oomo maximo 4, estados suoesores: 04 x 8 operadores que mueven cualquier licha arriba. abajo. derecha o izquierda; - 4 operadores que mueven el hueoo arriba, abajo. derecha o izquierda. Evidentemente, Ia Ultima representacion es la mas adecuada. La eleccion de una representacion para los estados y los operadores define implicitamente una relaclon de adyaoencia en el oonjunto de estados lactibles para el problema. A este oonjunto con Ia estructura de adyaoencia definida se le denomina espacio de estados. EI espacio de estados es una nocion clave en los sistemas de produccion, puesto que es el lugar en el que se va a desarrollar Ia bosqueda. y en el que se van a poder comprender las distintas variantes involucradas (en particular. las taxonomias: hacia adeIante/ hacia atras. etc. ). Un lragmento del espacio de estados para el 8-puzzle, donde se ha elegida oomo representacion para los operadores los 4 operadores citados antes. puede verse en la Figura 3. Veamos quo sucede con Ia representacion del problema de las garralas de vino. Conceptualmente. los onioos datos relevantes en cada momento para el sistema son las cantidades de vino que contienen las garralas de cuatro y tres litros (puesto que la cantidad de vino que haya en el deposito no inlluye en la resolucion del problema, oomo ha quedado tijado al explicar los medios de que se dispone en el problema). Los operadores sobre esos estados serian: - llena-cuatro: llenar. cogiendo del deposito, la garrala de cuatro litros; - llena-tres: llenar, cogiendo del deposito. la garrala de tres litros: J Ruoiixrkn, MANU Bañares Mancur& 1998- 0441809697
  • 24. BLkSOUED/ l 24 - vacia-cuatro: vaciar en el deposito Ia garrafa de cuatro litros; - vacia-tres: vaciar en el deposito Ia garrata de tres litros; -echa-Ia-cuatro-a-Ia-tres: echar de la garrafa de cuatro litros en la garrata de tres: -echa-Ia-tres-a-la-cuatro: echar de Ia garrata de tres litros en la garrafa de cuatro. ama: * mutagen . m o. ;gama / , I 4/ I. _n_ X. I `x 1313 4314314314314 143 ana ana ana : maa ana aa Figura 3 En el nivel Iogioo. un estado seria identificado como un par de nameros (x, y) donde. por ejemplo, x es el nnmero de litros que contiene Ia garrata de cuatro litros e y el namero de litros de Ia garrala de tres litros. En este nivel cada uno de los 6 operadores anteriores deberian ser especilicado como una regla. con una preoondicion (o premisa) y una accion asociada (o oonsecuencia). Por ejemplo: IIena-cuatro (x, y): precondicion: x < 4: aocién: oonstruir el estado (4.y). J Rabnowkn. umu Bañares Hammers? . 1993- Gurso 96-97
  • 25. BLlSCLtED/ i 25 Eierclcios. 1) ESpBCliiCaT como reglas el resto de operadores. 2) Dibujar el espacio de estados correspondiente, a partir del estado iniclal (OD) hasta que encontrois un estado objetivo. es decir un estado de Ia forma (2.y). Para estudiar ei nivel fisico. que es el mes cercano a la nmplementacion del sistema. vamos a analizar las estructuras de datos en Lisp. 2.4. Estructuras de datos en Lisp: vectores, registros, Iistas. 2.4.1. Vectores en Lisp. La funcion que permite constmir vectores en Lisp es rn; -_'-: »? arraju'. Esta funcion toma un unico argumento cuyo valor debe ser un namero entero positive: llamemos n a d: cho numero. Devuelve como valor un vector con n componentes que contendran un valor por detecto (que depende del entorno concreto con el que estemos trabajando y que sera denotado -: 'sri e- en las figuras). Atencion: los indices de los elementos en el vector comnenzan en 0 y terminan en n-1 (como en C: de hecho. todo el tratamienlo de vectores en Lisp es mucho més cercano al que se hace en C que al de otros Ienguajes como Pascal). Por ejemplo. [m . =. . a ~ ~1 r m ; s a : s 'r dependiente del entorno construye un vector que puede ser represenlado como aparece reflejado en Ia Figura 4. Notese que puesto que ei vector asi construldo no ha sido Iigado a ningun simbolo. ni pasado como parémetro, es un elemento que no puede volver a ser reutnlizado. <vd> <vd> <vd> valores por defecto en Ia impienrentacion Figura 4 . .I Antum PR . Hum J E'a~1,: .-. ::: Mrnvnvnéu-. ra [FEUI . ('. '.: _.rs.1:'. v;5.I. ?
  • 26. BLlSCLtFD/ i I 1.* Para acceder a las distintas componentes de un vector. Common Lisp proporciona Ia primitiva Ci ; e r, que toma dos argumentos: ei primero debe ser un elemento vector (es decir. creado por i'ii. 'ii~'. e;-r. ;1: I 4.1:) y el segundo debe ser un numero entero entre 0 y n~1 Sl n es Ia dimension del vector que es ei primer argumento. Por ejemplo, si consideramos que el simbol-o esta Iigado al vector que aparece en Ia Figura 5 tendriamos: taraf iii : :: A [dial u li : ::~ E O 1 2 V 15:; - iri 1 1 I A B C Figura 5 Para moditicar el contenido de aiguna componente de un vector utilizamos Ia primitiva : :Z r que es como : ata: salvo que su primer argumento no tiene por qué ser un simbolo: puede ser cualquier variable generalizada (ver Ia Figura 6), O 1 2 V -i-? a- a dll l 1 1 A B C Vanables generalizadas Figura6 Siguiendo con el mismo ejemplo. si evaiuamos: irérTf Ij mer' fii -1 i 4411-) 1 iii tendremos (ver Figura 7): 121 L' 21 t U fi : : ll] . .I RAKHYM PR . Nia-rr J Siwuran: .nhi-aintu-. rer 1211111 . (1'. urs.1:'. v; 5.1.?
  • 27. BUSCUFDA 2 .7 V in a a 10 A B C Figura 7 Para terminar esta breve introduccion a los vectores en Lisp, hagamos notar que el efecto que percibe el programador es que los vectores son transferidos como parémetros por referencia. Por ejemplo. si evaluamos: ` ` ' 1 ITP; -pr i m; I' 'a IU; T? r. r D1 V-HLHT T. 'I | :;>: Zt Coret *xsgtpc l. ) >: -E'. "1~: *IIZ'_`*; *:' y a continuacion I`: ~:'~: ',r_1 'ImaL: '~1-. arr. ~.'-, v' . Il 24 : ==i" Lfar, w+>. 'nf; er1*5 . ::PJ r: :;. u1'r; .:~ tendremos una siluacion como Ia reflejada en Ia Figura 8. 0 1 2 vm_. .n a a <vd> <vd> <vd> Figura8 Si evaluamos a continuacion: x. H H H L4 ljmgaiiL ; am-gu u' v- 1 , tendremos un proceso como el recogido en Ia Figura 9. por Io que el resultado observable para el programador es el siguiente (que puede resumirse diciendo que el vector ha pasado por referencia): I jlêf FHI . .I Antum PR Mw? ? J E'av1,: .-. :>. : . 'u_'h-r. v.'_*. u'. rt? _ unt& . (lursn: :: H 5.1.?
  • 28. BLlSCHJFD/ l it' 0 1 2 V rie-v- ii n in vectorih/ f >| < A T <vd> <vd> <vd> Figura9 2.4.2. Registros en Lisp. Los registros en Lisp toman el nombre de "structs" (estructuras). La primitiva para definir una familia de estructuras, todas reieridas por un mismo nombre. es ciaizrrimwr. Este elemento especra/ toma como argumentos cualquier numero (mayor o igual que dos) de simbolos. que no seran evaluados. EI primer simbolo sera interpretado como el nombre de Ia estructura y los siguientes seran los nombres de los campos en la estructura. EI valor devuelto por una Ilamada a : ie : :r rim: es el nombre de Ia estructura definida. Por ejemplo, Ia evaluacion de: I_ ui , V 24 L L L1 . g L l 1 L' 1 -g U L p L , L L , . l i; ji a 1 L1 ; ~' at» define una familia de registros, de nombre ; riziiz y con dos campos Ilamados a u", i: : y r, _ t uin; La evaluacion de una Ilamada a ae: * ar, r- iin-r, tienen varios efectos Iaterales. Entre ellos. la definicion de una funcion para Ia oonstruccion de registros de esa familia (el nombre de esta funcion se construye adjuntando i-i-iaiae como prefijo al nombre de Ia estructura; en el ejemplo anterior: i-i-iaiae Lgirri) y la definicion de funciones de acceso a cada uno de los campos de Ia estructura (en el ejemplo. liiirii am : ir y 1133111 i ; t«_i1i: :). Para oonstruir un eiemplar de una estructura, Ilamamos al eiemento especial de oonstruccion (como riiai; e l`_ITiL"CI en el ejempio) con un numero par de argumentos (se le puede Ilamar sin ningun argumento). Los argumentos que aparecen en lugar impar no seran evaluados (y son simbolos construidos poniendo ': ' como prefijo del nombre de los campos: en el ejemplo. :airxii o : r. ; r , Ilfil Los argumentos de lugar par pueden ser elementos Lisp cualesquiera y seran evaluando. pasando sus valores a ser las componentes de los campos del ejemplar de la estructura que es construido. Por ejemplo, Ia evaluacién de: . .I Hunian PR . Him J Elvisar. : . '`_'JI'JTvTTk`. f$7_ HEW . (Ciursn: :: vi : :If
  • 29. BLlSCLtED/ t 29 tiene un efecto que ilustramos en Ia F: gura 10. Ahora, para acceder a los campos de esa estructura podemos emplear los operadores de acceso ;113LO'3 _tapi o lili; ._~~r_ -_: i_.1i; . Por ejemplo: lf l itu* c» . ,1'. t~tir^ : -z l i- 'Hii Hbm x -ir--r- 4 autor . g Yo muh e <vd> w vanabms generalizadas Figura 10 Como hemos recogido en la Figura 10. Ia Iigadura existenle entre los campos y las componentes en una estructura debe ser inlerprelada como una variable generalizada. Por tanto. para modilicar Ia inlormacién almacenada en un camp: ) debe utilizarse Ia primitiva . au 2 como en el caso de los vectores, Por ejemplo (véase Ia Figura11): ' lzêeiñi ljlit: r:: i~', ir. .;liz, :il 'Hijab : :: ima till et iri l i l : :: ram *êt- Yo <vd> NADA Figura 11 Para terminar. hacer notar que las estructuras. como los vectores. podemos interpreter que pesan por relerencia como parametros. . .I RAKHYM PR . Nia-rr J E'av1,: .-. :~. : . '~: ii-x-. in: i:. r:7_ 1211H . (1'. urs.1:'. v;, :I. ?
  • 30. BUSCUFDA JE. " 2.4.3. Listas como estructuras de datos en Lisp. AI final del tema anterior ya hemos introducfdo de modo breve las Iistas como estructuras de datos. Alli exphcamos las operaciones de acceso r 1 rar y r»= .-"~. r y el predicado que permne decidir si una lista es la vacia: Dha'if]. Para construir Iistas utilizabamos las caracteristicas del bucle de lectura-evaluaciowescritura y el elemento especial ago-cc; que impide la evaluacién. Pero para poder dnseñar algoritmos de manipulacion de Iistas como estructuras de datos son necesarias operaciones de oonstruccion de Iistas. A continuacion explicamos las mas bésicas e imponantes. La primitiva mas. , es una funcion que conslruye una nueva lista al añadir el elemento que es su primer argumento como primer miembro en Ia lista que es su segundo argumento. La funcféh L1.: - toma cualquier numero de argumentos y construye una lista con ellos. Por Ultimo. .appaz-o-i es Ia funcion que concatena dos Iistas. Una cueslion que es frecuentemente olvidada por los programadores principianles en Lisp es que estas tres primitivas son funciones y. como tales. no tienen ningun electo lateral. En particular. no modiiican el valor de ninguno de sus argumentos. Obsérvese el siguiente comportamiento: Ij'_. -:_-: ~.; 11:31.. ; "IL Bl] _I = ==» l- 7.- 3] Véase en los siguientes ejemplos las diferencias de comportamiento entre wr har, y appênd. ' I': ::«rx: a ` 1: m] 'Hr ; :]~ II = ==>' l IF. ; 3 C; |_ l 1 1,; L ' u: L; :I ' -I L'- J; I- : I : : : 'i' l l: P. I* l E C : I ; I Iappf-PCJ ' [al 'Irn rñjll ~~~- [Pm H (f) Para terminar indiquemos OUOS operadores dB BCCGSO COITIO = .~f~. "`~r~1 y T h ' r rJ que permiten acceder. respectivamente. al segundo y tercer elemento de una lista. Por ejemplo: Ifhirfi 'ia n urjI`1 = ==& t Cbsérvese el siguienle comportamiento: umax , _.: -:u : :s ? JIL y el par de ejemplos siguientes: -_1 'la tzj-_I *W* _I J Hatur PR Mw! ? J Radmtz: .hhuzmbatr FI. r ? atw - (luas. ) : :va EJ?
  • 31. BUSCUi-'LIA J I 2.4.4. EI nivel fisico de Ia representacién para el problema de las garrafas. AI elegir una representacion fisrca en Lisp lo mas adecuado es aplicar los principios bésicos sobre Ia abstraccion de datos. En lo que sigue nos centramos tan solo en los estados. dejando de lado Ia representacion fisica de las reglas. Asi pues, lo mejor es aislar las operaciones de acceso para los estados, independientemente de cual sea Ia representacion tisica para ellos. A los estados (x. y) los denominaremos _ ; L ; a ; En este caso tan sencillo las operaciones son las habituales para tratar pares de elementos. Por ejemplo. una especiticacion podria ser: - (Julu: -_«_«r-. a:_r r. -,~_-~r,7r_. rr. ,;: p.g : .~--. ,gr . .;» ; devuelve Ia representacion del estado (ny): - n: »_u_~rJr-, Q-L r, ;.[. ,,~.4 »ajar r ; devuelve x si el argumento representa a (x. y): - u: 'Jas I _HL ; arr L . .r L7.; ;a car. .. 1 r 1; 1' . .r a; : ; devuelve y si el argumemo representa a (x. y): - u: ;1:. ,~rJr-~_ ; ~». _~»_x-Lr, a,. -«; ; . maa : wr L an. m . ..r ; si el estado era (x, y) lo modifica para construir (n, y) y devuelve el estado asi modificado como valor; - Lig-Im'. :~u, »_-. _m. ;_. -«; a.r ; _mg IQJJLLLILJ; m . .._| : si el estado era (x. y) lo modifica para construir (x. n) y devuelve el estado asi modificado como valor. En realidad. las dos ultrmas operaciones no son necesarias para programer el sistema de produccion (hasta con poder acceder a las componentes, para verificar las condiciones de las reglas. y con construir nuevos estados. por disparo de reglas). pero las incluimos para poder explicar cienas caracteristicas de las representaciones que seran necesanas en lemas siguientes. Ejercicios. Utilnzando los operadores anteriores. se pide: - definir una funcion . _~ r_ ; mju - 1 n r ; _ 41 que construya y devuelva el estado inicial para el problema de las garrafas de vino: - definir un predicado r; v. Ju; -uLv A . _~ L _ que a partir un estado decida si es o no un estado objetivo para el problema de las garrafas de vino. J Hatur PR Mw! ? J Hanara: : . Nkvuzméuzr 9, raiu; - (hrs. ) : :va : '17
  • 32. BLGCUEDA 32 Ahora el nivel lisico de representacion consiste en elegir una estructura de datos para los estados e implementar utilizéndola cada una de esas lunciones (las dos ultimas pueden ser en realidad procedimientos luncionales). Por ejemplo. si decidimos representar las tjtannafas por medio de registros podriamos delinir: [deistruct qarrafas trea cgatrol : ::> GARRAFAS tdeiun EDN5L[Jy%-gaIE; iuE in yl (make-garzafas : cuatro H : tres yk) z z z rjzcjirir: : T 2 r. ; E @ransi: A? ? latian nud1[iuJ-ga:14[aé lgazxufas ni tsetf iqarrefas cuatro garrafast il carrafaz = ==> MCDIFICA-GARRAFA4 En Ia ultima operacién hemos utilizado que en el cuerpo de un 'datum puede aparecer cualquier secuencia de elementos Lisp. que seran evaluados uno tras otro y el valor resultado de Ia Ultima evaluacion sera el devuelto por la Ilamada a Ia tuncién (se trata de un bloque impllcito: es lo que se denomina en la terminologla Lisp un _XJFLZHLIIZ impllcito). Obsérvese que Ia secuencia no esta encerrada en paréntesis adicionales. De hecho. seria un error escribir en el cuerpo de la anterior funcion: t[: :;[ igazzufas-suatzu qaxzgfdul ni garrafasi &Por qué? Elerclclos. 1) Completar la implementacién de las operaclones con esa representacion. 2) Utilizar una representacién con vectores (de dos elementos) e implementar en ella las operaciones. No es dificil repetir el proceso anterior para una representacion de las qtarr como Iistas. La unica oomplicacion reside en que si queremos interpretar los operadores de modilicacién en un sentido estricto (es decir, de modo que su parametro sea electivamente modilicado y no solamente utilizado para oonstruir un J Rinto. PR . Muro 'J Rani-m hbracroar 27, 1219 - (Lusa &visir
  • 33. BLGOZJEDA 33' nuevo estado) no disponemos de instrumentos para hacerlo. Por ejemplo, un cédigo como el siguienle: If-? Ieiznt rini-cilIfiuia-: rarralfaé Ifzjarrafas r. ; no tendria el electo perseguido (gpor qué? ). Se puede decidir entonces reconstruir el estado en lugar de modificar el que pasa como argumento. Pero en ese caso nwzrssn' fic& qarrnafa4 y n': c.--. :l1r`i»:3 qLarz-. arña3 son operaciones secundarias que pueden ser programadas en funcion de w. ?v. :vF: Zvit”1:}~'. -i- qarrnarias, Lj1.arr'. ar`. a-'1 y E. F I' Ea . E. .ji . Ejerclclos. I) Programar mjvztli : rss. LjLarr-afavl y mmm fic& *garrafra en términos de : :c-n r 1,13%? çrra. " ga r 12353 -1 y vjrarrria 3, entendiéndose que "modificaf es interpretado como "oonslruir a partir de". 2) Representar gsm-aria: : por medio de Iistas e implementar las operaciones pñmañassonstruye qarrafa5.ñarra5a? yqarrafal Las Iistas si pueden ser modificadas en Lisp al eslilo de lo que sucede con los registros y vectores. pero un uso inadecuado de esa posibilidad puede conllevar ciertas dificultades baslanle graves, por lo que esa posibilidad debe ser utilizada con precaucién. La razén por la que las Iistas pueden ser modificadas reposa en que los primitivas que hemos presentado como de acceso (fl rst, nzzl. r. r. 1 rd. rest) en realidad también denotan variables generalizadas, por lo que pueden ser modificadas de un modo deslructivo (irrecuperable) por medio del elemento especial 5 e: f. Por ejemplo, podriamos definir: Ifdêixu'. Ita-nihfica-qarrafaé Ifqarratkas r. )- (çag-LZ (51151. r. _r. _nLLq1`. J:; :: jl carrafasa z z z -- mr. : r . T 1 CTR-I1'; .=-. F:F1PF'F-. =1 con el siguiente comportamiento: T' Ijz-: eznq r; ' IL . :,I . I = == (1 . Jl [lN-*Jdi[lCél-'JJLLLIIJQ r. ) ~H : :: (4 . _'| q fi~ 3' I: *1 : TI Ejerclclo. Estudiar Ia representaclén de los estados para el 8-puzzle. Uegar hasta el nivel fisico de Ia representacién. J Runa. PR . tham 'J Hmm hbracroar 9. 193.9 - Cuma : :$587
  • 34. BUSOUEDA 34 2.5. Espacios de estados. Como hemos defnnido en 2.3. el espacio de estados es el coniunto de estados factibles para un problema junto a Ia estmclura de adyaoencia definida implicitamente por los operadores o reglas. segan Ia estructura que los operadores definan sobre el oonjunlo de estados hablaremos de arbol o grafo de estados. Las posibilidades relevantes (por oomo influyen en el proceso de busqueda) son: - Arbol - Grafo dirigido aciclioo - Grafo dirigido (no necesariamente aciclioo) - Grafo no dirigido Empezando por el final. Ia estructura de gralo no dirigido de estados aparece cuando si de un estado e se puede pasar a un estado -. =.-' por aplicacién de un operador siempre existe otro operador (o el mismo) que pennile pasar de e' a e. Este es el caso. por ejemplo. del s-puzzle con Ia representacién con Ia que venimos trabajando. Gon esta estructura. si no se roman las medidas oponunas, la busqueda puede caer en ciclos que impidan Ia terminacion de Ia ejecucién. Si no sa da Ia circunstancia anterior, existen estados e. e' tales que de e se puede pasar a e'. pero de e' no se puede pasar a e. En este caso. Ia direccion u orientacion de Ia adyaoencia es importante y se habla de grafo dirigido de estados. Por ejemplo. en Ia representacion dada para el problema de las garrafas. del estado (3.0) se puede pasar al estado (0.0) (aplicando el operador vacia-cuatro). pero no se puede pasar (directameme: esto es. por aplicacion de una unica regla) de (0.0) a (3.0). Pero. en general. que no se pueda pasar directamenle no significa que no se pueda pasar por una secuencia de aplicaciones de reglas. Eso posibilita Ia aparicion de ciclos (dirigidos) oomo el siguiente: (0.0) --> (0.3) --> (3.0) -> (0.0). En este caso. Ia aparicion de bucles infinitos en Ia busqueda que se citaron para los grafos no dirigidos de estados también pueden reproducirse y sera necesario tenerlo en cuenta en el diseño de estralegias de control. Si en el grafo dirigido no aparecen ciclos (dirigidos) hablaremos de gralo dirigido aciclico de estados. Para poner un ejemplo de un lal espacio de estados. pensemos en Ia siguiente represenlacién para el problema de las n reinas. Conceptualmente. J RubnofRR, MWN) Bañares November& 15398- Como 96-97
  • 35. BUSOUEDA 35 los estados son oonliguraciones del lablero en las que, como mucho. aparecen n reinas (pudiendo no aparecer ninguna: el estado iniclal). Tenemos n? reglas que consisten en poner una reina en cada una de las Casillas, siendo las unicas precondiciones el que no haya ya una relna en esa casilla y que todavia queden reinas disponbles (o dicho de otro modo: que en el lablero aparezcan menos de n reinas). En esla situacién es claro que se puede Ilegar a una conliguracion de ma's de un modo, pero que no podemos encontrar cic| os dlrigidos (puesto que cada aplicacién de una regla aumenta el numero de reinas en el tablero y nunca quitamos reinas). Si el espacio de estados es un gralo dirigido aciclico no apareceran problemas de no terminacion de la ejecucién oomo los evocados en los dos cases anterlores. Sin embargo. si en el sistema de produccion no se toman las precauciones adecuadas. un mismo estado (y todo el subgralo de sus descendlentes) puede ser explorado en muchas ocasiones con el consiguiente perjuicio en la eliciencia (en liempo y en espacio) del sistema. Por ullimo. si el espacio de estados es un gralo dirigido aciclioo en el que a cada estado se puede Ilegar solo de una manera tenemos el caso de un érbol de estados. Esta es la estructura combinatorial mas sencilla y la que produce menos problemas al realizar la busqueda en ella. Para encontrar un ejemplo. pensemos en la misma representacion para el problema de las n reinas que hemos dado en el caso del gralo dirigido aciclico. La unica modllicacion es que ahora para que una regla sea dlsparada es necesario que haya una y exactamente una relna en cada una de las tilas precedentes a la de la casilla que corresponde a Ia regla (o que el tablero esté vacio en el caso de reglas correspondientes a casillas de Ia primera lila). Esta Iigera modllicacion haoe que el espacio de estados sea un arbol. lo que simpliflca conslderablemente la labor de busqueda de una solucion. Este ejemplo muestra claramenle que la lase de diseño conceptual es la mas importante para conseguir un sistema de produccion elicaz. Es claro que un sistema de produccion que oonsidere los espacios de estados mas generales (los que corresponden a grafos no dirigidos) luncionara correctamente para aquellos espacios mas especlalizados. Sin embargo, en ocasiones, cuestiones de eficiencia aconsejan que las estralegias de control se parllcularloen para espacios de estados que son arboles o gralos dirigidos aciclicos. Otras clasificaciones de los espacios de estados se relleren a su simplicldad. su llnitud o inlinitud. y a la existencia de pesos en los arcos. Comenzando de nuevo por el final, los espacios de estados oon pesos en las aristas aparecen en sistemas de produccion en los que el disparo de las reglas se supone J RuhowP, R,M1roi"J Bañares Naverrñer? . 1998- 0441809697
  • 36. BUSOUEDA 38 que tiene un cosle. Habitualmente en estos casos los problemas de busqueda aparecen bajo la forma de problemas de optimizacién. Para hablar de espacios de estados infinitos (todos los que aparecen en los problemas anteriores son finitos) vamos a introducir Ioda una class de sistemas de produccion que tienen un interés teorico (son una fuente de ejemplos para ilustrar las diferencias entre distintas tipos de espacios de estados y distintas estrategias de control), historico (fueron introducidos por el légico Post en los años 30 para estudiar problemas de calculabilidad teérica y son Ia base matematica para los actuales sistemas de produccion) y practice (muchos sistemas importantes, en particular los relacionados oon el tratamiento del Ienguaje natural, estén directamente basados en ellos). Nos retererimos a los sistemas (simbdlioos) de reescdlura. En ellos los estados son palabras (secuencias de caracteres) en un cierto allabeto (los elementos del altabeto son los caracteres) y las reglas son del tipo siguiente: <cadenal> --> <cacte: ~.a2>. Una de estas reglas se activa sobre una cadena cuando esta contiene como subcadena a <cadena1>; el nuevo estado obtenido por aplicacion de la regla es Ia cadena inicial en la que se ha reemplazado una ocurrencia de <cadenal> por -zcaderzab. Por ejemplo. en un sistema de reescritura con altabeto m, 5 ; o y reglas A --> AA. .ats --> cualquier estado inicial que contenga una A tendré una rama infinita. Esto puede producir problemas de no terminacién de la busqueda de una indole diferente a los comentados en los casos de los grafos con cic| os. Pero que un espacio de estados sea intinito no signifuca que en él Ia busqueda no pueda tener éxito. En el ejemplo anterior. si el estado inicial es ; umu y los estados objetivos son aquellos en los que no aparece el caracter A. es sencillo enoontrar una secuencia de aplicacion de reglas que Ilevan del estado inicial al estado objetivo BB. En el mismo ejemplo anterior puede Verse que una misma regla puede estar sensibilizada sobre un mismo estado por varias razones distintas, lo que producir& varios disparos distintas de Ia misma regla sobre el mismo estado. Asi sobre ABAD la primera regla esta sensibilizada dos veces y los estados que se oblianen por los disparos son. respectivamente, AFsBAB y ABF-. .fsli En el caso anterior. los dos estados construidos son distintas pero puede también suceder que dos disparos distintas de la misma regla sobre el mismo estado produzcan un union estado. Es el caso de Ia primera regla del ejemplo. que es sensibilizada tres veces sobre Maung. Las dos sensibilizaciones correspondientes a las dos primeras ocunencias de A producirén como resultado un solo estado: FsAABAB. En este ultirno caso (cuando entre dos vértices aparece mas de una arista dirigida) se dice que el grafo de J maren. MANU Bañares Mansur? . 1998- 0441809697
  • 37. BUSOUEDA 37 estados es no simple. En la mayoria de las aplicaciones los espacios de estados que aparecen son simples (compruébese con todos los ejemplos aparecidos hasta el momento), por lo que en el resto del texto nos olvidaremos de la posibilidad de que algunos grafos de estados pueden ser no simples. Terrninamos este apartado haciendo una oomparacion entre la teoria algoritmica de gralos y la busqueda en Inteligencia Artificial. Los principales esquemas algorilmicos (recorrido en anchura. en profundidad. caminos optimos, algoritmos voraoes. etc. ) son comunes a ambos campos. pero en la teoria de gralos se supone que el gralo que se recorre, o en el que se busca. es explicitamente conocido. Se trata de un dato para el problema que habitualmente esta almacenada en una estructura de datos (lo que excluye el tratamienlo de gralos inlinitos). Sin embargo. la busqueda en espacios de estados no supone que el arbol o gralo esté previamente generado. No asume tampoco que se tengan que generar todos los estados (solo seran tratados los estados necesarios para resolver el problema). Esto es imprescindible si se tiene en cuenta que los problemas que ataca la Inteligencia Artificial suelen ser sumamente costosos en espacio y tiempo. Lo anterior es cierto incluso en los ejemplos que parecen mas inolensivos. Por ejemplo. el grafo del 8-puzzle tiene 5362880 vértices! (explosion oombinatoria). De hecho. en Ia busqueda en espacios de estados. ni siquiera es necesario que el espacio de estados aparezca de ningun modo reconocible dentro de los algoritmos (aunque el espacio de estados siempre sera un marco en el que entender el desarrollo de la ejecucion de los algoritmos). Si el espacio de estados es (parcialmente) almacenada o tenido en cuenta por el algoritma de busqueda. obtenemos Ia clase mas importante de sistemas de produccion I estrategias de busqueda: Ia exploracién en grafos de estados. (Habitualmente en este tipo de sistemas de produccion el almacenamiento consiste en Iistas de nodos: estados enriquecidos oon algun tipo de inlormacion que, en particular. coditica las relaciones de adyacencia: volveremos sobre esta importante nocion en los lemas siguientes. ) J Rasio/ PR, MKDVU Bañares November! . 138-00180969?
  • 38. BUSOUEDA 38 2.6. @Qué significa encontrar una solucién? Para alcanzar una solucion del problema debemos disponer de una descripcion de un estado deseado del mundo. Esté descripcion puede ser oompleta (por ejemplo. diciendo exactamente cual es el estado objetivo. caso del 8-puzzle) o puede ser parcial (describiendo algunas propiedades de los estados que consideramos objetivo. como sucede en el problema de las ganatas). En este segundo caso. la forma mas habitual de describir los estados objetivos es una funcion que reciae como argumento un estado y devuelve ve: dad si el estado es un estado obietivo y : also en otro caso. En general. Ia solucion consiste en una sewencia de operadores que transforman el estado inicial en el estado objetivo. Un ejemplo de solucién para el 8-puzzle (tal y como ha sido enunciado mas arriba) aparece en Ia Figura 12. Pero [Jl-Kiemas resolver de este modo dos problemas distintos: - EI problema de decision: consiste simplemente en decir si si o no se puede alcanzar el objetivo desde el estado inicial. - EI problema de explicacidn: en este caso se debe indicar como se ha llegado desde el estado inicial hasta el objetivo. En ocasiones. el estado objetivo mismo ya contiene toda Ia intormacion necesaria para resolver los dos problemas (por ejemplo. en las n reinas). pero en general no sera cierto (por ejemplo el B-puzzle). En este ultimo caso. el sistema de produccion debe disponer de un modo de almacenamiento de los caminos que van siendo explorados. En cualquiera de los dos problemas. como hemos dicho, Ia resolucion consiste en encontrar una secuencia de operadores que transtormen el estado inicial en el estado objetivo. por lo que tiene sentido estudiar en ambos casos las siguientes restricciones sobre las secuencias solucion: - Encontrar Ia secuencia mas corta. - Encontrar Ia secuencia menos costosa (en este caso se supondra que los disparos de las reglas tienen asociado un coste o. equivalentemente. que el espacio de estados tiene pesos en las aristas). J kantoran kami. ) Gaharu Nawrrura. 15398- 0441809697
  • 39. BUSOUEDA 39 o Encontrar cualquier secuencia lo mas rapido posible. En general, al evaluar una estrategia habra que tener en cuenta el siguiente compromiso: tiempo de calcula <= => calidad de Ia solucion. _snm Ham t m w i EH EH” DEH HEI H H HE EBD E E ' EEM-E-ewv 4% HGH HDE HGB DEG Figura 12 Una Ultima variante para todos los problemas de busqueda requiere no solo que se encuentre un camino solucion. sino todos los que existen (por ejemplo. en el problema de las n reinas no se tratarla de encontrar una coniiguracion del tablero en Ia que las n reinas no se ooman. sino todas las oonfiguraciones con esa propiedad). Estas variantes se denominan genéricamente problemas de Ia Bibiioleca Britanica (con tiempo y pap-el suficiente, unos cuantos monos provistos de maquinas de escribir serian capaces de re-escribir todos los volumenes del British J kantoran kami. ) Gaharu Nawrrura. 15398- 0441809697
  • 40. BUSOUEDA 40 Museum . ..). En el resto del texto, las estrategias explicadas no se ocupan de este problema (sino tan solo de encontrar un camino solucion). pero no es dificil hacer en ellas las modilicaciones oportunas para que cubran los respectivos problemas de la Bibiioteca Britanica. J RubuoiER. MrrofJ &Maros Nusantara r993-Cursb96-97
  • 41. SUSCUFD/ l 4:' TEMA 3. Estraleg las cie control no informadas 3.1. Esquema algoritmico genérico de busqueda. Veamos una primera aproximacron a un algoritma genenco de busqueda en un espacio de estados. Como ya hemos indicado al final del apartado 2.5. habztualmente los algoritmos de busqueda trabaian con eslmcturas de datos llamadas nodos que contienen en particular iniormacion sobre un estado. El esquema algoritmico sigurente esta expresado usando esas estructuras. PRINCIPIO 1 ABIERTOS : = (nodoinicial) RESUELTO : = FALSO 2 mlentras que ABIERTOS no es vacla Y NO RESUELTO hacer 3 N : = qurtar primer elemento de ABIERTOS: E : = estado asociado a N 4 si E es un estado objetivo 5 entonces RESUELTO : = verdad sl no para cada operador O hacer si O se puede aplicar a E 7 entonces crear un nodo correspondiente al estado obtenido por apllcacion de O a E y añadir ese nodo a ABIERTOS sl RESUELTO 8 entonces devuelve el estado objetivo (y si se requiere una explicacion. el camino por el que hemos llegado a él) 9 si no rnforma de qJe el objetivo no puede ser alcanzado FIN En los pasos 6-7 se encuentra implrcada la parte del sistema de produccion que dispara las reglas: el ciclo de reconocimiento (en el paso 6) y actuacion (aplicacidn . .l Fu'. the P R Mur? ? . J 63744.32:: Mfu-mnm-. r 31 Halli ~ [Tnrxri 5k; .Zlf
  • 42. BUSOUEDA 42 de O a E). EI modo concreto en que se organice ese oondicional dependera de las decisiones de diseño que hayamos adoptado previamente. En particular, esta version del algoritmo pareoe exoluir que un mismo operador pueda ser aplicado varias veces sobre el mismo estado (véase el ejemplo del sistema de reescritura tratado en 2.5). pero no es dilicil adaptarla para que cubra todos los casos. EI tipo de busqueda depende del paso numero 7 del algoritmo anterior. Se tratara de bdsquedas no informadas si el algoritmo no conooe nada del problema en concreto que debe resolver. En nuestro contexto eso quiere decir que el paso 7 se realiza con criterios independientes del dominio del problema. Un conoepto importante que aparece cuando la estrategia de control reposa sobre la nocién de nodo es el de arbol de bUsqueda. EI arbol de busqueda es la estructura combinatorial que va siendo construida en el proceso de biisqueda. Sus vértices son nodos y existe una arista dirlgida de un nodo a otro si el segundo es constmido a partir del primero en el paso 7 del algoritmo anterior. Esta nocién esta intimamente relacionada con la de espacio de estados, pero es necesario no conlundir ambas. En particular, Ia estructura combinatorial oonstruida en la ejecucién del algoritmo es siempre un arbol puesto que los nodos en el paso 7 son contruidos y no reutilizados. Esto es independiente de que nodos distintos (porque han sido construidos en distintos momentos de la ejecucién) tengan asociado el mismo estado. Sl esta situacién se produce, significa que en el espacio de estados hay cic| os (dirigidos o no) y por tanto que se trata de un gralo de estados y no de un arbol de estados. Otra nocion importante es Ia de profundidad de un nodo (en el arbol de busqueda): se trata del numero de aristas que tiene el camino que lo une oon el nodo raiz (ese camino es unico, por tratarse de un arbol). 3.2. Busqueda en anchura. En este tipo de btisqueda. el paso 7 del algoritmo anterior se particulariza del siguiente modo: los nuevos nodos son añadidos al final de la lista ABlEFtTOS. Asi se oonsigue que los nodos en ABIERTOS estén ordenados segan su profundidad. en orden decreciente: los menos protundos al principio. los mas protundos al final. La lista ABIERTOS tiene de este modo una tonna de acceso que Ia convierte en una cola (o tila de espera): los datos que primero entran (paso 7) son los primeras en sallr (paso 3). . ) Rubnowfin, kami. ) Gadara: November& 15798- Cuma 5-97
  • 43. 8 LlS CHJELIA -J 'J' Los nodos de igual profundidad se ordenan arbitrariamenle. En realfdad. en el algoritmo precedente, ese orden arbitrano es dnrectamente heredado del que exisla entre los operadores del sistema de produccion (en el bucle 'para cada operador O hacer). tdediante esta estrategna. el érbol de busqueda se va generando por niveles de profundidad. Hasta que todos los nodos de un nivel no han szdo revisados no se revisa ninguno del snguiente nnvel. Para facilitar la comprensnon del proceso de busqueda vamos a inlroducir algunos espacios de estados arlihciales (que no provienen de ningun sistema de produccion real), que seran érboles o grafos etiquelados por Ietras. Las Ietras representan los eslados. Por eyemplo. en Ia figura 1 aparece un érbol de estados, con estado iniclal I y con un umco estado obyetivo O. Figura 1 Inlroduciremos ahora una nolacnon para descnbir el érbol de busqueda. En el érbol de busqueda no se dnbujarén los nodos (cuya estructura. en general. puede ser compleja) sino tan solo los eslados (letras. en los egemplos arhlicnales) y junlo a ellos la informacnon relevanle sobre los nodos (en el caso de Ia busqucda en anchura. ninguna). La informacion relaliva a la adyacencia entre los nodos queda reccgada en el grético por las llechas dirigfdas. En el érbol de busqucda aparecerén VéfIICGS correspondnenles a todos los nodos que van siendo generados (es decnr. todos aquellos qJe en algun momento del proceso hayan estado en Ia lista de ABIERTOS) y se numerarén secuencialmente (con numeros subrayados) los nodos conforme son examinados. EI érbol de busqueda correspondiente a Ia busqueda en anchura en el espacio de eslados de Ia figura 1 ha szdo recogido en la hgura 2. Pueslo que los nodos de igual . .I Ruam PR Mun? J Samara: : . 'u_'lrr. vTjr. rf? _ IfPIW -(1urs.1:'. *i, '.| ,~'
  • 44. BUS CLtED/ t . .$4 protundzdad generados a partir de un mismo padre se ordenan de un modo arbitrario. es necesario indicar cual es ei criteno seguido. En el ejemplo. hemos expandido tos estados de "izquierda a derecha”. Figura 2 Ejercicio. Dibujar. con las convenciones anteriores. ei érbol de busqueda en anchura para el espacio de estados de la iigura 1, con expansion de 'derecha a izquierda”. Comparese ei numero de estados generados y examinados con respecto ai arbol de la iigura 2. La busqueda en anchura es una estrategia exhaust/ va: el recorrido por niveles examina todos los estados que son aocesibies desde el estado inicial. En particular, Sl un estado objetivo es alcanzabie. la busqueda en anchura io encuentra. La demostracion es sencilla: el estado obietivo aparecera en un cierto nivel de profundzdad y. en un numero finito de pasos [suponiendo un numero iinito de operadores y un numero iinito de posibles aplicaciones de un operador sobre un estado), Ilegara a ese nivel. Este mismo razonamiento muestra que la busqueda en anchura siempre encuentra Ia secuencia solucion mas corta (una de las que tienen el minimo numero de aristas). Atencion: esto no significa en absoluto que realice un numero pequeño de operaciones. Se trata de una propiedad de la secuencia solucion encontrada. no del proceso por ei que ha sido construida (de hecho, veremos que Ia busqueda en anchura puede Ilegar a ser extremadamente ineiicaz). De lo anterior se sigue que, si existe soiucion. incluso en un espacio de estados con cic| os, como el del problema de las garratas (la Figura 3 presenta parte de ese espacio de estados). el algoritmo de busqueda en anchura no entrara en bucles iniinilos, aunque si que expiorara en numerosas ocasiones Ia misma zona del espacio de estados. to que puede perjudzcar considerablemente su eiiciencia. . .I Rinto PR . Kmr J : Timur . .wii-nini-. ril 1121H - iiiursn ; If r. Ji
  • 45. BUSOUEDA 45 Figura 3 Elerclclo. Estudlar como serta el érbol de biisqueda para el problema de las garralas con Ia exploracion en anchura en Ia version que conocemos. Sin embargo. si el estado objetivo no es alcanzable y el espacio de estados contiene cic| os dirigidos, Ia bosqueda en anchura en esta version no lenninaré nunca la ejecucion. Como ejemplo, consideremos una vanante del problema de las garratas en el que las dos ganalas tienen capacidades de 4 y 2 litros y el objetivo es conseguir que en Ia garrala de cuatro litros haya exactamente 3. Es tacit comprobar que este problema no tiene solucion (las garralas siempre contendran un numero par de litros) y en él Ia bosqueda en anchura, si no tomamos las precauciones adecuadas. entraria en un bucle infinito. Elerclclo. Representar ese problema de las garrafas. Dibujar el correspondiente grato de estados. comprobar que el arbol de busqueda en anchura es inlinito. Por tanto, Ia version genérica explicada en el apartado anterior debera ser adaptada para cubrir todos los casos posibles de los espacios de estados. Sin embargo. esta version es muy adecuada, por ser mas eticaz que sus variantes. cuando el espacio de estados es un arbol. Este es. por ejemplo, el caso del problema de las n reinas, con una de las representaciones explicadas en el apartado 2.5. J RubnowRR, kami. ) Gaharu Nawrrura. 15398- Cuma 5-97
  • 46. BLGOZJED/ l J! ? Elerclclos. Consideremos el problema de las 4 reinas. Se pide: 1) comenzar a dibujar el espacio de busqueda en anchura con Ia representacion del problema del apartado 2.5: 2) modilicar la delinicion de regla sensibilizada para evitar que se examinen contiguraciones del lablero que no pueden llevarnos a una solucion: 3) estudiar oomo cambia el érbol de busqueda en anchura con la moditicacion del ejercicio anterior. En cuanto a la estimacion de la elicacia de Ia bnsqueda en anchura, podemos identiticar genéricamente la oomplejidad en tiempo con el numero de nodos generados (esta simpliticacion ignora. entre otras cosas. los costes de Ia verilicacion de Ia aplicabilidad de las reglas y de aplicacion de las mismas) y la complejidad en espacio con Ia longitud méxima que puede alcanzar Ia lista ABIERTOS. En las complejidades inlluyen dos lactores que son denolados b y d. EI nomero b es el / actor de ramiñcacion (branching factor): media del numero de nodos generados desde un nodo. EI numero d mide Ia profundidad del estado objelivo (aqui se supone que existe solucion): minimo del numero de aplicaciones de reglas necesarias para Ilegar del estado inicial a un estado objetivo. No es dificil entonces comprobar que Ia oomplejidad en tiempo es de orden exponencial Olbd). Puesto que en ABIERTOS se extraen los elementos de uno en uno pero se añaden (en media) de b en b. concluimos que Ia complejidad en espacio es también exponencial O(bd). Esta complejidad espacial hace que el algoritmo sea impracticable para problemas grandes. Por ejemplo. para el problema del 8-puzzle, b = 3. d = 20 y bd = 3486784401. En el caso de las garratas de vino. b=3.d=6.bd=729. En resumen. las caracterislicas de la busqueda en anchura en esta primera version son las siguientes. Si existe una solucion en el espacio de eslados (independientemente de Ia estructura combinatorial de ésle), la encuentra y ademas con Ia secuencia solucion mas corta. Si el espacio de estados es un gralo dirigido aciclico Ia ejecucion termina en todos los casos (si no existe solucion. habria que imponer ademas que el gralo tuese linito). pero puede ser muy inelicaz por explorar en muchas ocasiones las mismas ramas (en particular. en ABIERTOS pueden aparecer muchos nodos oon el mismo estado asociado). Si el gralo tiene ciclos dirigidos (o es un gralo no dirigido). el algoritmo puede no lerminar si no existe . ) Ridho. PR Muro 'J Ram-m hbrairoar 9, 193.9 - (Lusa SYL-v
  • 47. BUSOUEDII 47 solucion y si ésta existe el algoritmo puede ser muy ineticaz por las mismas razones que en el caso de los gratos dirigidos aciclioos. Por todo lo anterior. vemos que este algoritmo solo es reoomendable en el caso de que el espacio de estados sea un érbol. Por eso, lo denominaremos busqueda en anchura en arbol, aunque ya hemos visto que puede luncionar correctamente (es decir, encontrar una solucion) en casos mas generales. independientemente de estas consideraciones. podemos atirmar que la busqueda en anchura es demasiado ineticaz como para ser aplicada en casos practices reales. E| erclclo. Como ejemplo de que en un espacio de estado infinito si existe una solucion Ia bosqueda en anchura Ia encuentra. describase el érbol de bosqueda en anchura del sistema de reescritura presentado en el apartado 2.5. donde el estado inicial es Anita y son estados objetivo aquellas cadenas en las que no aparece rt. Para estudiar Ia implementacion en Common Lisp de la busqueda en anchura en arbol vamos a presentar dos apartados. En el primero. se explica como trabajar con variables locales y oomo realizar iteraciones (el algoritmo de 3.1 puede ser técilmente trasformado utilizando como auxiliar un algoritmo recursivo. pero razones de eticiencia desaconsejan esa trastormacion) en Common Lisp. asi como ciertas primitivas auxiliares que seran empleadas en Ia implementacion. En el siguiente. aparece el texto de un fichero evaluable Common Lisp oon el esquema del programa de busqueda en profundidad y ciertos ejemplos de tuncionamiento. Para tavorecer Ia ponabilidad del lichero, los comentarios han sido escritos sin acentos y sin los caracteres especiales del Castellano (ñ, .. .). 3.3. Mas sobre Common Lisp: variables locales, iteracion, miscelénea. Imaginemos que queremos intercambiar los valores (globales) de dos simbolos x e v. - 3. | l II ll . v. ff) > (setq x 8 (I! ) l- (soz-: q K" 5) ---> 4 Podriamos hacerlo utilizando una variable global tmp con Ia siguiente secuencia de instrucciones: J RabnouPR. MmfJ Bañares Hammers? . mss- 001509597
  • 48. BUSCNJED/ l Ja' | | | | | | l". lsetq imp xl | | l| || Lru [zaLq X yl O) laetq y : mpi **"> &Podemos hacerlo con una Unica evaluacién? Para ello necesitamos oomponer secuencialmente varias instrucciones Common Lisp. Esto es lo que permite hacer la primitiva gfrtvihtj n (recuérdese que el cuerpo de rZlOfLltl es un _: ~r~: ~j: .r: ' impllcilo). Se trata de una funcion que pennile oonslruir un bloque de sentencias: cada uno de los objelos que son sus argumentos son evaluados. devolviéndose como valor el del Ultimo objeto evaluado. Por ejemplo (estamos suponiendo que vamos evaluando todas las expresiones desde el principio del apartado): lprnqr (setq tmp xl (SULQ X yl setq y tmp? ) Sin embargo. Ia anterior solucion no es tolalmente salislacloria, pues Ia variable global r . Tp habra cambiado su valor deflnitivamente. lo cual es un electo lateral que no estaba especilicado al enunciar el problema al comienzo del apartado. Sl queremos tener una version mas segura debemos ser capaces de definir bloques de sentencias con contexto local. Esto puede Iograrse utilizando Ia primitiva 19.'. Asi para resolver el problema anterior, podriamos evaluar: k [le: [(thp xl) (5uLq x yl lsetq y tmpll = ==; P lmp : ::> 5 Notese que el valor de Lrlg. : al terminar Ia evaluacion del ; a -_ es el mismo que habla antes de Ia evaluacion: durante Ia evaluaclon del ; et el valor localde '. l'ly ha hecho sombra al valor global de tmp. pero al terminar la evaluacion Ia Iigadura local ha sido desactivada (es el mismo efecto que puede observarse con Ia Iigadura de los parametros lormales durante la Ilamada a una funcion dennida con . asya m). Obsérvese también que el cuerpo del le; (el texto que sigue a la Iigadura de las variables locales) es un prrgrgr'. impllcito (sin paréntesis adlcionales, por tanto). Por altimo. véase que el primer argumento para 1 s: L. que no sera evaluado (eso impllca que le'- es un elemento especial). es una lista de lislas (una lista de Iistas con dos miembros en las que el primer miembro es un simbolo. para ser mas precisos). Ello J Paltrow PR . mm 'J Bañares ? ulorarrbar 9. 1217- (Lusa E154??
  • 49. BIBOUEDA 49 es debido a que en un le: podemos crear cualquier numero de Iigaduras locales. Véase como ejemplo la siguienle funcion que calcula la suma del doble y el triple de un namero dado. > (defun suma-d-t (x) (let (ldoble l* 2 xll (triple l* 3 xl) l (0 doble triplelll Es importante entender oomo se comporta el evaluador respeclo a la lista de Iistas que es el primer argumento para Iec. Se procede a evaluar cada uno de los segundos miembros de las Iistas y tras ese proceso de evaluacion se realizan las Ilgaduras locales de los valores y los simbolos. Obsérvese el sigulente ejemplo: > (setq x 'exteriori = ==> EXTERIOR > (let ((x 'interiorl (Y xl J (lis: x yl) ---> (INTERIOR EXTERIOR) Por ello, no es posible reutilizar en el primer elemento da un let: una variable previamente definida en ese mismo let. Por ejemplo. la siguiente versién de la funcion anterior es incorrecta: > (defun suma-d-t (x) (let (ldoble (' 2 xl) (triple (4 doble xll ) (+ doble triplelll porque el valor local de doble todavia no es conocido cuando se evalaa (+ doble x) . Para conseguir el electo deseado se pueden anidar dos let, como en: > (defun suma-d-L (x) (let (ldoble l' 2 xlll (let lltriple lt doble xl)) (+ doble triple)))l o altematlvamente utlllzar el obleto especlal te: sr que se comporta como let salvo que las Iigaduras locales. entre los valores de los segundos miembros y los simbolos. se producen en orden seouenclal: se evalua el primer segundo miembro. se realiza la Iigadura con el primer simbolo. se procede a evaluar el siguiente segundo miembro. etc. Véase una nueva version correcta de la anterior funcion: JRMwIRRAmmfJ&Maw Mmmñwarñw-ama%07
  • 50. BUSOUEDA 50 (defun suma-d-t lxl (leL* ltdoble l' 2 xll (triple (+ doble xll ) (0 doble triplelil Veamos ahora una primitiva que pennile la realizacién de iteraciones en Common Lisp. Se trata del bucle do. Supongamos que deseamos pasar las n primeras componentes de un vector a una lista. Una posible delinlcion seria: > (defun vector-a-lista (V nl (let ((1151 (List ll) (do (li O ll i l))] ((- i n) lista] (setq lista (cons (aref v il listalllll En primer lugar usamos Ia primitiva le: para ligar Ia variable local ; isza con la lista vacla. Para construir esta Ultima Ilamamos a la funcion : ls: sin ningan argumento. (Analogamente podriamos haber empleado nil o [l . l EI cuerpo del le: esta constituido por un bucle do. Se trata de un elemento especial que evaluara selectivamente algunas partes de sus argumentos. En primer lugar nos encontramos con Ia lista de variables que dirigen el bucle: i (i Cl i- i 1) l l . Se trata de una lista de Iistas. al estllo de let, pero ahora las Iistas intemas tienen tres miembros: un simbolo (i en el ejemplo), un objeto de inicializacion (0) y un objeto de actualizacion ((+ i 1)). Al entrar al do se evalaan todos los objetos de inlciallzacién y tras esa evaluacion se realizan las Iigaduras locales (al do) de los valores a los correspondientes simbolos (obsérvese que el comportamiento es mas parecido al de let que al de let ~). Una vez realizada esa lase de inlciallzacian, se procede a tratar el segundo argumento del do (en el ejemplo. i (= i n) lista) l, segundo argumento que denominaremos clausula de parada. Se trata de una lista con dos panas bien dilerenciadas. EI primer miembro (I: 1 nl ), la condicidn da parada. sera evaluado. Si su resultado es ”cierto” (es decir. es distinto de riil, Ia lista vacla) se procede a evaluar el resto de elementos de la clausula de parada. que denominamos cuerpo de la clausula de parada En el ejemplo. solo aparece el simbolo ; 157.3. que sera evaluado y su valor sera devuelto como valor del do, que terrninara de ser evaluado. En general el cuerpo de la clausula de parada es un proqn implicito. Si Ia condicion de parada se evalaa a ni 1 se procede a evaluar el cuerpo del do que es el texto que aparece desde que se cierra la ciausula de parada hasta que se cierra el do. En el eiemplo, se trata solo de un elemento Lisp: (setq lista Icons [are: v i) lista) i. En general, se tratara de un proqn implicito. Una vez evaluado el cuerpo, se procede a evaluar los objetos de Jñww/ RRAmmfJGMwn Ihwmuwarñw-&mawar
  • 51. BUSCNJED/ l 51 actualizacién (en el ejemplo: l - 1 ; :-) y tras la evaluacién de todos ellos. sus valores son Iigados a los simbolos correspondientes. procediéndose a continuacion como tras la inicializacién. Realioemos un par de observaciones sobre Ia luncién elegida como ejemplo. En primer lugar, nétese que Ia asignacion del cuerpo del bucle u: sem] ; ii-Z . a (Cc: .'13 : :u-er i; ;scan modifica Ia Iigadura local de Lana creada en el ; et y no otra global que pudiese existir. Como muestra el ejemplo, no es oorreclo identllicar le: con variables locales y q con variables globales. puesto que . zzetcq lo que modilica es el valor del simbolo en el contextc active (que puede ser local o global) y no en el conlexto global. Por otra parte. al utilizar para ir ampliando Ia lisla la primitiva rrcz-r. resultaré que los elementos aparecerén en Ia lista en orden inverso a como aparecieran en el vector. Si deseamos mantener el orden de aparicion de los elementos. podriamos utilizar en el cuerpo de la clausula de parada la primitiva que es una funcion que invierte los elementos de una Iista. utilizando el hecho de que el ido puede tratar con mas de una variable en la lista que es su primer argumento, podemos escribir una version dilerenle de Ia anterior funcion en la que no aparece le: y el cuerpo del d: : no contiene ningan objeto Lisp: 117195111'. "reuzt-: -r-a-llsléa (v n) (Liu [(1 -Ll l+ i 1M [Ilsta (lis: ;I (triana (aru-f i] list-ai) l ll? 1 n] (reuse-rise l13.t. a|: ~', n) Obsérvese que si esta version es oorrecla es debido a que todos los objetos de aclualizacién son evaluados uno tras olro anles de realizar las nuevas Iigaduras. Notese también que hemos utilizado Ia primitiva reuse-r descrila mas arriba. Terminamos esle apartado oon una serie de procedimientos de entrada/ salida y olras primitivas que seran utilizadas en el programa cuyo texto aparece en el apartado siguiente. Vamos a inlroducirlas por medio de un procedimlento que. a partir de un simbolo leido desde el teclado. imprime otros simbolos en la pantalla. Se trata de un procedimlenlo que simplemente procesa un objelo Lisp leido desde el teclado. Obsérvese que no tiene argumentos. Pueden deflnirse lales subalgoritmos cuando las entradas van a ser leidas por el teclado. si se usan variables globales o cuando la parametrlzacién depende de las funciones o procedimienlos a los que se Ilame desde su cuerpo. A continuacion encontramos la primitiva de escritura en panlalla Firrrriat. Se trata de un procedimiento que tiene al menos dos argumentos. Si el J Ramuan PR . mm 'J Sadam& marmer 9. 1217- Cs-. rsafabñslf
  • 52. a_ a asian d (ipar délectd; 'Ia (mamalia), - E515" ; asri al valor dBWBIflliifnDf sa. : *El angunan argumantni : laba sar una cadena da: caraclsras (delimilada par : mmillasjl qua sa: denomina : cadena dia dali ” i i 'i safari sanitasi Illetalmsnra en pantalla. llfas (caracteres (ua control? ? »quia (san: pratama& al caracter- ; rasanradq En al ejemplo. ; aparacai lali; IIs-i nnnlmlf ; E a (bananas salt& ada lina: : al l i i" a " “ “ aina: sa: , mass saran* evaluados; sus svalaras subcadena& ma narraspnnrñigntas. illléasa usa; an: .al pbjexjnl t ; liwa/ Susila (entrada: Entrarrlril! illdetun ; stagnasi i? ! y _ _ *Inlazndnzrza una( marga! : twin. " gara »keningnya (flat iltannrada [Kaldlsil lai; Entrada: .. igauan saat: : *agama *wa 3,19 *'; nf*'<1 (galatama-pl : zaman y i a. lancar. ; ` a s rataan &la; (gulali: 'igauan la: *gatau ; u ; print &running; r& @print insan lai: ) i iprdmlnta! J-l fJI-? lrzll ? Sigjjiéndaisn El cnarpriszda pragnntin ? Kasim praggn: lmpllhllrmencantramnslm lai: an( sa! : entrada . aja ligarlarrznnii s] vçresullarlcr: (amalia pm' _ ban” lanai s “n ulilizarnnsv . aiyprlmilivaxaql, (Samara darun-az. ?rim similar a lpems- quan( less mas! at? :la. lquaremnala-ss; mm >7
  • 53. BUSKXJEDA 53' igualdad de un simbolo con otro objeto Lisp (este es el caso en el ejemplo). Este 1 r tiene dos ramas que son sendos prziifjti. Esta es una de las escasas estructuras Lisp en las que es normal encontrar un prczqn explicito: -. 5 no puede tener mas de tres argumenlos. En la rama "entonces" de ese oondicional, pedimos una conlirmacién de si se desea terminar Ia evaluacién. Empleamos para ello Ia primitiva ; s-«: ::'-r. -{: que es un predicado que lee del teclado un caracter. Si Ia tecla pulsada ha sido devuelve z. si : i devuelve nn y en cualquier otro caso vuelve a solicitar un caracler. Si introducimos n, la rama "si no" vuelve a llamar recursivamente a preajiglita. Si introducimos la rama "si no' se encarga de iinalizar Ia evaluacion. La primitiva rasul-strai- es como reaci salvo que lee un caracter en lugar de un simbolo. numero o Iista. En el ejemplo, se pide que se pulse la barra espaciadora para evilar el 'eco" del caracter tecleado. pero oon cualquier otra lecla Ia evaluacién también lerrninaria. Por ullimo. aparece una Ilamada. sin ningun argumento. a Ia primitiva 1 ; ie Esto es hecho para evilar que el caracter pulsado vuelva a aparecer en la pantalla. puesto que walrzea. ) no devuelve ningun valor. Se usa cuando queremos que un subalgorilmo sea realmenle un procedimienlo (es decir, que no devuelva ningun valor) y habitualmente con operaciones de salida en las que no queremos que Ia parte de escritura del bucle de leclura-evaluacion-escritura añada nada en Ia pantalla. En particular. puede ser interesante usarlo tras un i: t-z--rr-uar. r. .. .i para evilar que el valor devuelto r: 1 1 aparezca en pantalla. La rama 'si no" de nf (eq esitrazzha 'fii-Ni . ..i es Ia que realrnente procesa la entrada. Se trata en esencia de un oondicional (ca . e.. ~;-) tras el que se vuelve a llamar recursivamente a [i-1'e31i_l| _1nt El primer argumento para el elemento especial : :asar: - es un elemento Lisp que sera evaluado. Su valor sera empleado para compararlo con las claves que aparecen en las clausulas 03.525. EI formalo de una clausula : :jg-wae es: una lista cuyo primer elemento es Ia clave. que no sera evaluada (por ello es conveniente que las claves de los mas: : sean simbolos) y a continuacion tenemos el cuerpo de la clausula. que sera un : :njn implicito. EI valor obtenido por evaluacion del primer argumento de sera comparado (con eq) secuencialmenle con cada una de las claves. Si es igual a alguna de ellas, se procedera a evaluar el cuerpo de esa clausula y el valor devuelto (por el 'girlitljlf', impllcito) sera el valor del terminando Ia evaluacién del (es similar al : ::. _=. -:. e de Pascal y diferente del TVrJlTCTl de C). Si no hay igualdad con ninguna clave. el case: - devolvera ni 1. Para evitar esta situacion se puede utilizar Ia clave reservada ~: :-r_r; e:-r'. <;5~e: - que hace que el cuerpo de su clausula siempre sea evaluado si se Ilega hasta ella. Esia posibilidad ha sido utiiizada en el ejemplo. 7 J Partner PR . mm 'J Bañares ? thunder f? . 1211- Corsu 51597
  • 54. BUSOUEDA 54 Como ultimo oomenlario al ejemplo, Obsérvese que en algunos cuerpos de las clausulas del case aparece la primitiva print. Se trata de un procedimiento de salida, pero sin lormalo. Evalua su argumento y. como eleclo laleral, imprime el valor en pantalla. Otra diferencia con format es que el valor impreso sera también el valor devuelto por Ia Ilamada a print. Asi. obtendremos resultados que pueden pareoer exlraños: > (print 'aqua) AGUA = ==> ASU& Es decir. veremos en pantalla dos veces el simbolo AGUA: una vez escrito oomo electo lateral del print y otra escrilo como su valor por la parte de escritura del bucle de Iectura-evaluacion-escritura. Si quisiésemos tan solo escribir una vez en pantalla serla mejor evaluar: > (progn (print 'agual (values)] AGUA ---> "nada" O en este nivel. bastaria hacer : > 'aqua ---> AGUA Sin embargo. esta Ultima solucion no seria adecuada en el case de Ia funcion que estamos comenlando (gpor qué? ). 3.4. Texto del lichero SEARCHLSP. ; ;; Bangunan nn Ancnura nn arnnl ; ; Esquema menerics de busqueda: h. . 1 (list lcrca nodo iniciailjij idm ile; :sdm iflrsi ABIEPTOSJ (tirsa AB-= w '3TOS) rrnrano ohjnrzvh, 'YDSF 1 ur-~o-enoontradal zoluclon : I Hu : naraon nn nnnn nl nndm1;J ~ uji: lexpuñdir &edu ei RUdUl irrsr AEIERTCSI); l; nforna: -9n rrccesc huzqaeda el nodulili ; ; na: fuhczoncs namoradas cn : sc alqorztna q: n:rico pucdch ccpchdcr ; ; del L w de busqueda, dei probiewa a resuive: ; ins d Sluuei ; ; dc d; nnnn nznpranai [par njrmp. n, C. nada an rnprnscntncznn nn Ins ii ncdws). ii ldcfur : ren nad: xnrcxai I) . ..I > nad: ; Euuslrsye el noda inicial para çuwcrrar in Uusqeeda. Jependeta de Jnmw/ RRNMmfJ6wwnu hbwmuwarñw-am9597
  • 55. avsousm u ; cual os la nstructura di los nodos y tambicn dnl prablcla, las concrctamcntc 7 del estado inicial del problema. ;1 ldefun expandir-nodo (nodo) . ..I --> lista de nodos Devuelve una lista con 108 nodos creados a partir del estado asociado al nodo quo cs su argumento. Si ninguno tngla esta sensibilizada para asc estado, se devolveta la lista vacio. Este funcion : ecoqe el aplicador de reglas, el clclo roconocinlento-actuaclon. cubra el bucle xnterno del algoritmo generico, el paso 6 y parte del paso 7. Depende del problema y de la estructura de los nodos. u. u n nu -4 in ; ldelun reozqani: ar-nodos-a-expandir (lista-nodos-nuevos lista-nodos) . ..) --> lista de nodos Tama COIO argumento: dan Iistas de nodos (tal vez vaciaa) y las rearganiza para devolver una lista de nodos. Esta funcion recoqe la parte nas importante del paso 7 del algoritmo y ca la quo determina ol tipo do busqueda quo estamos realizando. Por ejemplo, en la busqueda en anchura en arbol la funcion no depende de ninguno otra cosa y su codtgo serta: u. m u u. u; u. cs s. (darun reorqanlzar-nodos-a-expandir (lista-nodos-nuevos Ilsta-nodos) (if (ondp lista-nodos-nuevos) lista-nodos 5 si no hay nodos nuevos la lista ABIBRIOS es la de antes (appond lxata-nodos lista-nodos-nuevosl)0 3 en otro caso, los nuevo: nodos se an~nden al final de la lista obsorvoso quo on la actualizacinn do 13133705. sc llama a reorqanlzax-nodos-a-expandir con segundo argumento (rest ABIERTOS), con lo que ae consxgue 'e1iu1nar” el prxmer nodo en ABIBRTOS, que ya habra sido examinado y expandido. Notese tambien que la organizacion del bucle hace que sl la busqueda termina sin exlto, el valor que tenga la variable ol-nodo no sea toallonto un nodo sino ol simbolo NIL (ol 'priner elemento' de la lista vacla! . ioindonainnunu nuwun-ms. 3: ldefun estado-objetivo? (estado) . ..) --> T o Nil ; Este G5 el predicado que decLde 81 un EBCACO G8 un objet1vo. Depends I cxclusivanonto del problema. : : Idefun estado-do-nodo (nodo! .. .) --> estado s Es la funcion que permite acceder al estado asociado a un nodo. Depende 7 exclusivanente dé La eleccion de 1a GBCIUGCUIQ para IO! ROGOB. ; El uso comblnado que se hace de estas dos ultimas tunclones y el : colportaniento del DO permite no utxlxsar una variable como RESUELTO ; que apnrecia algoritmo generico. yg ldofun solucion-no-cncontrada (I . ..) --> 'indcfinido“ ; Se trata de un procedimienlo Ilnal que no es llamado para obtener ninqun ; valor (por lo que su resultado queda indefxnxdol, sino para consoguxt un 1 efectn lateral: la impresion en pantalla de un menaaje que indique que ; la busqueda no ha tenido exito. Depende de la elecclon de dssen~o del J progtamadnr (puedo quoror dar ciorta information sohro ol proceso do ; busqueda), pero un codlgo qenerico podria aer: (defun solucion-no-enconttada 1) (IOIMQL C '~~tBuaqueda termLnada 810 Hib? ! GOCOHCIEGO un 081660 ob]et1vo. ') tvalunsj) : ldefun escrtbe-solucion (nodol . ..) --> 'andetinido' Otro procedimiento final que infornara del resultado de la busqueda, en el 0380 en que un estado objetivo ha sido GHOODIIGGO. Se : uponn qua su argumnnto ticnc asociado un Istado objetivo. Aunque ol procedlllento en general depende: : de clerlaa decisiones de dlsen~o, SG PUOUO COU$1d0I8U UNI VGISZOH generic: QUO PZOQUHCI 8] $010 $0 desea conocer cual ho sido el estado solucion alcanzado (problema de decision) o ai tambien se quLere saber cual es el camino seguido hasta oncontrarlo (problema do oxplicacion). En csto caso un codigo puedo scr: uuunsuqsuqauu. (darun aacrlbe-solucion (nodo) (format t '~i Respond: si desea ver el camino solucion: "l (ir (y-or-n-pl (ascribn-: amino-solucion nodo) (escrlbe-soluc1on-sin-camino nodo)D) J Ebo/ ER. Mav/ J bahwa Namum. ma- Camus-O?
  • 56. avsousm u 7: ldelun escrlbe-camino-aoluclon lnodo) . ..) --> 'lndetinido' ; Procedlilenco flnal que muestra on pancalla el camino aolucnon enoontrado. 5 Depende de cierto: decisiones de disen~o y. en particular, de la estructura ; de los nodos. ; Idelun esczlbe-solucion-ain-camino (nodo) . ..) --> 'lndezinido' 7 ; Depends de olertas decisiones do d1sen~o. pero como codnqo generlco se 3 podria tarot: (dofun osorxbe-solucion-sin-camino (nodo! (format t '~t~$ El estado objetivo alcanzado ba aLdo: ') (dibuja-estado (estado-de-nodo nooo)D (values! ) ;3 En eso prooodiuionto so usa: F3 ldelun dibuja-estado (estado) . ..I --> 'indelsnldo' ; S9 trata do un procodimiento auxxlxar quo muestra on pantalla una ; repreoentacion grafica de un estado. J: ldofun infornocion-proceso-busqueda (nodo) . ..) --> 'indofinido” Procedinlento auxilsar para eyuds: a comprender el nodo de znncionamiento de la busqueda. Puede sex ooaplojo. pero una version simple generxca podria ser: u. n nn (dcfun informacion-proceso-busquoda (nodo) (dibujo-estado [estado-de-nodo nodo)l (read-char)I : Espero que se pulse una tecla tras escribir el ultzmo estado ; examinodo. 1; EJEKPLOS 'kkrxrlcxnnzs'. ; Los operadores eaten 'camu! Ladoa“ (no se trata de verdaderos sistemas de produccxon) u no u. u. Colenzamos decidlendo laa componentes de los nodos y el nodo icabocorasl do accodor a ellas. asi como do construir nodos. lkecuerdese que 'estado-de-nodo' ye ha sido Iljedo mas arriba. ) u; u. na u 1a u. s. u. ; VGIOB o alnacenat en on nodo la infornacion acer: : de au nodo padre 3 Iel nodo inicial 00 : endra padre, pero conpletazemoa ese campo COD NIL) ldetun padre-de-nodo (nodo) . ..l --> nodo to NIL) no u. (defun creo-nodo lestado padre) . ..l --> nodo , Construye un nodo a partir de un estado y de su nodo padre (o de NIL, ; on ol caso del nodo inicial) o u; s. ; ; Una vez oetermxnada la estructura abscracta do los nodos, olegzmos n una repzesontacion para ellos. Bn este caso elegimo: uno zepresentacion ; ; con reqistros. (delatruct nodo padre estado) 3; Los tres operadores quedan en est: caso: (dofun ostado-do-nodo (nodo) (nodo-estado nodo! ) (defun padre-de-nodo (nodo) (nodo-padre nodo)) (detun cres-nodo (estado padre) (make-nooo : padre padre : estado estado! ) ; ; Supondrenos que en todos loe ejemplos el estado iniclal es ; x ol simbolo i (darun crea-nodo-1n1c1al (J (area-nodo 'i NILD) (dofun oxpandir-nodo (nodo) (do tlllsta-estados lexpandir-estado (estado-de-nodo nodol) J Ebo/ ER. Mav/ J bahwa Namum. ma- Calcio-O?
  • 57. Iim; Ilsta-Instalasai! ll-llllzeilcuê& *Hill I f T 7 , , _ 17 _. “f, . Itiliiiñitidatls: 1163331? ilangin éllllialzaastaibal 1 . btiéaaiiiç I. ; aiguienté ; antrian u: : gmmguaéVdaflLmial vlsspacilu ada : :lansia 316513! -iasd ; ini ; dali itbnl iiaxaiitiildaifs TT a: :lnxztartn m; sama: * mm 1a J. m. . *nn untu* au é sl : lam : :g &msih; *aux-s 'IEYILIILEYIIIN, ;agaman- ap; *qaiilqdqi N11.: ._ 255 en quan atau : :anda nantangin: : vgnrwgl ; nlgczumg &Etiam rumahlily& *ttgstaiqj a &statik mingñuimnn &human; :-rue-nana &EHHH 'HL nn 111513111: : saatnya iii-E' vi : :unt: : ? IERGEEJL-ñiz-IHDHQI 11161161 'IIITIéJ lagian : :shadow »gprlnn : ancam: una Qjélplbj isih? il; ; Zil EEEIIEHIIIKI! . 5131111311611& t-gatacl! **Iggçligdbl in! ? 3 Iigil? h? 95.111] _ . &nurunin wiguna* [1]] nur» dan : I : quan . ::Ang ~nçs EEJQEQLYQS; : I idgiuu* çtnhgclki] Ina: : gatau& i l? ?IU ; ` , in dll! ! h: 'Ia it! ! 71911! v 13621 _ 9 &ummi-s; HARAM; 111.1 idçaiungvzaxtadaéi-; pbjatiwi Inkado& _ ; pr m; :: aneuv Hill gtçfvênikidé 3-11211!) ; yg Ei piijitiiru. ui.
  • 58. aosousm a: ; x Si altcramas ol orden dc 'disparo dc las reglas' puedo encontrar 02: (darun expandlr-estado (estado! (case estado (A '(b a)l ta '(d c)I (D '(1 e)l (9 '(o1I) (c '(921) (otherwise (list ll! ) n cambio si las objetivos estan en niveles dsterentes, siempre se E encontrara el menos profundo. independientemente del orden ae las reglas. (dcfun nxpandir-estado (estado) (case estado (I '(a b)l (A 'tc d)l (D '(e I)| (0 '(9)l (c '(021) (9 '(011) (otherwise [list )))) J) Asi talbicn oncuontra o2: (darun expandxr-estado (estado! (case estado (1 '(0 3)] (a '(d = )l (D '(1 e)l (0 '(9)l (c '(u2l) (9 '(011) (otherwise (list DID) ; : Un ejelplo on el que el espacto aa estados es un grafo dlrxgxao acxcltco. 5; pero no un atbul. Loa estados sun explorado: varias veces. (dcfun nxpandiz-estado (estado) (case estado (L '(0 a)I (A 'td c)J (D '(e d)l (d '(0 g)l (9 '(011) tothorwxse (last 0)! ) Un ejenplo en el que el espacio ae estados es un qraro axrlqldo, pero con ciclos dirigidos. y on ol quo existe una solucion. Obsnrvatcno: un electo de redundancia muy sinilar al anterior, pero la solucion sera encontrada san problemas. u. na u wo s. s. s. u. (darun expanatz-estado (estado) (caso estado (1 '(b a)l (a '(d c)I (b '(f = )) (e '(q)l (c '(i)I (9 '(011) (otherwise (last 01)) J Aha/ PII. Mav/ J. Bahana Namum. ma- Camus-O?
  • 59. BUSOUEDA 59 ; S; n emoarqo, 5. nl ; rain peace ciclos d. r.;1ac5 y nc : ny : ol4:. on ; ; u- a; qu: ;Lno du t; sauudn unlznrn un un bgclc iniinitu. :: dai: : expandir-: :indo tertuduh Isaac oqtaao I- 'lb al) ; la 'lu : ii | I~ 'l' @III ; I-. - 'lgi _n ; |~: ' lil) ' lq 'Ifu ; It: vL: :v: :ui: ;r: 4-15!. lili- ; ; ALv; :;-: ;r_^~n: r- : N: 'nunda uvtu y' a : rg-rntqvsaclrgn , ; ingsqqadal aa snlgara 3.5. Busqueda en grafo. EI programa que aparece recogido en el apartado anterior puede ser particularizado para adaptarse sin diticultad a cualquier sistema de produccion. E| ercIcIos. - Particularizar el programa anterior para que resuelva el problema de las n reinas, con Ia representacién que hace que el espacio de estados sea un érbol. - Particularizar el programa anterior para el problema de las garrafas de vino. con la representacién con Ia que venimos trabajando. - Particularizar el programa anterior para el problema del granjero, el lobo. el carnero y Ia Iechuga. En este caso habré que elegir en primer lugar una representacion para el problema. Si se ejecuta la basqueda oon el resultado del ejercicio (2) anterior y se mantiene Ia detinicién de informacicn-prcceso-busquecia dada en el fichero search . lsp. se comprobar& que. pese a que Ia solucion es alcanzada. el nomero de veces que un mismo estado es examinado (en particular, el estado inicial) es enorme. Para evitar este derroche se puede oonsiderar una nueva version del esquema genérico de busqueda en el que los estados ya examinados son almacenados en una lista Ilamada (de estados) CERRADOS. Cuando se expande un estado solo dan lugar a nuevos nodos aquellos estados que no aparezcan en ABIERTOS o que no estén en CEHRADOS. Notese que ABIERTOS es una lista de nodos (mientras que CERRADOS es una lista de estados). por lo que lo que habré que comprobar es que un estado no es igual a ninguno de los estados asociados a los nodos ABIERTOS. J Rubnowkn, kami. ) Hanara: Iva-router? . 199&- 0441809697
  • 60. BLGCUGD/ i 6G' El esquema genérico que permite realizar busquedas seguras y no redundantes en espacios de estados que sean gratos (dirigidos o no. aciclicos o no) aparece mas abajo. Vemos que las unicas diferencias con el esquema que hemos denominado busqueda en érbol son: - En Ia Iinea 1' se inicializa CERRADOS oon Ia lista vacia. - En la linea S' se añade el estado que ya ha sido examinado a CERRADOS. - En las Iineas 7' y 7" se comprueba si el estado generado es nuevo. PRINCIPIO 1 ABIERTOS : (nodo-inicial) 1' CERRADOS : = () RESUELTO : = FALSO 2 mlentras que ABIERTOS no es vacia Y NO RESUELTO hacer 3 N : = quitar primer elemento de ABIERTOS: E : = estado asociado a N 4 si E es un estado objetivo 5 entonces RESUELTO : = verdad 5' sl no Añadir E a CERRADOS para cada operador O hacer 6 sl O se puede aplicar a E 7 entonces crear un nodo correspondiente al estado E' obtenido por aplicacion de O a E siempre que: 7' - E ' no aparezca en ABIERTOS 7" - E ' no esté en CERFIADOS y añadir ese nodo a ABIERTOS sl RESUELTO 8 entonces devuelve el estado objetivo (y si se requiere una explicacion. el camino por el que hemos llegado a é! ) 9 si no inforrna de que el objetivo no puede ser alcanzado FIN Se podrian oonsiderar variantes en las que las Iineas 7' o 7" no son incluidas. Particularizando a la busqueda en anchura las consecuencias serian las que siguen. Si no incluimos Ia Iinea 7" tendremos una version que no cometeré cierto tipo de redundancias (en concreto. nunca re-examinara dos estados que J Huhn). PR . Hmm 'J Ran-tm. ; . hhramjar s? , Istik? ! - (Tçrrsoivtflf
  • 61. BUSOUEDA 61 aparerecieran en Ia version anterior simultaneamente en ABIERTOS), pero no tiene en cuenta otras redundancias (cuando vuelve a aparece! un estado que ya ha sido examinado; notese que esto puede darse tanto en gralos dirigidos aciclicos oomo en otros que tengan cic| os dirigidos) y. sobre todo, puede entrar en bucles infinitos si los estados objetivos no son alcanzables y hay cic| os dirigidos. Si eliminamos Ia Iinea T' (manteniendo la 7") este ultimo problema no puede darse. pero un estado puede ser examinado varias veces (puesto que puede aparecer en dos nodos distintos de ABIERTOS). En conclusion, la version con las dos lineas tiene las siguientes propiedades en el caso de Ia busqueda en anchura: o Cada estado del espacio de estados es examinado, a lo mas, una vez. - Si existe solucion, encuentra una de longitud minima, independientemente del tipo de espacio de estados de que se trate (arbol, gralo dirigido aciclico, gralo dirigido o no-dirigido y cada uno de ellos iinito o intinilo). - Si no existe solucion, siempre terminara la ejecucion salvo en el caso (inevitable para las estrategias exhaustivas) en el que el espacio de estados es intinito. Como se ve las propiedades teoricas de Ia busqueda en anchura en gralo son bastante buenas. Si embargo. no hay que olvidar que dicha mejora tiene un precio en cuanto al coste en tiempo (geslion de CERRADOS y algoritmos de busqueda en ABIERTOS y CERFIADOS) y. sobre todo, en espacio (la lista CERRADOS siempre aumenta. nunca se eliminan elementos de ella), por lo que si sabemos que el espacio de estados es un arbol sera preferible utilizar Ia version inicial. Por ejemplo. seria un derroche utilizar esta version que acabamos de dar oon Ia representacion elegida para el problema de las n reinas. Este algoritmo de busqueda en grato permite clasilicar a los estados en cuatro clases. En un instante cualquiera del proceso de bosqueda, distinguimos 4 tipos de estados: - Los estados todavia no generados (que. por tanto. no aparecen asociados a ningun nodo de ABIERTOS ni estan en Ia lista CEHRADOS). Estos estados podemos oonsiderar que tienen una existencia 'potencial', puesto que hasta que no es generado un estado no aparece en ABIERTOS ni lamra parte de CERRADOS. En general, muchos estados del espacio de estados no llegaran a ser nunca generados en el proceso de busqueda. - Los estados ya generados, pero todavia no examinados. Son aquéllos que aparecen en nodos de ABIERTOS. J maren. MANU Bañares Navorrñera 1998- 0441809697
  • 62. BUSCNJED/ l 62 - Los estados examinados. pero no expandidos. En realidad se trata de una clase con. a lo mas, un elemento que es el estado que aparece Iigado al nodo valor de Ia variable N. - Los estados expandidos, que son aquellos que oonstituyen la lista CERRADOS. Es importante hacer notar que Ia nocién del arbol de busqueda no varia (sigue traténdose de un arbol), aunque si cambia su relaclén oon el espacio de estados. En este nuevo algoritmo tenemos que una adyacencia del espacio de estados que sea examinada puede dar lugar a lo mas a una adyacencia en el arbol de busqueda. pero también puede no dar lugar a ninguna (en el caso en que el espacio de estados no sea un arbol). En el algoritmo de busqueda en arbol, cada adyacencia examinada del espacio de estados daba lugar al menos a una adyacencia en el arbol de busqueda. pero podia dar lugar a varias (en el caso en que el espacio de estados no sea un arbol). Una Ultima observacién respecto a este algoritmo se refiere a que, contrarlamente a lo que suoedia en la anterior version. Ia lgualdad entre estados pasa a ser muy importante, puesto que es necesario realizar tareas de localizacién de estados en Iistas. Este aspecto es recogido en la siguienle serie de ejercicios. J Rumor PR . mm 'J Bañares lularamdar 9. 1217- (Lusa E154??
  • 63. BLGOZJED/ l 63' Elerclclos. 1) Supéngase conocido un predicado: "J -1 nriefun estanj-: E-iqigalea . Ifestadcl ; stanilcngfi . . . Il que decide si dos estados son iguales. Se pide: a) Programer una funcion Lisp l*`. `.~: LL. .'1 51:' . .LJ-Eli LuucG lezLadcv li5L. a-e5L. a«; ir: .5fl . . . :I que decida si un estado se encuentra en una lista de estados. b) Programer una funcion Lisp : ui-Lil. :i apa. tw: zwz-i: starçlu: : 1' (n: -5:ta~: :li: i `_'_: -.: ci-r: :;i: :l~: :5l . . . l que decida si un estado esté asociado a alguno de los nodos de una lista (habré que utilizar Ia funcion -: :- r. s. .jo - : :l . z -n -: :» : :l o). 2) Usar las funciones del ejercicio anterior, para redefinir Ia funcion i; -.-: ;': ~.3i" : :li : a z muali: : en el caso del problema de las garrafas. de modo que los pasos 7' y 7" del anterior algoritmo sean incorporados. Obsérvese que Ia cabecera de Ia funcion debe camblar. pues solamente daran lugar a nuevos nodos los estados que no aparezcan en ABIERTOS o estén en cerrados. Una Poaible cabecera es: ^: |Ti'. ?:l_li_l rj-i-tpnanciir" mjuiizj lr-zjuztlij; 'kita rsnjlcas listen estacings' __ , i Programar también Ia funcion il-_pratesuf para el problema de las garralas. 3) Escribir en Common Lisp la funcion que corresponderia al algoritmo de busqueda en graio (utilizara »sr-apa wii r' ~»: ... .:i: :» con Ia nueva cabecera). 4) Usando Ia lunclén del ejercicio (2) y el esquema del (3), comparese el proceso de busqueda para el problema de las garralas con el obtenido para ese mismo problema con la busqueda en anchura en arbol. Utilizando para el problema del 8-puzzle Ia estrategia de busqueda en anchura en gralo es posible obtener un arbol de busqueda como en el que aparece recogido en Ia ligura 4. . ) Rinto. PR . Muro 'J Ram-m hbrairoar 9, 193.9 - (Lusa &visir
  • 64. BLkSOUED/ l 64 3.6. Bosqueda en profundidad. La estrategia de busqueda en profundidad es una variante del esquema genérico de busqueda. Comentamos en primer lugar Ia version del punto 3.1. que hemos Ilamado busqueda en érbol (después comentaremos Ia busqueda en profundidad en grafo. que corresponde al esquema presentado en 3.5). En este tipo de busqueda. el paso 7 del algoritmo se particulariza del siguiente modo: los nuevos nodos son añadidos al comienzo de la lista ABIERTOS. Asi se consigue que los nodos en ABIERTOS estén ordenados segan su profundidad. en orden creciente: los mas protundos al principio. los menos protundos al final. La lista ABIERTOS tiene de este modo una tonna de acceso que Ia convierte en una pila: los datos que primero entran (paso 7) son los oltimos en satir (paso 3). AI igual que sucedia en la busqueda en anchura, los nodos de igual profundidad se ordenan arbitrariamente. segan el orden de las reglas u operadores. veremos mas adelante que Ia busqueda en profundidad es mucho mas sensible a ese ordenamiento de las reglas que Ia busqueda en anchura. J Rabnowkn. Mirah) Bañares Hammers? . 1993- Gurso 96-97
  • 65. u. B UBL-J UBH BEL-J HE! HGH mag , ` ama f 3- BEBETEUEBEEEHEHEE unanna nu Hunan énaa muna mun , gEE_{j% > ' ma; H mnmi~m ag* / H m: =!am3 ; gmm= ,_mm= m *I* 3 m f HIGH jg» nam anam BE Baa amma naumummumamnu uuunmunuanmnuuauu *ijin IE
  • 66. BUSCNJEDA 66' En cuanlo a las modificaciones en la implemenlacién son minimas. En Ia busqueda en anchura (en érbol) teniamos Ia definicién: (defun reorqan;2ar-nodos-a-expand1r (li5Lu-nudes-nuevus ;1sLu-nodos) (if (Dndp 113:: -noda: -ngevcsj lista nodos ; 31 nn hay nada; nueva; -5 l; sta AEIERTO5 es la de antes (appund ; ;sLa-nada: lista-nodos-nucvc5JI> ; en otro sasa, nuevos nodaa se an adem al final de llsti mientras que en Ia busqueda en profundidad el oédigo es: idefun reorqaninar-nida; -3-&xpandir [lista-nodos-nuevos -lsza-nodos) (if (cndp l; :;1-nudes-necvcsl lista nccas ; 31 no hay ncdas HKEVCS -5 l;5ta nEIERTO5 es la de antes (eppend ;15Lu-madu: -nuevo; l-: Lu-nodusljg ; on atrc caso, nuevos noda: sc an= aden al comienzo dc La En cuanto a Ia comparaclén de los dos tipos de busqueda. una primera obsewacién es que Ia busqueda en profundidad necesita. en general, menos espacio para ser realizada. En concreto, Ia complejldad en espacio sera Otbd) frente a Ia complejidad exponencial O(bd) de Ia busqueda en anchura. Recuérdese que b es el factor de ramiflcacién (medla del numero de nodos generados desde un nodo). y d mlde Ia profundidad del estado objetivo (minimo del numero de aplicaciones de reglas necesarias para Ilegar del estado inlclal a un estado objetivo). En cambio. Ia complejidad aslnlética en tlempo es de orden exponencial O(bd). como era Ia de Ia busqueda en anchura. Pese a este resultado leérioo en ocasiones el namero de estados examlnados por Ia busqueda en profundidad puede ser conslderablemente menor que en Ia busqueda en anchura. Compérese Ia Figura 5. que contiene un érbal de busqueda en profundidad (en grafo y oon Ifmite de profundidad: ver Iuego) para el &puzzle con Ia Hgura 4. J @author PR . mm 'J Bañares ? Jaramdar 9. 1217- &N80 51597
  • 67. BUSOUEDII 67 E| ercIclo. Dibujese el arbol de busqueda en profundidad para el problema de las 4 reinas con la representacién que venimos trabajando. Compérese su tamaño oon el del érbol de busqueda en anchura para el mismo problema con la misma representacién. Otra caracteristica que diferencia a las dos estralegias es que, oomo ya comentamos, Ia busqueda en profundidad es mucho més sensible que Ia busqueda en anchura en lo que se refiere al orden de aplicacion de las reglas. Por ejemplo, en el problema de reescritura que hemos ido estudiando si el orden de las reglas es [A --> AA, AB --; > B] Ia busqueda en profundidad no termina. mientras que si el orden es [Au --; > A --> rm] la busquedatermina. enoontrando un objetivo. Elerclclo. comprobar las alirmaciones anteriores. Comparar oon los arboles de busqueda en anchura primero con el orden [A --; > AA. As --> u] y después con el orden [AU --> A --> AAI. BHB [IBI] I 5 2 klik! BEI E 3 [IED I 4 III 4 MH - 3 19 HUH HEI H H * EKI III IILI [III [IIIE Lil [IU III-I 4 20 ~ . - aa ; za a! ! 9 12 Hui Bui 38" SHE II E B B Il EI s 6 10 11 1 22 . 1 = =« HSI BEI EIEEIEI El EI B BEI EEuH“EuEEEEuauuana narnEauE'ar nr?3E u IIIIEIIIIIEIIIIIEI IIIHEIEIII HU II EIIIEIEIII' 5 HUH Figura s Otro caso en el que el orden de las reglas es importante es el de las n reinas. Aunque en los ejercicios previos no se precisé nada, lo més Comodo desde el punto J RubnofRR, Mirah) Bañares November& 15398- Cuma 96-97
  • 68. BUSOUEDA 63 de vista de la programacién es ordenar las reglas (Casillas) de derecha a izquierda o de izquierda a derecha. Formalmenle. si Ri', representa la regla “pon una reina en la casilla (i, j)" las dos ordenaciones que podriamos oonstruir. sin mucha retlexién previa. serian [Flu, Rig, Rm] o [Rm, Elu, ,, Hu]. Notese que solo es relevante el orden de las reglas en una misma lita. pues. por el modo de representacién, son las unicas que pueden estar sensibilizadas simulténeamente. Sin embargo. esas ordenaciones no tienen en cuenta que no todas las casillas 'cubran' el mismo espacio en el lablero. Por ejemplo. una dama en Ia diagonal principal (en una casilla (i, i)) limita mucho las posibilidades en las siguientes tilas. Siguiendo esta idea podemos definir Ia siguienle funcion asociada a cada casilla: diag(i, j) es la maxlma longitud de las dos diagonales que pasan por Ia casilla (Li). Por ejemplo. en el caso de las 4 reinas, diag(3.2) = 4, ya que una de las diagonales cubra 3 casillas y Ia otra 4. Entonces ordenamos las reglas en una misma fila del siguienle modo: R” precede a Rm si o bien (1) diag(i. j) < diag(i. m). o bien (2) diag(i, j) = diag(i, m) y j < m. Por ejemplo. en las 4 reinas el orden en la fila 3 seria: [Ram 33.4. Raga 33.31- Elorclclos. 1) Dbujar el arbol de busqueda en profundidad para las 4 reinas con esle nuevo orden en las reglas. Comparese oon el arbol de busqueda con las ordenaciones anteriores. comprobar que en anchura no varia demasiado el arbol de busqueda con cualquiera de las ordenaciones. 2) implementar esta variante (basta con moditicar Ia funcion er-z pa ndi r - r: odc). Estas ultimas disquisiciones respeclo al orden de las reglas en el problema de las n reinas podrian llevar a pensar que estamos aprovechando inlonnacién sobre el problema concreto que vamos a resolver y, por lanto. que las estralegias de busqueda (en anchura y en profundidad) no serian "ciegas" en este caso. Sin embargo. la diferencia entre eslrateglas no inlorrnadas y estrategias heuristicas se encuentra en el momento en el que el oonocimiento particular sobre el problema es aplicado. En las estralegias no inlonnadas el conocimiento es utilizado en la lase de diseño del sistema de produccion (y de analisis: piensese en como alecta el modo de representar el problema en el proceso de busqueda). Aqui se incluye qué son las reglas. oomo asian implementadas. etc. y, también, cual es el orden de disparo de las reglas sensibilizadas. Por el contrarlo. en las estrategias heuristicas el Conocimiento particular sobre el problema a resolver es utilizado en tiempo de ejecucion. dlrigiendo directamente la busqueda. J RubnowRR, Muai. ) Bañares Nawrrura 1998- 0411809697
  • 69. BUS CLlED/ l of; Analicemos las propiedades de la busqueda en profundidad. En pnmer lugar. hagamos notar que, en los casos en que Ia busqueda en profundidad encuentre un camino solucion. nada nos asegura que dicho camino solucion sea de longitud minima. Véase en el arbol de estados de la iigura 6 (estado inicial: l. Unicos estados objetivo: 01 y O2). cuyo arbol de busqueda en proiundidad (con expansion de lZqJlCfda a derecha) aparece en Ia iigura 7. &Ol 8 'li C Figura 7 3 I ri Ejerclclo. Comprobar que la busqueda en profundidad con expansion de derecha a izqJicrda aplicada a la iigura 6, si encuentra el camino solucion de longitud minima. Ol& 1 . .I Ririn PR . Him J Enviar: : . hkrri-r-. intu-. rgl unt; - (I'airs.1:'. ~'i ; If
  • 70. Esxutiismns ; sri piiinarliugsr prgisiejiiacjieçsirñer &Hasian; 1311; qua : sido ian prnitmillidadi sl : sl espacio 2th 3511545193 ; es ? ilnilicii . esai un marihat in ; orator dimintai acicllhq. la; estrategia* encontrar& un; objetivo; sl: existe? . ? El nu; “illilttafilérlasiléisttéstadés Kasim? . unaesrraragi a . tliléjr . a iennlnarêi~sl m; existen iesiadas- inibjféiiims [esici ya; mumet ; can la: : eni : anchlllafian airmu; para slieltistanéastaddsvlébbjetivos Iaibnsqnadapueusiemimar n IGQIHPYUEEESEl “amiin” aas dg garraifaisj; naar m& ia ? rs “sial teriritasi : ijiiiancusntrsiun a @stamina gusde nd dalam& dlsparada tasmatas eiempla: ile ESTEE& ilusirarlci con el* gralo ; Jeremias ; in ta: iigura s. . El ma! dai Iiiisqlledaranprallmdidadtien aibnu-trunssexpansianxfue [Zqltierdi aitlergéha : ras qua ; sarana ian ia: Partai : :isi : çiniinitalsiiia 13535532153053.FHQUYEMEJHBETEHESEH137591139; siinaciiin s: :: anturium las ; espacios degiestarlcis (articles ngatasi : qua-semi 'Inniiitasrsrjramérdéserm aiéjémplaidétgstsiexfna diaprasscriiurajl.
  • 71. BUSOUEDA 71 O2 Figura 9 En cuanto a Ia version en gralo (la que mantiene la lista CERRADOS), evitar& Ia no tenninacion en el caso de gratos dirigidos (iinitos) con ciclos dirigidos (compruébese de nuevo en el caso del problema de las garraias), lo que permitira encontrar siempre un estado objetivo (si existe alguno) y hace que Ia dependencia del orden de las reglas sea mucho menor. Sin embargo. en un espacio de estados infinito. pese a que haya caminos solucion, esta version tampoco asegura que la btisqueda en profundidad los encuentra ni que tennine la ejecucion (de nuevo el ejemplo del sistema de reescritura). Si queremos asegurar que Ia busqueda en profundidad terrnine siempre su ejecucion en el caso en que haya caminos solucion e independientemente de como sea el espacio de estados (finito o infinito, gralo o érbol), propiedad que tiene Ia busqueda en anchura, estamos obligados a perder el caracter exhaustivo de Ia busqueda. También veremos que esto implica neoesariamente que. en ocasiones. aunque existen caminos solucion Ia busqueda no encuentrara ninguno. Un modo de conseguir que Ia busqueda en profundidad termina siempre es el siguiente. Se fija un Iimite maximo de profundidad (por medio de un parémetro global. por ejemplo) y no se exploran aquellos nodos tales que su profundidad en el J kantoran MWN) Gaharu Nawrrura. 15398- Cuma 5-97
  • 72. 81.15 CUFDA PE' éirbol de busqueda es mayor que dicho Iimite. Véase en Ia iigura 10 ei érbol de busqueda correspondiente ai grafo de Ia iigura 8, con expansion de derecha a izquierda. busqueda en profundidad en érboi y Iimite de profundidad 3. La profundidad de cada nodo ha sido escrita al lado de cada estado, separada con una coma. Notese que el nivel de profundidad esiéi asociado al nodo y no al estado. pues un mismo estado puede reaparecer en varzos niveles (compruébese en el ejemplo si el Iimiie de profundidad es 4 o mayor). Obsérvese también que si el limiie de profundidad es 1, en ese ejemplo. no se encontrar& solucion (esto sucederé siempre que el limiie de profundidad sea eslnclamenle menor que Ia profundidad del estado objetivo menos proiundo). En la iigura 5. donde se recogia el érbol de bfisqueda en profundidad (en graio) para el B-puzzle. el Iimiie de profundidad iijado era S. Ejerclcios. Estudiese cual es el estado objetivo encontrado en el espacio de Ia iigura 8 por Ia busqueda en proiundzdad en éirbol. si Ia expansion se realiza de izquierda a derecha y el limile de proiundEdad es 3. CY si el Iimile de profundidad es 2? 1_ | .0 **M D. i a g 5.2 1 02.2 F.3 I g Figura 10 En cuanto a Ia puesta en préictica de Ia idea anteriormenie expuesta es necesario disponer de una funcion i'. liiif_il'ii'i; ~fiv: .<j cie nai. : que. tomando un nodo como argumento. nos indique en que nivel de profundidad ha sido generado. Una vez se dispone de una funcion tai, no es dificil modiiicar e; -;; a=. r.d; i i'ii: :~ii~i~ para que. si hemos alcanzado el Iimite de profundidad. devuelva siempre la lista vacia. oon lo que se consigue el efecto deseado. Para poder implementar [`: L~I'f. .i'i: ;ii~fi1ji s» nixiv pueden empiearse diversas estrategias. Por ejemplo, si el nodo tiene informacion sobre su "padre' puede . J Param PR Min? J Bluder: : . '~_'Ji-r1i7f.1~'. r37_ iffjkii - (Trirsn : Ni JJ. ?
  • 73. BUSOUEDA 73 encontrarse su profundidad calculando la longitud del camino que lo une oon el nodo inicial. Otra idea analoga seria almacenar los operadores que han producido el estado del nodo a partir del estado inicial y conlar su niimero. Estas dos posibilidades conllevan un coste en tiempo de ejecucion cada vez que se llama a profundidad-de-nodo. Otra solucion que no requiere tiempo de ejecucion, pero que conlleva una necesidad mayor de memoria, consiste en almacenar en cada nodo explicitamenle (por medio de un campo. por ejemplo) su nivel de profundidad. Por Ultima, la solucion mas economica en tiempo y en espacio consiste en mantener en una variable global Ia profundidad en que nos encontramos en cada momento del proceso de busqueda. Su inconvenienle es que es necesario señalar de algun modo cuando hemos cambiado de nivel. La forma mas natural de hacerlo es incluyendo algun tipo de marcas (elemenlos que no son nodos) en la lista ABIERTOS. lo que no es excesivamente eieganie desde el punto de vista de la programaclén (ABIERTOS deja de ser una lista de nodos para convenlrsa en algo mas general y de interpretacion mas dificil). Obsérvese que no es conveniente (aunque es mucho mas claro) el almaoenar el cambio de nivel (sl existe) en los nodos. pues ello requeriria un coste en espacio equlvalenle al almacenaje explicito del nivel de profundidad. Ejerclclos. 1) lmpleménlese la biisqueda oon Iimile de profundidad. Utilioese una luncién genérica (defun profundidad-de-nodc (nodo) . ..). Sera necesario cambiar expandir-nodo. 2) lmpleméntese la funcion lciefun profundidad-de-nodo (nodo) . ..) de dos modos distintos: (a) calculando la longitud del camino al nodo inicial (lo que, en general, requiere informacion sobre el “padre” en cada nodo); (b) con un campo explicilo para almacenar la profundidad (en este segundo caso sera necesario alterar de nuevo expanclir-nodo). 3) Verilicar como luncionan las oorrespondienles busquedas en el problema de las garrafas. Como ya hemos señalado, la prolundidad de la que se habla en Ia anterior variante es Ia prolundldad en el érbol de busqueda. Eslo significa que si Ia varianle es aplicada al algoritmo de busqueda en arbol y el espacio de eslados es un gralo. nada nos asegura que un estado no va a ser examinada mas de una vez (compruébese en el problema de las garralas y, como se indioé mas arriba. en el espacio de la iigura 8). Por tanto. sigue teniendo sentido el Irabajar oon la version J Rasio/ PR, MKDVU Bañares November! . 138-00180969?
  • 74. BLGOZJED/ l .74 en gralo (variante del algoritmo de 3.5), aunque ahora sea solo por economia y no por evitar los bucles inlinitos. Repetimos de nuevo que las versiones con Iimite de profundidad pierden el caracter exhaustivo. por lo que en ocasiones pueden ”o| vidarse" de la solucion aunque ésta exista. Por ejemplo. en el problema de las n reinas siempre se terrninara sin encontrar la solucion si el Iimite de profundidad es estrictamente menor que n. Elerclclo. Comprobar. dibujando el arbol de busqueda. que en el sistema de reescritura no se encuentra solucion si el Iimite de profundidad es uno, mientras que si se encuentra si el Iimite es dos (o mayor que dos). Compruébese también que apenas varia el proceso si invertimos el orden en las reglas. Para terminar el tema. resumimos brevemente Ia comparacién entre las principales estralegias no iniormadas: Ia busqueda en anchura y la bilsqueda en prolundidad. Ventajas de Ia busqueda en profundidad: - necesita menos memoria (en profundidad solo se almacenan. en esencia, los nodos del camino que se sigue. mientras que en anchura se almaoena Ia mayor parte del arbol que se va generando). - con 'suerte' puede encontrar una solucion sin tener que examinar gran parte del espacio de estados (depende en gran medida de que el orden de las reglas sea "adecuado"). Ventajas de Ia busqueda en anchura: - es mas dilicil que quede atrapada explorando callejones sin salida. - si existe una solucion garantiza que la encuentra (independientemente de Ia estructura combinatorial del espacio de estados) y ademas sera una de las de longitud minima. . ) Riana. PR . NING 'J Ram-m hbracroar 9, 193.9 - (Lusa SYL-L*
  • 75. SUSCUFD/ l ? i TEMA 4. Estrateg las cie conirol heuristicas 4.1. Heuristicas. Los métodos de busqueda en anchura y en proiundfdad son donominados métodos ciegos de busqueda. En general, seran muy ineticaces y sin aplicacion practice debido al crecimiento exponencial del tiempo y del espacio que requieren (exp/ asian combinatorial. Los métodos de busqueda heuristica disponen de alguna infonnacion sobre Ia proximidad de cada estado a un estado ob, 'ctivo. lo que permite explorar en primer lugar los caminos mas prometedores. Son caracteristicas de los motodos heuristicas: - No garantlzan que se encuontre una solucion. aunque existan soluciones. - Si encuentran una solucion. no se asegura que ésta tenga buenas propiedades (que sea de longitud minima o de coste optimo). - En algunas ocasiones (que. en general, no se podran determinar a prion), encontraran una solucion (aceptablemonte buena) en un tiempo razonable. Podemos decir que los métcdos heuristicos sacntican Ia completitud (es posible que algunas solucionos se 'pierdan') al lncrementar Ia eliciencia. En general. los motodos heuristicos son preioribles a los métcdos no iniormados en Ia solucion de problemas dificilos para los que una busqueda exhaustiva necesitaria un tiempo demasiado grande. Esto cubre practicamonte Ia totalidad de los problemas reales que interesan en Inteligencia Artificial. En cuanto al aspecto algoritmico. el mismo esquema presentado en 3.1 (os la version en arbol; ver 3.5 para Ia version en gralo) sirve para las bosquedas heuristicas o informadas. La Umca diferencia es que los pasos 6 (esensibilizacion de las reglas) y 7 (roorganizacion de ABIERTOS) se realizan con criterios dcpendientes del dominio del problema, de modo que el algontmo tiene cierto . .i Fu'. itu? P R Mur? ? . J 63744.32:: .Kiflrnvrfhtr 31 Halli ~ [Trtrxri 5k; 5.1,?
  • 76. BUSKXJED/ l ? G Conocimiento, que utilizara en tiempo de ejecucion, sobre el problema concreto que debe resolver. En lo relerente a la implementacion. las busquedas heuristicas pueden aprovechar la informacion en dos funciones dilerentes: ~ êxpan-: llr-ncutltn Leurgunizuz~nudo5-u-expondtr (En el primer caso se trata de méfodos de Ia familia 'escalada' y en el segundo. que también puede aprovechar la informacion en exgg-arzdi: -rzudrg. se tiene la familia "primero el mejor. ) La informacion del problema concreto que estamos intentando resolver se suele expresar por medio de heuristicas. El concepto de heuristica es dificil de aprehender. Newell. Shaw y Simon en 1963 dieron la siguiente definicion: 'Un proceso que puede resolver un problema dado. pero que no ofreoe ninguna garantla de que lo hara. se Ilama una heuristica para ese problema', Si nos planteamos seguir concretando como aprovechar la informacion sobre el problema en sistemas de produccion, la siguiente idea consiste en concentrar toda Ia informacion heuristica en una Unica funcion que se denomina funcion de evaluacion heuristica. Se trata de una funcion que asocia a cada estado del espacio de estados una cierta cantidad numérica que evalua de algun modo lo prometedor que es ese estado para acceder a un estado objetivo. Habitualmente. se denota esa funcion por h(e). La funcion heuristica puede tener dos interpretaciones. Por una parte. puede ser una estimacion de Ia 'calidad" de un estado. En este caso. los estados de mayor valor heuristioo son los preferidos. Por otra parte. Ia funcion puede ser una estimacion de lo proximo que se encuentra el estado de un estado objetivo. Bajo esta perspective. los estados de menor valor heurlstico son los preferidos. Ambos puntos de vista son complementarios (de hecho. un cambio de signo en los valores permite pasar de una perspectiva a la otra). Las funciones heuristicas mas interesanfes son aquellas que son bien fundadas. La definicion depende de los dos casos considerados en el anterior parrafo. Si la heuristica asigna valores altos a los estados preferidos. se diré que es bien fundada si todos los estados objetivos tienen valores mayores que el resto de estados (habitualmente el estado inicial tendra valor 0 y los valores sean numeros naturales J Pertuan PR . mm 'J Bañares bicaramu# f? . 1211- Cursa 51597
  • 77. BLGOZJEDA . V o reales positivos). Si Ia heuristica estima Ia proximidad a un objetivo, se dira bien fundada si a los estados objetivo les asocia el valor O. En todo Ia que sigue (y mientras no se diga lo contrario), las funciones heuristicas seran siempre bien / undadas y supondrernos que nuiden lo cerca que estamos de alcanzar un objetivo (es decir, valores menores son preferibles). Lo realmente dificil en el diseño de un sistema de produccion con estrategia de control intormada es encontrar la funcion heuristica adecuada. Veamos ejemplos de heuristicas para algunos problemas concretos. Para el problema del 8-puzzle tenemos Ia siguientes heuristicas: a) La basada en Ia distancia Manhattan (o distancia taxi). Se asocia a cada casilla un namero que es su distancia taxi con su posicién en el tablero objetivo (esto es, Ia suma de diferencias de sus coordenadas x e y). La luncién heuristica es Ia suma de las distancias de cada una de las casillas (excluyendo Ia que se encuentra vacia). b) Otra heuristica. mucho mas simple, consiste en contar el nnmero de casillas que estan fuera de su sitio (respeclo al tablero objetivo). Es una heuristica mas pobre que Ia anterior, puesto que no usa Ia informacion relativa al estuerzo (namero de movimientos) necesario para llevar una pieza a su lugar. c) La distancia taxi no tiene en cuenta que si dos casillas adyacentes deben ser invertidas (por ejemplo. si tenemos a Ia izquierda del digito 2 el digito 1 y en el tablero objetivo el digito 1 debe estar a Ia derecha del 2 y en la posicién actualmente ocupada por éste) necesitaremos mas de dos movimientos. Entonces, podriamos tomar como heuristica el doble del namero de pares de piezas que estan en esa disposicién. Esta heuristica también es pobre. puesto que se concentra demasiado en un cierto tipo de diticultad. En particular. tendrén valor O muchos tableros que no son el objetivo (notese que eso no sucedia en ninguna de las dos heuristicas anteriores). d) La cuarta posibilidad que oonsideramos es definir como funcion heuristica Ia suma de las funciones definidas en (a) y (c). Es Ia heuristica mas Ima, pero también Ia que requiere un mayor estuerzo de calcule. En la Figura 1 se recoge una ilustracién de estas heuristicas en un caso concreto. Ejerclclo. Olra heuristica posible para el 8-puzzle, si el estado objetivo es el recogido en Ia hgura 1. es la siguiente: h(e) = 3 ' seqte), donde seqte) cuenta 1 si hay un digito central en e y 2 por cada digito x no central que no es seguido (en el sentido de la agujas del reloj) por su sucesor x+1 (imponemos por convenio que 8 + J Ruko. PR . Hum 'J Ram-m hkarambar 9. 19.19 - &uso &Yin-V
  • 78. BLGOZJED/ l 7a' 1 = 1). Calcular el valor de esta heuristica para los estados que aparecen en la ligura 1. Generalizar esta idea para estados objetivos cualesquiera. lntroduclmos a continuacion un nuevo problema: - EI problema del tren. - Entrada: un viajante se encuentra en una capital de provincia. - Salida: quiere viajar a otra capital. - Medios: hay un tren entre capitales de provincia colindantes; se dispone de un mapa con Ia disposicién de las provincias y sus "coordenadas' en kilometros respeclo al "centro" (por ejemplo, Madrid. con coordenadas (0,0)). Una funcion heuristica para ese problema consiste en aslgnar a cada estado un valor que es la distancia en Ilnea recta oon el estado objetivo. Dicha distancia es la distancia euclidea entre las coordenadas de dos ciudades. Ejerclclos. 1) Escribir un mapa "pequeñoi 2) Elegir una reptesentacibn para el problema (al menos en el nivel conceptual). Dibujar el espacio de eslados para el mapa de (1). con una elecclén de estado inicial y estado objetivo. 3) Calcular los valores heuristicas de cada una de las ciudades del mapa. oon la eleecion de (2). 4) Dibujar los arboles de busqueda en anchura y en profundidad (gen arbol o en gralo? ) para el espacio de estados anterior. . ) Rano. PR . Hmm 'J Ram-m hbracroar 9, 193.9 - (Lusa &visir
  • 79. BLGCUFD/ l ? Si 4.2. Métodos de escalada. Los métodos de escalada (o de ascension a Ia colina) trabajan. en su version mas habitual. con tunczones de evaluacion en las que los valores superiores son preferibfes. De ahi su nombre: se trata de elegir en cada paso un estado cuyo valor heuristica sea mayor que el del estado activo en ese momento. Los metodos de escalada se dividen en dos families: - Los metodos irrevocables (no preven Ia vuelta a un lugar del espacio de estados Sl algun camino elegido resulta inadccuado). . .I F1'. mm PR Muri? ., .| Enviar: : . hhrninm-. .m-I, l ? Etti ~ rlurxrr : :vs 3.1,?
  • 80. Etil t' esñatadaxen prafundldad . rias una vartanterds lasbiisquçeda snmptn! ” a . a exhaustiva)- En tas meredam iesiadal : penata ar la »masi nuaratesttadql. de* modo: iqua»asiEl-'ires= nunca pose& . meatus un : elementer . .E510 nanam akan: : esgacla; para hanatqusasñiasse enxzexn, 1 enlfaltiasquedarlefla : Einstein. varianle: de [as eosquamasiien escalada trreirarrables: H &atas ala ipporvla management& n: di" estetis. Sa. . eslados daemefjarvaiarlti l l “ TQVYHEi-tFEITEETUBIQIu clevueweese asian En ambos casos. MIUEyEjHJTESYEUQJHHU : asimilasi-aqua ellrestada qua: islands rettpaxldldm nai sawdemeltlaiinadag In; que tllllllailaf& que Ia lnasmreuaianmnai i* a a . .a guna rmiiilltiz pendengar UEITKIYHEW : letñisgarnrda reglas these: HIHU& sesi tñltlma ltanibiên ; In : EI avatar heuristica meja: * pueden ser it; in &KIESEEIEESB; elismeradn: UECEDHHESDHIE lesmana: : 11 qua ilisbñtiiwdé* : Iria ; serta : satuan Tai = «qua~dem_alire~luna llslataeaestadas (ta! uezsvaçiat lassestadas ; generados : u dia sun : statin dad *an : law otra. funciñnt itciefuni , _ . . a a. valores mas peqtreñasi : les : urrespnnden. estados ipreljeriilesj. , ; sar ttñefnn ~exgandla~tnuna~ turtle); 7.. .:* : :leidas dilerentes d& ; pu _o , ñblallmiléildfsfs, ejzunaescaiadasimple: blsunaescataidaynrla miirtmatpendienite. ;
  • 81. BIJSCNJEDA 37 Supéngase que se dispone de operaciones IIIZiC-fçlr. :: rea-litlcv iescaclca pJ-. ::lzwz-l . . . l, (de-fun est. icl-: :a-zzle-rz-t-: zlc: (nczci-: al . . . b y lcieftiri [avira-ile- r. :: n:: l r: : (rurni-: :wi . . . :a para manipular los nodos. (Notese que Ia funcion expar_: :l1:- es: .acan desvirtua Iigeramente la idea de la escalada simple. puesto que se generan lodos los hijos previamente a la seleocion: hemos prelerido proponer de este modo el ejerciclo para darle mayor genericidad. ) 2) Particularlcense los ejercicios anteriores para el problema del lren. Programese y haganse comparaciones oon las dos busquedas irrevocables. 3) Lo mismo que en el ejercicio anterior. pero para el problema del B-puzzle. Comparense ademas los resultados oon las distintas heuristicas presenladas en el apanado 4.1. 4) Como hemos indicado anles. se puede mantener para las escaladas irrevocables Ia misma estructura del programa l: :'_15-: ';I_1el: i.:1 que hemos utilizado hasta ahora. Sin embargo. es mas natural modilicar Ia estructura del programa para que no se ulilice la lista ABIERTOS (no es necesarla. puesto que a lo mas contiene a un elemento). Diséñese el algoritmo correspondiente y programese en Common Lisp. Obsérvese que sigue teniendo sentido la distincién ”busqueda en arbol" "busqueda en gralo”. Programense pues las dos versiones. Las propiedades de los algoritmos en escalada irrevocables son las siguientes: - Tienen una complejidad conslanle en espacio. ° Su complejidad en tiempo. en el peor caso, continua siendo exponencial. - No garantizan que se encuenlre el camino mas corto (ni. en general, el de menor coste). - No son métodos oompletos: pueden no encontrar Ia solucion aunque exista. Las dllicullades prlncipales que pueden aparecer y que conllevaran Ia 'pérdida" de las soluciones son las siguientes: - Maxlmo local (en nuestro contextc, seria preferible hablar de minimo local, pero entonces se perderia el simil con el ”alpinismo”): lodos los hijos de un estado son menos promeledores que él, pero no se trata de un estado objetivo. Por ejemplo, Supongamos que en el B-puzzle elegimos la heuristica que cuenta el numero de digitos mal situados. La experiencia (iheuristica! ) nos muestra que en ocasiones es necesario descolocar algun digito para alcanzar el objetivo: las escaladas irrevocables no recogeran dicho oonocimiento. - Mesetas: lodos los estados hijos (y tal vez los desoendienles) tienen el mismo valor heuristico. Si lomamos la desigualdad estricla en la escalada. eso J @author PR . mm 'J Bañares ? Jaramdar 9. 1217- Cuma 51597
  • 82. BLGOZJEDA . '32 signilicara que el algoritmo terminaré sin encontrar solucién. Si a igual valor heuristica permilimos seguir, una meseta signilica que el valor heuristica no nos proporciona ninguna informacién y nos encontramos con una busqueda ciega no exhaustiva que, por supuesto, es bastanle inoperanle en general (si se trata de una bnsqueda en arbol y el espacio de eslados es un gralo es posible que se caiga en bucles inlinilos). - Crestas: existe una Onica direccién en la que el valor heurislico va siendo cada vez mejor (o igual). pero en esa direccién no se encuentra ningan estado objetivo. Puede terminar en un méximo local. o tener un electo muy similar al de la mesela. Podemos decir que los métodos de escalada irrevocables limilan sensiblemenle el espacio de bñsqueda, pero no olrecen garanlias de resultar elicaces. Una varianle que permite recuperar las caracterislicas de complelilud y exhauslividad consiste en mezclar las ideas de la escalada con Ia btlsqueda en prolundidad. Fleoordemos que en Ia busqueda en profundidad (y en la busqueda en anchura) los nodos de igual profundidad se ordenan arbilrariamenle. En el método de escalada en profundidad los nodos de igual profundidad son ordenados poniendo al comienzo los mas promeledores (eso significa que. siguiendo nueslras convenciones. los nuevos nodos seran ordenados crecientemente). Elerclclos. 1) Siguiendo los mismos convenios de los Oltimos ejercicios enunciados. delinase e: «.g: .an«:11 r- r: .:»: :li: i de modo que se implemente Ia busqueda de escalada en prolundidad. Escrñaanse las versiones en arbol y en gralo. 2) Comparese el proceso de blllsqueda en prolundidad. en anchura. en escalada simple. en escalada por la maxima pendienle y en escalada en profundidad en el problema del tren. con un ejemplo concreto. 3) Mismo ejercicio que (2), pero con el 8-puzzle y con las distintas heuristicas. Con esla nueva Versién. Ia busqueda heuristica vuelve a ser exhaustiva y completa: si existe solucién encuentra una. aunque no necesariamenle una de longitud minima. Por otra parte, vuelve a requerir lanto espacio, en el peor caso. como la busqueda en prolundidad. La Onica dilerencia con ella es que la direccién de Ia bnsqueda es regida por el valor heurislico de los nuevos nodos. En cuanlo a la comparacién con las escaladas irrevocables. Ia version de escalada en profundidad siempre supera los maximos locales, las meselas y las creslas. Sin embargo. al . ) Riana. PR . Hmm 'J Ram-m hbracroar 9, 193.9 - (Lusa &visir
  • 83. BLLSOUED/ l 83 igual que lodos los métodos de escalada, se aprovecha Ia inlormacién heuristica de un modo local (se dice que son mélodos de visién corta). En particular, puede suceder que lodos los descendienles de un estado prometedor sean nelaslos, con lo que en ABIERTOS puede haber nodos mucho mejores que los que eslan al comienzo de la lista. Para evitar eslas siluaciones se introducen la siguienle familia de busquedas heuristicas. 4.3. Métodos "primero el meior". Los métodos primero el mejor (o en primer lugar el mejor) mantienen Ia lista de nodos ABIERTOS ordenada de modo que se puedan considerar siempre Ia alternativa mas prometedora de entre todas las que estén siendo consideradas. Sus caracteristicas oombinan las de Ia busqueda en profundidad (puede encontrar una solucion sin expandir todos los nodos), Ia busqueda en anchura (no queda atrapada en caminos sin salida) y los métodos de escalada (puesto que tiene en cuenta los valores heuristicas de los estados). Concretamente. Ia estrategia de control primero el mejor consiste en darle a Ia lista ABIERTOS una estructura de cola de prioridad. ordenada (de menor a mayor) por los valores heuristicas de los estados asociados a los nodos. Habré versiones en érbol y en gralo (es decir. en ésta Ultima se mantiene una lista de estados CERRADOS). En el érbol de estados de Ia iigura 2 hemos escrito entre paréntesis al lado de cada estado el (supuesto) valor heuristica del estado. Como viene siendo habitual. el estado inicial es l y el unico estado objetivo es O. En las tiguras 3. 4. 5 y 6 recogemos. respectivamente. los érboles de busqueda en escalada simple (con expansién de izquierda a derecha). escalada por Ia méxima pendiente. escalada en profundidad y primer lugar el mejor. J RubnoIRR Marah) Bañares November& 1993- Carta 96-97
  • 84. BUSOUEDA Bd Figura2 1_ l(10) Am) 3. B(5) li &(4) HIS) Flgura3 J Rub-or PR Mirah) Banana: Alovarrñcrsi. 1933- Carta 9697
  • 85. BLlSCLlFD/ l . Bi Figura 4 Las flechas punleadas en las liguras 3 y 4 signilican eslados que han sido generados y de los que se ha calculado su valor heuristica. pero que han sido desechados (no han llegado a ser incluidos en ABIERTOS). En el arbol de busqueda de la iigura B. se produce un empale enlre los estados G y C. Hemos elegida (arbitranamenle) el estado mas prolundo (el que lue generado el ullimo), decision que, en esle ejemplo concreto. ha retrasado Iigeramenle el hallazgo del estado objetivo. (a) W E (4) _F (3) _G (6) O (of i _ i H (a) J (7) Figura 5 H (a) J 117) Figura 6 . .I Hilman PR . Nia-rr J Elman: : . '`_'M'Ci. 't'k`. f37_ 1211H . (1'.1.rs.1:'. v;5.I. ?
  • 86. BLGOZJED/ l . '36 Elerclclos. 1) Dibujense los arboles de busqueda en anchura y en prolundidad. con expansion de izquierda a derecha. para el espacio de la ligura 2 (sin tener en cuenta, por tanto, los numeros que aparecen entre paréntesis). Comparense. en cuanto al nomero de eslados generados y el numero de examinados. los distintos arboles de busqueda. @Oué sucede si se expande, en las 6 eslrategias, de derecha a izquierda? 2) Existe otra estrategia inlennedia entre las escaladas irrevocables y la escalada en prolundidad. Consiste en añadir a ABIERTOS oomo nuevos nodos solo aquellos que oorresponden a estados cuyo valor heuristico mejora el del estado que esta siendo expandido. Dibujar el arbol de busqueda con el espacio de la ligura 2. Estudiar su implementacion (basta con moditicar i-: -zpzuñrzzliz -r: :»: :li: :). ;Puede aplicarse una idea de ese tipo para encontrar una variante de primero el mejor? En cuanlo a la oomplejidad algoritmica, su comportamiento en el peor caso es el mismo que el de la busqueda en profundidad. tanto en tiempo como en espacio. Es un mélodo exhaustiva y oomplelo: esto es. encontrara una solucion sl existe alguna, aunque no garantiza que dicha solucion sea de longitud minima. En lo relerente al aprovechamienlo de Ia heuristica. es claro que el mélodo primero el mejor es mucho mas convenienle que los mélodos de escalada (usa la informacion de un modo global y no de un modo local), pero hay que tener el cuenta el coste en tiempo que requiere el mantener ordenada la lista de ABIERTOS (o, equivalentemente, el coste de acceder a ella calculando el minimo de los valores heuristicas: ver mas abajo). En cuanto a Ia implementacion. varias soluciones son posibles: - moditicar solo xearçra r,1:iaI-l`ir: :i: lc3r3-a-&J-iyraticiir para que ordene en cada ocasion la Iisla ABIERTOS; - modificar también ez-: ymi n dir-n . ::ci : :u de manera que devuelva ya ordenados los nuevos nodos (en esle caso, seria exactamenle la misma funcion que la necesaria para la busqueda de escalada en profundidad): aprovechando que ABIERTOS ya esta ordenada. se puede implementar renang-ani : a I-l`liZ: ~Ci. Z:: i--~3 - e-r-zçzariciilz' con un algoritmo de mezcla. en lugar de ordenacion. con el consigulente ahorro en tiempo; - se podria modillcar el acceso a ABIERTOS. de modo que en lugar de extraer siempre el primer elemento de la Iista. se extraiga el nodo cuyo estado tenga el valor heuristica mas favorable; si se adopta esta solucion no seria necesario . ) Rano. PR . Muro 'J Ram-m hbrairoar 9, 193.9 - (Lusa &visir
  • 87. BUSOUEDA 87 modificar los subalgoritmos reorqanizar-nodos-a-expanctir y expandir- nodo. pero nos veriamos obligados a variar el programa genérico b: : squecia. Elerclclos. implementar las tres ideas anteriores. Estodiese qué sucede con las versiones en arbol y en gralo. Para terminar este tema comentamos una familia de variantes de los métodos de busqueda heuristica vistos hasta ahora. Se trata de los malodos de busqueda en hazo en rayo (el simil provlene la busqueda con una Iinterna. en la que el haz de Iuz solo ilumina una parte del espacio de bosqueda). En esta oolecclon de métodos. se tija un Iimite. sea n. que va a ser utilizado para podar de una manera rigida el espacio de estados. Segon en qué momento se utilice el Iimite n tenemos variantes dilerentes de la busqueda en haz. En primer lugar, el Iimite n puede ser inlerpretado como un Ilnnile en anchura. Esto significa que al expandir un nodo, nos quedamos tan solo con los n nuevos nodos mas lavorables (o con todos los que haya, si se generan menos de n). En este caso. todavia podemos elegir entre situar esos elementos al comienzo de ABIERTOS (con lo que tenemos una variant& de la busqueda de escalada en profundidad) o reordenar toda Ia lista de ABIERTOS (varianle de Ia busqwda primero el mejor). En ambos casos. si n = 1 reencontramos la busqueda irrevocable de escalada por la maxima pendiente. Otra varianle en la misma Iinea consiste en interpretar el Iimite n como la longitud maxima en Ia lista ABIERTOS, descartando los nodos menos prometedores. En esta version. se lncluyen. en primer lugar. todos los nuevos nodos y, en segundo lugar. dejamos en ABIERTOS solo n nodos. Es también una variante de Ia busqueda primero el mejor (pero dlstinta de Ia anterior). En este caso. seria apropiado utilizar un vector para almacenar ABIERTOS en lugar de una Iista. Si la longitud maxima permltida es 1 no hay diferencia oon las busquedas anteriores y, por tanto. volvemos a encontrar la busqueda irrevocable de escalada por la maxima pendiente. La ventaja de los métodos en haz es que reducen draslicamenle el espacio de bosqueda. Sin embargo. se pueden perder soluciones (se trata de métodos incompletos). Elerclclcs. Estodiense los modos de implementacion de las distintas busquedas en haz y oomparese su comportamiento en ejemplos concretos (problema del tren, 8- puzzle) para diterentes valores del Iimite n. J kantoran Manu Bañares Mancur? . 1998- 0441809697
  • 88. SUSCUFD/ l 11:' TEMA 5. Basgueda de Lina solucion éptima 5.1. Estrategias no informadas para Ia busqueda de una solucion éptima. Comenzamos planteando el problema a resolver. Este tipo de estrategias aparece cuando en el sistema de produccion el disparo de las reglas tiene asociado un coste. que. en lo que sigue. sera un numero (real o natural) estnctamente mayor que cero. Esta condicion es equivale a que en el espacio de estados cada arista tenga asociado como peso un coste numérico mayor que cero. Llamaremos coste de un camino en el espacio de estados a Ia suma de los costes de las aristas que I: ) constituyen. Como es habitual. la longitud de un camino es su nomero de aristas. Si el coste de cada arista es l, coste y longitud coinczden. Este es el caso en sistemas de produccion para los que ninguna nocion de coste es adecuada. pero para los que queremos aplicar las estralegias de busqueda de una solucion optima. EI problema consiste pues en encontrar una solucion opt/ ma, es decir un camino solucion cuyo coste sea minimo entre los de los caminos solucion. A un tal camino, se Ie denomina camino solucion Optima y a su coste. coste optimo. Por ejemplo. en el problema del tren introducido en el apartado 4.1 podriamos estar mteresados no solo en encontrar un trayecto entre la ciudad de partida y Ia de Ilegada, sino en encontrar uno de duracion minima. En ese caso el peso de cada arista deberia ser Ia duracion del viaje. Si estuviésemos Interesados en minimizar el numoro de kifometros, entonces deberiamos disponer para cada arista del numero de kilémetros. Por Ultimo. si nos interesase tan solo encontrar el trayecto con el minimo numero de trasbordos. dariamos a cada ansta el peso 1. Una primera estrategia para resolver el problema planteado consiste en mantener Ia lista de ABIERTOS ordenada. pero en lugar de hacerlo respecto a los valores heuristi-: os como sucedia en "primero el mejor", se ordena respecto al coste de los caminos delinêdos por los nodos (apoyandonos en Ia informacion relativa al pun u]. . .l Fu'. itu? P R Mur? ? . J 63731.33:: hhrcinm-. r r? , 1321H ~ [Tairxrt 5k; 5.1,?
  • 89. BLLSOLJED/ t 89 Denominaremos a las estralegias que Ilevan a cabo esta idea "primero el menos cosloso". Se tratara de estralegias que pennilirén calcular soluciones de coste éptimo, pero que van a ser tan inelicaces (en tiempo y en espacio) como la busqueda en anchura. De hecho, si el coste de cada arista es una oonslanle lija k (antes hemos comenlado el caso k = 1), tendremos que eslas estralegias son equivalentes (se examinan y expanden los mismos estados y en el mismo orden) a Ia busqueda en anchura. Por otra parte, si el coste es oonstante y ordenamos ABIERTOS de mayor a menor, obtendremos un comportamiento equivalente al de la busqueda en prolundidad. En cuanto a Ia implementacion, supondremos conocida una funcion »idêiun diusia-arista (asked-if. estauflamlfl que calcula el cosle de Ia arista que se supone que existe de 9st, adi: ; a esradoz. En estas condiciones. si los nodos tienen al menos informacion relativa al ? satire (Ia informacion relativa al a s. s tacit: es obligatoria), se puede calcular el cosle del camino "contenido" en un nodo a partir exclusivamente del nodo. Sin embargo. para evitar el recalculo es mucho mejor añadir una nueva informacion a los nodos que almacene el coste del camino de ese nodo, calculando su valor oonforme se va desarrollando el proceso de busqueda (Esta misma idea podia haber ser utilizada en "primer lugar el mejor". almacenando en los nodos el valor heurlstico del estado correspondiente; esta idea es explolada en los algoritmos A del siguienle apartado). Habitualmente se denomina q a esta nueva inlonnacién (oomo se llamaba 'n al valor heurlstico). En general, el valor de q dependera del nodo (es decir. del modo de Ilegar a un estado) y no del estado en si. En el caso de que el espacio de estados sea un arbol. solo hay (a lo mas) un camino que une el estado inicial con cualquier olro estado y asi el valor de a depende del estado unicamente. Esta dilerencia es esencial y, por lanto. va a haber dos estralegias dilerentes segan se considere que el espacio de estados es un arbol o un gralo. En el caso de Ia estrategia 'primero el menos costoso" en arbol. las moditicaciones a realizar en la implementacion son las siguientes: 1) Al crear el nodo inicial se actualiza la informacion a, poniendo el valor O. 2) La funcion : Enrqanl: ar-IISdGS-E-EXDAnuHLI ordena ABIERTOS de menor a mayor valor de q (aqui se pueden aplicar tres estralegias dilerentes, como sucedia en 'primer lugar el mejor'). J Harno. PR . ULYD 'J Hanara: Mumbai' 27. 1.0.19- &A6055337
  • 90. u; n; BUSCUFDA 3) La funcibn éi-iynfwrbiilL'-rgi m; puede ser expresada en notacién algoritmica del szguicnle modo: Expandir-ncdo (n) --> lista nodos : = estado-denodo (n) (e1, e, ) : expandir~estado (e) Iista-nuevos-nodos : 0 Desde I 1 hasta r hacer Construir un nodo n. con informaciones: estado de n; :ei g. coste de n. :costearista (e. e.) + valor de g en el nodo n padre de n. : n Añadir el nodo asu' Conslrufdo a Ia Iislanuevos-nodos devolver (Insla-nuevos-nodos) Veamos un qemplo artnficial del funcionamiento de Ia estrategia "primero el menos cosloso" en arbol. Consideremos el érbol de estados de Ia iigura 1. en el que los estados son Ietras. el estado inicial es l y los dos Unicos estados objetivos son O1 y O2. EI cosle de las aristas ha sido anolado al lado de cada una de ellas. Figura 1 EI arbol de busqueda ha sxdo recogido en la hgura 2. en Ia que aparecen lodos los estados generados (todos en este ejempla), Ia informacién g; aparece al lado de los estados (Ia nnformacién pamit; esté nmplicita por tratarse de un érbo/ de bnsqueda) y los nodos han sido numerados (con numeros subrayados) segan van siendo explorados (asl. un estado no numerado quedaré en un nodo de ABIERTOS y un estado numerado. y no ob1etivo. quedaré en CERRADOS). En caso de conflncto . .I Antum PR Mw? ? J Binsar. : . 'u_'Ja-r. v.'f. k1r3?_ UPJUI . (I'. {Ar$.1:`. *i 5.1.?
  • 91. BLLSOUED/ l 91 (nodos con igual valor del campo g). elegimos un nodo cualquiera (en el ejemplo hemos elegida el que hace terminar més répidamente el proceso de busqueda). Figura 2 Como es habitual, esta estrategia de control también funcionaré oorrectamente para espacios de estados con cic| os. pero se perderé tiempo y espacio al re-examinar y re-expandir ciertos estados. En el ejemplo de Ia tigura 3 puede versa que existen 4 caminos solucién: uno de I a 01 (ooste 7) y tras de I a 02 (de costes 7. 6 y 7). En el érbol de basqueda para "primero el menos costosa" en érbol que aparece en la tigura 4 puede verse que ciertos estados son ra-axpandidos (notar que en este caso, el érbol de busqueda no puede ser un subgrafo del espacio de estados). J Rabnowkn. Mmw Hanami November? . 1993- Cuma 96-97
  • 92. BUS CiJFD/ t 92' a; a o ar e 0.7 02.7 D.6 026 Figura 4 Una primera idea para evitar ese recélculo seria hacer exactamente la misma adaptacion que se realize para pasar de érbol a grafo en estrategias como profundidad. anchura, etc. Es decir, solamente añadimos la gestién de una lista de estados CERRADOS y no expandimos los estados que ya aparecen en ABIERTOS o que estén en CERRADOS. En Ia hgura 5 aparece el érbol de busqueda que corresponderia con Ia estrategia asi esbozada al espacio de estados de Ia tigura 3 (el érbol de bdsqueda vuelve a ser un subgrafo del espacio de estados). Como puede observarse, sea cual sea el nodo de coste 7 que elijamos. habremos perdldo el camino solucion éptimo. La razén es que las anstas que aparecen punteadas no Ilegan a ser consideradas. La solucion consuste en considerarlas, pero no para dar lugar a nuevos nodos (como sucedia en Ia estrategia en érbol). sino para revisar los valores a: que ya aparecian y modificar Ia informacion p i~z: l;~3 en caso de que el nuevo cammo sea menos costoso que el que habia sido elegzdo hasta ese momento. . .I Antum PR . Hum J E'av1,: .-. :~. : . 'u_'lrr. v.'f. h'. rt? _ 1211H -l'j`. ur$.1:`. *i, '.| .-'
  • 93. BLLSKNJED/ i 33' Asi, para obtener una version de "primero el menos cosloso" en graio que asegura el hallazgo de un camino solucion éptimo debemos modificar ez-zgaaruji; r -i'| Ii: ~Ii-: Z~ del siguiente modo: Expandir-nodo (n, ABIERTOS, CERRADOS) --> lista nodos e : = estado-de-nodo (n) (e1. e, ) : expandir-estado (e) Iista-nuevos-nodos : () Desde i 1 hasta r hacer coste-auxiliar : = ooste-arista (e, e.) + valor de g en ei nodo n Si e; aparece en un nodo n' de ABIERTOS entonces Si coste-auxiiiar < valor de g en el nodo n' entonces modificar (destructivamente) en n' las informac. padre : n g : coste-auxiliar (estas modiiicaciones alleran ABIERTOS) si no : no hacer nada si no Si ea no esta en CERRADOS entonces Construir un nodo n. con informaciones: estado de ng : e. g. ooste de n. : coste-auxiliar padre de ng : n Añadir el nodo asi oonstruido a Ia Iistanuevos-nodos devolver (Iista-nuevos-nodos) Es muy importante notar que *'_'. '.[li*-. 'li". iiiL ~r; :_ir; : pasa de ser una funcion a ser un procedimienio funcional. puesto que los resultados de su evaluacion pueden dar lugar a dos prooesos: modificacion (en ocasiones) del parémetro ABIERTOS y (siempre) devolucion de una lista de nodos nuevos (eventualmente vacia). Las caracteristicas de Common Lisp hacen que al rnodificar (destructivamente) alguna variable generalizada interna de un elemento que sea miembro de una Iista. ésta quede automaticamente actualizada, por lo que implementando de modo natural el anterior algoritmo obtendremos el resultado buscado. (Con "modificar destructivamente" nos referimos a un proceso que no reoonstruya un nuevo nodo. sino que modifique Ia estructura intema, las variables generalizadas, del nodo que esta siendo modiiicado. ) Una oonsecuencia de esia caracteristica es que J 9.111,30- PR . NI-YG 'J 9.113195 hbrarfñar 9. 121? - 04160553)?
  • 94. gLlSCijêDrñ 34 ABIERTOS puede quedar desordenada tras una evaluacion de a r : i1rA-r: i:: i.: .. Por tanto. la idea de programar l't'if. ;iff`*. i`. ii3I-T'1C~Lii*.1--iñ-éf I' . iiir como un algoritmo de mezcla de los nuevos nodos y ABIERTOS no es aplicable (al menos direciamente). Cbservemos también que siempre se revisa en ABIERTOS y nunca en CERRADOS. de modo que esia segunda lista puede seguir siendo una lista de estados (y no de nodos). La razon es que una vez que se expande un nodo. ya se ha encontrado Ia mejor manera (camino éplimo) de Ilegar al estado de ese nodo (esto es un resultado teériso que señalamos sin demoslracson). Para el espacio de eslados de la iigura 3, el arbol de busqueda "primero el menos cosioso" en grafo queda recogido en Ia iigura 6. en ia que las flechas punteadas no signiiican aristas no consideradas. sino aristas que han formado parte del arbol de busqueda en aigun momento y que después han sido desechadas al encontrarse otros caminos meiores. Del mismo modo. los costes tachados corresponden a costes que han sfdo meicrados. Figura 6 Ejerclclos. Escnbir programas Common Lisp que correspondan a las dos estraiegias explicadas en este apartado. Escribir programas para resolver con ellos el problema del tren, con las tres posibilidades para los costes explicadas mas arriba. . .I Firman PR . Kmr J Elvnaraz: .'~: si-x-. vn: w.r:7_ 1575H . i'j'. urs.1:'. *i ; If
  • 95. BLLSOUED/ l 95 5.2. Estrategias heuristicas: algoritmos A. Consideremos de nuevo el problema del tren. Supongamos que disponemos de las 'coordenadas' de cada una de las ciudades y. para cada trayecto entre dos ciudades adyacentes, del numero de kilometros que realiza el tren en ese lrayecto. Situémonos en un momento intermedio del proceso de busqueda. Para decidir cual es el siguienle paso a dar. es decir cual es la siguiente ciudad a Ia que viajar. podriamos utilizar varios criterios: a) Elegir una cualquiera. sin tener en cuenta el conocimiento adicional del que disponemos (coordenadas, costes). Es esencialmente lo que hacen las busquedas no informadas en anchura o profundidad. No se garantiza que se vaya a obtener un camino solucion optimo ni tampoco que la busqueda esté dirigida por ninguna otra consideracion. b) Tener en cuenta Ia estimacion (heuristica) de Ia cercania dada por Ia distancia en linea recta a la ciudad objetivo. Esto es Io que hacen las escaladas o "primero el mejor'. En eslas aproximaciones no se considera Ia distancia previamente recorrida (es decir. la informacion acerca del ooste de las aristas). La busqueda estara dirigida por cierto Conocimiento especitico. aunque no totalmente seguro. pero no se garantiza el hallazgo de una solucion Optima. c) Ir calculando el ooste de los caminos que van siendo construidos, eligiendo en cada paso el menos costoso. Se trata de las estrategias explicadas en el apartado anterior. Aseguran el hallazgo de una solucion optima. pero. al no tener en cuenta el oonocimiento heuristica. pueden resuliar tan ineficaces como Ia busqueda en anchura. En este apartado, estudiamos Ia posibilidad de integrar las aproximaciones (b) y (c) anteriores. para obtener estrategias que encuenlran soluciones optimas. pero de un modo mas eiicaz que 'primero el menos costosa'. Es lo que se conoce en Ia Iiteratura con el nombre de Algorilmos A, nominacion cierlamente poco descriptiva. Para esta familia de algoritmos los nodos han de disponer (al menos) de cuatro iniormaciones: estado, padre. q (con el mismo signiticado y modo de calcula que en "primero el menos oostoso”) y h (valor heurislico. que solo depende del estado y que puede ser calculado por una function-heuristica como en “primero el mejor"). Mas concretamente. vamos a suponer que interacluaremos con los nodos por medio de las siguientes operaciones. J kmaren. Mm-"J Hanami November? . 1993- Cuma 96-97
  • 96. BIBOUEDA 96 Una operacién da construocién: (defun area-nodo (estado padre g h) . ..) --> nodo Cuatro operaciones de acceso: (defur. estado-de-nodo (nodo) . ..) ~-> estado (defur. padre-de-rlodo (nodo) . ..) --> nodo o Nil (defur. g-de-nodo (nodo) . ..) ~-> numero >- O (defur. h-de-nodo (nodo) . ..) ~-> numero >- O Estas cinco operaciones lienen el significado evidenle. Ademés necesitaremos dos operaciones de modilicacién (que ya eran necesarias en la estrategia 'primero el menos costosa' en gralo del apanado 5.1): (defur. modifica-padre (nodo nuevo-padre) . ..) --> indefinido (defun modifica-g (nodo nuevo-q) . . . ) --> indeñmdo Hemos especificado que los valores devueltos por las dos operaciones de modificacién queden "indefinidosi porque estas dos operaciones deben ser utilizadas para obtener un efecto lateral: la modilicacién destructiva de Ia informacion padre (o g. respectivarnente) que estaba asociada al nodo que aparece como primer argumento. Obsérvese que na tiene sentido incluir operacianes de modificacién para el estado de un nodo (en esencia, el eslado es lo que caracteriza al nodo) ni para Ia informacion h (puesto que estamos suponiendo que Ia funcion heuristica solo depende del estado y no del modo de Ilegar a él). Con esta estructura para los nodos, los cambios en los algoritmos son los siguientes: a) En el esquema genérico de basqueda (en gralo). CERRADOS tiene que ser una lista de nodos (y no de estados). b) En reorgani zar-nodos-a-expandir. ABIEHTOS se ordena por el valor de g + h (= f. segan la tenninoJogia habitual). Esta es Ia razén por la que CERRADOS debe ser una lista de nodos: puesto que ABIERTOS es ordenada apoyéndosa en una informacion que no es segara (Ia heuristica h). podria suceder que un nodo fuese extraida de ABIERTOS antes de haber encontrado el mejor modo de Ilegar al estado comespondienle y. por tanto, que los costes dahan sar revisados en CERRADOS ademés da en ABIERTOS. c) Por lo anterior, el algoritmo de expansion de un nodo queda como sigue: Expandir-nodo (MKBIERTOSBERRADOS) --> lista nodos e : = estado-de-nodo (n) J RIJDIbRR, Mun/ J SMUN; Munawar! . 1998 - Cuma 9597
  • 97. BLLSKNJED/ l 97 (91. (m) : = expandir-estado (e) Iista-nuevos-nodos : = () Desde i 1 hasta r hacer coste-auxiliar : coste-arista (e. e.) + valor de g en el nodo n Si ei aparece en un nodo n' de ABIERTOS entonces Si coste-auxiliar < valor de g en el nodo n' entonces moditicar en n' las informaciones padre : n g : coste-auxillar (estas modificaciones alteran ABIERTOS) (si no : no hacer nada) si no Si e; aparece en un nodo n' de CERRADOS entonces Si ooste-auxiliar < valor de g en el nodo n' entonces moditicar en n' las inforrnaciones padre : n g : coste-auxiliar eliminar n' en CERRADOS añadir n' en Iista-nuevos-nodos (si no : no hacer nada) si no Construir un nodo na con informaciones: estado de n, : e; padre de ng : n g. coste de n. :coste-auxlllar h: valor heurlstico de e; Añadir el nodo asi construldo a Ia Iista-nuevos-nodos devolver (lisla-nuevos-nodos) EI anterior algoritmo no es dificil de implementar en Common Lisp. salvo por el punto en el que es necesario 'eliminar n' en CERRADOS', puesto que se trata de una moditicacién destructiva de un parametro lista (y no de la modilicacion interna de uno de sus miembros oomo sucede en el caso de ABIERTOS). Pese a que este paso puede ser programado de muy diversas maneras, preferimos alterar la estructura general de los programas de bnsqueda, para tener un conjunto de funciones adaptadas a los esquemas A (y, con modilicaciones menores. a las bñsquedas en anchura. profundidad. primero el mejor y primero el menos costoso; J 9.111,30- PR . NI-YG 'J 931776:: hbrarfñar 9. 121? - 04160553)?
  • 98. mbowuu u tan solo los esquemas de escalada necesitarian alguna modilicacion Ilgeramente mayor para adaptarse a Ia nueva estructura). EI cambio mas importante consiste en mantener una (mica lista, Iamada NODOS, que almacene todos los nodos que van siendo generados en el proceso de busqueda. Los nodos permitirén ahora acceder al menos a 5 lnlormaciones: est ado. padre. g, h y ubicacion. La nueva informacion ubicacion s6|0 puede tener oomo valor los simbolos ABIERTOS o CERRADOS. Podemos decir que en la lista NODOS van a oonvivir las dos Iistas de ABIERTOS y CERRADOS, distinguiéndose sus respectivos miembros por el valor de ubi cacion. Seré por tanto necesario añadir para los nodos dos nuevas operaciones, una de acceso: (defun ubicacion-de-nodo (nodo) . ..) --> ABIERTOS o CERRADOS y otra de modifrcacion: (defun modifica-ubicacion (nodo nueva-ubicacion] . .J --> indefinido ademés de cambiar la cabecera de c rea - nodo: (defun crea-nodo (estado padre q h ubicacion) . ..) --> nodo Una vez oomprendida la nueva estructura de almaoenamiento. no es dificil modificar el esquema de bésqueda para implementar los algoritmos A. Trascribimos a continuacion los fragmentos Lisp tundamentales. ; r Esquema generic: A: (nnfun busqueda (1 (let [(H03OS [L1=t tcrea-nodo-in1c1al)| )l (oo (rel-nodo taeleccrona NODOS) Cseleccnona HOUDS)I) (lor [eq cL~ncac HILJ lestndo-objetivo! (: s:adc~dc~nodo e4~n3d: lJl li! [eq ul madu NII] lso. u:Inn nn encontranal lezcribe-solucion el-n0dol)l tiodtrica-ubtcaclcn el-nodo 'CERRADDSJ (setq HUDCS (appen: (expandir-nodo : A-nada NODOS) HDDUEI) (1"fornacion-pruuuec~busqueda ul~nudu)lJ) ; Representazion de los noda: e implementacion de las operaciones: (ncfstruct nodo estado padrc q n unicacionl (nnfun erna-nnao rpsraac padre q n ubtczczonl (nak: -nodo : estado estado : padre padre 39 9 zh h zuhzcacton ubicacznnll (defun estado-de-rodo (nodo) (nada-estado nodo)) J RcIbIbr'P. R.MIr0~'J Bañares Hammer! . 1993-0000960?
  • 99. avsousm as (dlfun padrc-do-nodo (nodo) (nodo-padre noda)) (defun g-de-nada [nodo] (nodo-q nodo)l (delun h-de-nodo (nodo) (nodo-h nodo)l (defun ubicacxon-do-nodo (nodo) (nodo-ublcaclon nodo)) (defun Iodifica-padre (noda nueva-padre) (set! (nodo-padre 3000) hU8V0'DêGIO)| (darun nodlzica-q (nodo nuevo-q) (set! (nodo-g nodo] nuevo-9)! (darun nodirica-ublcacion Inodo nueva-ublcacionl (sat! (nodo-ubicacinn nodo) nunva-ubicacionlb ; crea el nodo xnzcxal (las funcxones estado-inicial ; y funcion-heuristica dependen del problena a resolver! : (dcfun erna-nodo-inicial t) (let ltestado-iniclal (estado-1nsc1al)I) (crea-nodo estado-inicial ; estado NIL 3 padre 0 3 Q (funcion-heuristica estado-inicial) : h 'ABIBRTOSIDJ ; ubicacion 3 Selecciona elige el nodo de menor valor f - g 4 h de entre los ; que estan en ABIERTOS; si no nay ninguno se devuelve NIL I1o que ; hace qu; on ocasionos ol-nodo no : ca : al. poro facilita ol control ; del bucle]. (defun aelecciona (lista-nodo: ) (do (lnoaoa lista-nodos (rest noaos)I lol-nodo NIL)] ([endp nodos) el-nodo) (let Itnodo (first nodoslêl (if (eq 'ABIERTOS (ubicacinn-de-nodo nodo)) (LI (or (eq el-nodo NIL> (< [+ qg-dc-nodo nodo) (h-do-nodo nodo)I (0 lg-de-nodo el-nodo! th-de-nodo el-nodo)})) (setq el-nodo nodoI>l)I) ; Expansion de un nodo truncionea que dependen del problema: expandir-estado. 3 coste-arista. estados-igua1c: ?J (defun expandxr-nodo [nodo lista-nodos! (let ltestado (estado-de-nodo nodo! ) (lista-nuevos-nodos 11Lst l)I (do tlcstadas tcxpnndit-estado estado) (rast nstados)| ) tlendp estados) lista-nuevos-nodos) (lot l(estado-nuevo Itlrst estadoslll (let (inode-viejo (encuentra eatada-nuevo lista-nudasl) (coste-auxillar K* (coste-arista estado estado-nuevo) (g-dc-nada nodo)))) (1! (eq nodo-vlejo NIL] (setq last&-nuevos-nodos lcons lcrea-nodo estado-nuevo ; estado nodo ; padre coste-auxilint ; g (funcion-heuristica estado-nuevo) ; h 'ABIERTOSD 3 ubicacion lista-nuevas-nudasb] (1: (< coste-auxiliaz tq-de-nodo nodo-vlejoal (progn lmndiflca-padrc nodo-viojo nodo] lmodltica-9 nodo-viejo coste-auxiliarl J Ebo/ ER. Mav/ J bahwa Namum. ma- Camus-O?
  • 100. BUSOUEDA 100 : :za-Ji fi-: a~_`: ~;~: n:; an ngan-ninja 'IU' "RTCIISIU | ,I 2 : I : _I X , ' usb: :: Ltzmu a 'Jawas sup-ntu: cv: ... .4--: - v -zvtzaz " lista-nodos! » Itoe: nraoshlb Icsmacios -g. ;alc. '.': “ lezLa~nc de naar: : (first n-: -d: -_'. _I; uz-. tndui-I . d m i' ru, nrrznr-ljnlj) Veamos algunos ejemplos del comportamiento del algoritmo A Conslderemos el espacio de estados que aparece en Ia flgura 7, en el que los valores heuristicas de los estados estén escritos entre paréntesis. U8) D (3) Figura 7 EI arbol de busqueda queda recogido en Ia iigura 8. en la que los nameros a continuacién de los estados corresponden a los valores de g y h, respectivamente. Figura 8 J HuubwRRhMMvfJ Bawan hbmwdhwalsas-Cuma5697
  • 101. BUSOUEDA ; or um 2 3 Am) BW v 2 0 (o) Figura 9 En este ejemplo. Ia estrategia A ha encontrado un camino solucién éptimo, pero, en general, no tiene por qué sar asi. Con el espacio de estados da Ia tigura 9 sa obtiene el érbol de busqueda de la iigura 10. donde puede comprobarse que el camino solucién encontrado no es el éptimo. 1 LQ5 AZ3 334 i aeo Figura 10 Si nos preguntamos cuél es Ia razén por Ia que en este segundo ejemplo Ia solucién éptima no es encontrada, veremos que la causa es que el valor heuristica de B, h(B) = 4, es demasiado grande (se puede ir hasta 0 con ooste 2). Ello hace que la ordenacién resPBCN a t = g + h en ABIERTOS rasuna engañosa y el nodo de estado A pasa por delante del nodo de estado B. perdiéndosa el camino éptimo. Para generaliza! este anélisis. introduzcamos algunas nociones teéricas. Si n es un nodo. el valor de q para n. denotado g(n). es el ooste del camino 'contenido en n" desde el estado inicial eo hasta e = estadom). Puesto que en el algoritmo A se revisan los nodos respec1o a g. rasuna que g(n) es el coste minimo entre todos los caminos desde eu hasta e que hayan aparecido hasta ese momento. Si e es un estado tal que existe un camino desde ea hasta él. definimos: '(3) = minimo {coste(C); C es un camino de eo a e). Sagan la observacién anterior, se verlficaré que g(n) >= g'(e) para todo nodo n tal que estado(n) = e. J kapacak! ? Manu Baharu Nawvrura 1998- 0441809697
  • 102. BUSOUEDA 102 Por otra parte. si n es un nodo. el valor de h solo depende del estado e = estadom). por lo que lo denotaremos h(e). Se Ie denomina termina heuristica. Se interpreta como una estimacion del minimo ooste entre los de los caminos que van desde e hasta algan estado objetivo. Se trata de una funcion de evaluacion eslética (que en la implementacion Lisp denominamos funcion-heuristica) que depende del Conocimiento que tengamos sobre el problema a resolver. Si e es un estado desde el que podemos encontrar algan camino hasta alguno de los estados objetivo. definimos: h'(e) = minimo {ooste(C); C es un camino de e hasta alguno de los estados objelivo). En general, h y h' no son comparables. Es decir, no se verifica que h(e) <= h'(e) para todo e. ni tampoco h(e) >= h'(e) para todo e. Si e es un estado lal que existe un camino solucion que pasa por él, definimos: f'(e) = g'(e) + h'(e). que es el minimo de los costes de lodos los caminos solucion que pasan por e. El minimo de f'(e) para todos los eslados e (para los que esté definido F) seré el coste de cada una de las soluciones oplimas. En general. f'(e) y t(n) = g(n) + h(e), oon e = estadom). no seran comparables. por no serlo h y h'. En Ia mayoria de las ocasiones. las funciones g', h' y f' serén muy costosas de calcular (en general, requerirén bnsqueda). asi que deben ser interpretadas oomo deliniciones teoricas que, en principio. no seran calculadas. De hecho. se puede interpretar que la estrategia "primero el menos costosa" va calculando los valores g'(e) hasta encontrar un camino solucion optimo (se calcula por tanto también el minimo de los f'(e). e implicitamenle el valor h' de todos los eslados que torman parte del camino solucion). veremos a continuacion que esta interpretacion no siempre es cierta para los algoritmos A. Votvamos al ejemplo estudiado en las figuras 9 y 10. Podemos reinterprelar los nameros que alli aparecen diciendo que h(B) = 4 es mayor que h'(B) = 2, lo que implica que el valor de f = g + h para el nodo que corresponde a B (3 + 4) es mayor que I'(B) = 5. De hecho, el valor de f para el nodo de B es también mayor que el valor de f para el primer nodo que aparece de estado O (6 + O), por lo que al ordenar ABIERTOS este Ultima nodo pasa por delanle del de B (incorreclamente: f'(B) es menor que f del nodo que contiene en ese momento a O). J kapacak! ? Manu Bañares Nowvrura 1998- 0441809697
  • 103. BUSOUEDA JM La situacion anterior no podré producirse si h es una subestimacion de h'. Si Ia heuristica h verilica que h(e) <= h'(e) para todo eslado e (para el que exista h') se dioe que h es una heurisrica admisible. La importancia de Ia anterior nocion viene determinada por el siguiente resultado: si un algoritmo A uliliza una heuristica admisible. entonces. si existe solucion. encuentra una solucion oplima. Una inslancia del esquema A en Ia que Ia heuristica sea admisible se denomina algoritmo A'. Asi, un algoritmo A' siempre encontrar& una solucion Optima (si existe alguna). Obsérvese que si tomamos oomo heuristica Ia funcion identicamente nula (h = O). siempre subestima h', es decir. siempre es admisible y. por lanto, A es A' y siempre encontrar& una solucion optima. Pero este no es un resultado nuevo. Si h = O. entonces f = g: es decir, Ia basqueda esle controlada Iolalmente por Ia infonnacién q y en este caso el algoritmo A se comporta oomo 'primero el menos costosa'. Verernos mas adelante que éste es, en cierto sentido, el caso menos interesante entre los A'. Pese a que. evidentemente, la admisibilidad de una heuristica tiene imponantes repercusiones en el comportamiento del algoritmo A, puede parecer un concepto meramente teorico. pueslo que, oomo ya hemos indicado, el calcule de h'(e) no tiene por que ser sencillo. Sin embargo. para deterrninar la admisibilidad de una heuristica no es necesario calcular con exaciitud los valores h'(e). basta con demostrar que esos nameros acotan superionnente al valor heuristica y. en ocasiones, esa demostracion no es dificil. Por ejemplo. oonsideremos el caso del B-puzzle, oon ooste de cada arista igual a 1 y con heuristica el nnmero de digitos mal situados. Puesto que para situar un digito mal situado se requiere al menos un movimiento (més de uno en Ia mayoria de las ocasiones). resulta que esta heuristica es admisible. Si consideramos el problema del tren, con coste de cada arista igual al numero de kilometros del trayecto y con heuristica la distancia (en kilometros) en linea recla a la ciudad objetivo. es claro que Ia heuristica es admisible (Ia distancia més corta entre dos puntos es la delerminada por Ia recta que los une). En cambio, si el ooste de cada arista mide Ia duracion en horas del trayecio resulta que Ia heuristica no tiene por qué ser. en general. admisible (aunque sigue siendo una heuristica . ..). J Rasio/ PR, MKDVU Bañares November! . 138-00180969?
  • 104. BLlSCLtFD/ i . VJ-t B (4) 0410) Figura 11 La pnmera dilerencia de comportamiento entre "primero el menos costoso' y el algoritmo A es que éste puede no encontrar una solucion optima (la condicion de admisibilidad suprime esta diferencia). La segunda es que en un algoritmo A un estado expandido puede ser reexpandido mas adelante. Esto obliga a que CERRADOS sea una lista de nodos y no de estados. oomo sucedia en todas las estrategias de control anteriores. Veamos en un ejemplo artificial que esta situaczén puede eicctivamente producirse. AI espacio de estados de Ia iigura 11 le corresponde el arbol de busqueda A de Ia iigura 12. Notese que. aunque el espacio de estado tiene tan solo 5 estados. en ei arbol de busqueda son examinados 6 estados: C es examinada (iY expandido! ) dos veces. 1 | ,O.5 5_ I& S. . X.t 2 . .. 6. 015.0 5 [IU 3.1.4 Figura 12 La importancia del paso de un nodo n de CERRADOS a ABIERTOS reside en que todos los nodos producidos a partir de n, ya estén en ABIERTOS o en CERRADOS. debaran obiigaloriamente ser revisados y para aquellos que estén en CERRADOS se Ianza un proceso recurrente de revision y re-expansion, que perjudica . .I Antum PR . Kmr J E'av1,: .-. :~. : . 'h_'Jt'J'. iTC'k`. f3?_ 121% . ('. ':_. rs.1:'. v;5.I. ?
  • 105. BUSOUEDA 105 enormemente el numero de operaciones a realizar por el algoritmo. Por ello es de gran inlerés encontrar una propiedad teérica (el equivalente de Ia ”admisibilidad” para este problema) que garantice que los estados nunca seran expandidos mas de una vez. Si nos preguntamos en Ia iigura 11. qué anomalias o incoherencias han podido producir este comportamiento del algoritmo A. veremos que no pueden tener que ver con Ia admisibilidad de Ia heuristica (en el ejemplo es admisible). En cambio. si observamos localmente la relacién entre los costes de cada arista y los valores heuristicas de sus extremos, notarernos ciertas inconsistencias. Por ejemplo. la arista BC tiene ooste 1, mientras que el valor heuristica de B es 4 y el de C, 1. Parece claro que o bien B esta sobrevalorado o C esta intravalorado. La situacién inoonsistente es reoogida en la desigualdad: h(B) > h(C) + coste-arista(B, C). Si esta situacion no se produce diremas que se veritica la condicfdn de monotonia. Es decir. h es monétona si para cada arista (esei) del espacio de estados se verifica que h(eg) <= h(ej) + coste-arista(ei, ej). Para comprender mejor porque se denomina condicion de monotonia a la desigualdad anterior. observémos que si n; es un nodo obtenido por expansion de otro n; y h es monotona. entonces i(ni) <= t(n, ). En etecto. t(ni) = h(eslado(ng)) + g(ni) <= h(estado(n, -)) + coste-arista(estado(ni), estado(nj)) + gm. ) = h(estado(ni)) + g(n]) = t(nj). De hecho, no es dificil oomprobar también que si para todo nodo ni y todo hijo suyo n; se veriiica t(ni) <= i(n, -). entonces la heuristica es monétona. Notese que la propiedad de monotonia es local a cada una de las aristas, mientras que la condicion de admisibilidad se apoya en h' que requiere un conocimiento mas global del espacio de estados. Un resultado teorioo asegura que si Ia heuristica es monotona, en Ia ejecucién del algoritmo A ningnn estado volvera de CERRADOS a ABIERTOS. Por tanto. si h es monétona no es necesario revisar los nodos que ya estan en CERRADOS y el condicional correspondiente en Ia version de expandir-nodo que hemos dado en seudo-cédigo puede ser eliminado. De lo anterior se sigue que CERRADOS ya no tiene por qué ser una lista de nodos y puede volver a ser una Iisla de estados. En conclusion. si la heuristica es monotona el oédigo que implementa el algoritmo A puede ser exactamenle el mismo que el de "primero el menos costosa'. salvo que reorganizar-nodos-a-expandir ordena ABIERTOS respecto a f = g + h. en lugar de respecto a g. J maren. MANU Bañares Navevrura 1998- 0441809697
  • 106. BUSOUEDA 106 Obsérvese que la heuristica idénticamente nula es monotona, puesto que hemos supuesto que los costes de las aristas son positivos. En general. no es necesario comprobar arista a arista si se veriiica en cada una de ellas la oondicién de monotonia (dificil tarea en espacios de estados infinitos . ..). Por ejemplo. en el caso del B-puzzle, con ooste uno en cada arista y oon heuristica el namero de digitos mal situados, la heuristica es monotona. La razon es que un movimiento puede colocar en su posicién a lo mas un digito. En el problema del tren, con coste el namero de kilometros y con heuristica Ia distancia en linea recta a la ciudad objetivo, ésta es monotona: se sigue de Ia propiedad triangular de Ia distancia (d(a, b) <= d(a, c) + d (b, c) para cualquier a. b y c) y de que Ia distancia en linea recta es menor o igual que el nñmero de kitémetros que se realizan. En cambio, si el coste es Ia duracion en horas. Ia heuristica no tiene por qué ser monétona. En cuanto a las relaciones entre admisibilidad y monotonia. ya se ha comentado en el ejemplo de la iigura 11 que una heuristica puede ser admisible y en cambio no ser monotona. Sin embargo, la impiicacion contraria si que es cierta. Teorema. Si una heuristica es monoton& entonces es admisible. Demostraclon. Sea h una heuristica monolona y sea eo un estado cualquiera que puede ser unido por algan camino con algñn estado objetivo. Sea C = (eo. e. , en) un tal camino (es decir, en es un estado objetivo. lo que implica que men) =0). Puesto que h es monétona. se tiene h(eo) <= h(e1) + coste-arista(eo, e1) <= <= h(en) + ooste-arista(eo. e. ) + . ..+ coste-arista(en-1,en) = costetc). Y lo anterior es cierto para cualquier camino de eo a un objetivo. Iuego htea) <= h'(eo) y esto para cualquier estado eo para el que h'(eo) esté definido. lo que termina Ia demostracién. corolario. Si Ia heuristica es monétona. el algoritmo A es un A'. En particular, si h es monotona. el algoritmo A encuentra una solucion Optima (si existe alguna). Un mismo algoritmo A puede ser pgrametrizado por distintas heuristicasgcual es mejor? Ltamemos A. a un esquema que use h, y Ag al mismo pero que use hg. Supongamos que h. y hg son admisibles (o. con otras palabras. que A, , Ag son algoritmos A'). Diremos que Ag esta mejor informado que A, si h1(e) <= hg(e) para cada estado e. La razon de ser de esta deiinicién es la siguiente: si A. , Ag son dos versiones del mismo esquema A' y Ag esta mejor inionnada que Ag. entonces todo estado expandido por Ag sera también expandido por A1. En particular, Ag expande como mucho tantos estados como A. . J mainan. Miroi. ) Bañares Navevrura 1998- 0441809697
  • 107. BUSOUEDA 107 Segun el criteria anterior, Ia heuristica idénticamente nula define el algoritmo A' peor inforrnado. O dicho de olro modo, 'primero el menos oostoso" es el algorilmo que mas estados expande entre los algoritmos A que garanlizan que si se encuentra una solucion, ésta seré optima. En cualquier caso, es convenienle no extraer consecuencias precipitadas. EI criterlo anterior solo se refiere a Ia cantldad de calculo empleada para la expansion de estados, pero no hace referencia al namero de operaciones necesario para calcular los valores h(e). Es un fenomena bastante oomun que heuristicas mejor inforrnadas requieran también mas tiempo para su calcula. Los dos casos extremos son h = O. con ooste de calcula minimo. pero ninguna potencia heuristica. y h = h', de maxima potencia heuristica (de hecho es un conocimiento seguro). pero muy dificil de calcular (en el caso general. para calcular h' es necesario realizar una busqueda, lo que. evidentemenle. Iimita su interés como heuristica). Eferclclos. Hacia el final del apartado 4.1 se introdujeron cuatro heuristicas para el 8-puzzle y en un ejercicio una quinta. Supondremos que el coste de cada movimiento es 1. Se pide estudiar la admisibilidad y monotonia de las cinco heuristicas (una ya ha sido someramente oomentada en el texto), asi oomo cuales estan mejor informadas. EI final del apartado y del tema esta dedicado a un problema clasico en Inteligencia Artificial y también en optimizacion: el problema del viajante de comercio. Este problema fue brevemente introducido en un ejercicio del apartado 2.1. De él existen muchas variantes. La que nos interesa aqui responde al siguiente enunciado informal: "Un vendedor tiene una lisla de ciudades. cada una de las cuales debe visitar exactamenle una vez. Existen carreteras directas entre cada pareja de ciudades de la lista. Encontrar la ruta mas oorta posible que debe seguir el vendedor que empiece y termina en alguna de las ciudades'°. Al estudiar con mayor precision el problema, observamos que mas que una lista de ciudades necesitamos un mapa oon las ciudades y las distancias de las carreteras que las unen. Un ta] mapa puede ser represenlado mateméticamente por medio de un grafo no dirigido (sin direcciones en las aristas) y simple (es decir, sin aristas que unan un vértice a si mismo y con a lo mas una arista entre dos vértices). Un gralo complete es un gralo como los anteriores y en el que entre dos vértices distintos siempre existe una arista. Estos gralos quedan determinados por su nomero de vértices. En grafo oompfeto con n vértices suele ser denotado por K, .. En la iigura 13 aparece el grafos K. .. J RubnowRR, Muai. ) Bañares Nawrrura 1998- 0441809697
  • 108. BLSKNJED/ l 11.15 Figura 13 En un grafo complete, llamaremos ciclo total basado en un vénice v a un camino que, comenzando en v pasa una onlca vez por cada uno de los vértices del grafo y vuelve a v. En todo grafo completo existen ciclos totales. En K4 hay 6 ciclos totales, basados en cada uno de los vértices, que definen tan solo tres subgrafos, los que aparecen en Ia figura 14. Fijado uno de los vértices, cada uno de los subgrafos de esa figura representa dos ciclos totales, segan Ia direccion en que se recorran las aristas. Figura 14 Si el grafo complete. tiene pesos en sus aristas. llamaremos ciclo total éptirno (basado en un vértice v) a uno de los que tengan coste minimo entre los cic| os totales (basados en v). Para el 'mapa' recogido en la figura 15. los costes de los ciclos totales aparecen en Ia figura 16. Como se ve. el (inicc ciclo total (onico salvo Ia direccion de recorrido de las aristas) es el que aparece en Ia posicion central en Ia figura 16. En general. puede existlr mas de un ciclo total optimo. Figura 15 J 9.111,30- PR . NING 'J 9.113195 hbrmfñsr 9. 121? - 04160515537
  • 109. BLSKNJED/ l 109 11 7 14 Figura 16 Con la lenninologia introducida. el problema del viajante puede ser re-enunciado de modo mucho més conciso: "Dado un grafo completo con pesos en sus aristas (y un vértice v en él), encontrar un ciclo total éplimo (basado en v)'. Las ventajas de esla redelinicion del problema son malliples. Aparte de la concision ya mencionada, se obtiene una descripcion mucho mas precisa del problema. en la que las circunslancias irrelevantes han sido eliminadas (abstraccion). Por ullimo, este proceso de matematizacion o formalizacion del enunciado es un primer paso para Ia tarea de encontrar las estructuras de datos que van a permitir represenlar en el computador el sistema de produccion que resolveré el problema. En lo que sigue. ulilizaremos indistintamente la terminologia que proviene del problema inicial (ciudades. mapa. etc. ) y la de su formalizacion (vértices. grafo, ciclo, etc. ). Utilizando el mismo estilo que en el apartado 2.1. el planteamienlo delinitivo del problemas seria el siguienle. - EI problema del viajante del comercio. - Entrada: un nombre, asociado a un vérlice de un gralo complete. - Salida: un ciclo total (optimo), basado en el vértice con ese nombre. -Mediosz se dispone del gralo complelo con pesos en las aristas; se puede pasar enlre cualquier par de vértices dislinlos por medio de Ia arista correspondiente. Obsérvese que la palabra 'optima' ha sido escrita entre paréntesis al describir Ia salida del problema. Eslo es debido a que el problema del viajante puede ser inlerprelado como un problema de optimizacién (en esle sentido, solamente "primero el menos costoso" y los algoritmos A' garanlizan la solucion del problema) o bien oomo un problema de busqueda de un ciclo total (para el que podriamos aplicar cualquiera de las estralegias explicadas en el texto) en el que. después, se J Hubla. PR . Muro 'J Hanara-s hbrarfñar 9. 1.019- Cars-a 51537
  • 110. BUSOUEDA J 10 pide que Ia solucion enoonlrada tenga una clana calidad (oplimalidad, en este caso). EI siguiente paso consiste en elegir una represenlacion para el problema. Eslo conlleva buscar nociones adecuadas para los eslados y los operadores (en los lres niveles conceptual. légico y lisico). Por similllud con el problema del tren y vlendo que la entrada para el problema puede ser inlerprelada como una ciudad. podria suponerse que la nocion de ”eslado” adecuada puede idenlilicarse con "ciudad". Sin embargo, un analisis un poco mas detallado nos moslrara que eso no es cierto. ;Basta una ciudad para saber si hemos alcanzado el objetivo? Evldenlemenle no. La siluacién es muy dilerenle en el problema del lren: alli una ciudad basta oomo eslado. pueslo que solo nos interesa Ilegar a una ciudad lijada. En el problema del viajante saber donde nos encontramos en cada momento no es suficienle para describir el estado del proceso. La razén es que no solo buscamos un camino, sino un camino con restricciones. Las reslricciones se relieren al camino ya recorrido, Iuego éste debe format pane del estado. debe ser el eslado (notese que en un gralo complete un camino queda definida por cualquier secuencia de vértices en la que no haya dos vértices conseculivos repelidos). La siluacién, pese a lo que pudiese parecer en una primera observacién, es mucho parecida a la del problema de las n reinas (el eslado no puede ldentilicarse oon una posicion oon el tablero, sino que debe ser Ia conliguracién del tablero, lo que puede ser inlerpretado como un camino con reslricciones) que a Ia dal problema del tren. Podria pensarse que con la inlormacién relativa al 'padre" en los nodos. puede delinirse oomo estado sélo la ciudad y recuperar el camino a partir del nodo. Esto seria mezclar, inapropidamenle. Ia nocién de nodo y la de eslado. Si puede emplearse esla idea para delinir una representacién en el nivel Iégioo (o lisloo) para los estados (ver mas adelante). En conclusion. los eslados seran secuencias de nombres de vértices, Comenzando con un mismo nombre. digamos A (que representa a la ciudad de partida). lal que en la secuencia no hay nombres repelidos, salvo en el caso de que la secuencia delina un ciclo lolal (es decir, en la secuencia aparecen todos los vértices del gralo). caso en el que el ultimo nombre de Ia secuencia vuelve a ser A. AI imponer que. salvo en el caso de ciclo lolal, no haya repelidos (es natural hacerlo, puesto que en el objetivo no debe haberlos) eslamos ya lijando una precondicion para las reglas a delinir. Tendremos una regla por cada uno de los pares (ordenados) de vértices (mw). J maren. MANU Bañares Moneter? . 1998- 0441809697
  • 111. BIJSOUEDA J 1 I - Rcgla (v. w) en cl estado [A, Bl: - precondicioncs: B = v y. o bien w : A y en [A, B] aparecen todas lm; ciudades del napa, o bien w no aparece cn IA. Bl: - aocién: mnslruir IA. B. w] Una vez lijado el nivel conceptual de la representacion ya tenemos delinldo. implicilamenle. el espacio de estados y podemos planleamos el analisis de su estructura combinatorial. La representacion elegida determina que el espacio de eslados sera siempre un arbol. Elerclclo. Dibujese el arbol de estados correspondiente al mapa de la ñgura 15. escribiendo los costes al lado de las aristas. EI hecho de que el espacio de estados sea un arbol conlleva, como ya sabemos. imporlanles simpliticaciones en el proceso de busqueda, que pueden ser reeogidas en las estralegias de control. Elerclclos. 1) Programese el algoritmo A en arbol, adaplando ”primero el menos cosloso" en arbol (basta ordenar ABIERTOS respeclo a g + h. en lugar de respecto a g). 2) El algoritmo anterior puede ser adaplado en el problema del viajante. oon la representacion lijada. oon distintas varianles: a) Podemos identilicar los nodos oon los estados. Esto implicara que cada vez que se requiera la informacion g. ésta debera ser recalculada. b) Para evitar el recalculo citado en (a), podemos modillcar Ia nocion de estado, incluyendo en él los costes acumulados de las aristas. Por ejemplo, en el ejemplo de la figura 15, tendrlamos como estado [A. O.B,1,D,5]. Esto puede ser tacilmenle implementado en Common Lisp. apoyandonos en que sus estructuras de datos no tienen que ser homogéneas en cuanto al tipo de sus componentes (no tienen por qué ser todo numeros o todo simbolos. etc. ). c) Si representamos en el nivel tisico los estados de (b) por medio de Iistas (o de vectores) lo mas probable es que malgaslemos mucho espacio de memoria (los caminos van aumenlando incrementalmenle). Para evitar ese derroche. se pueden representar los estados por medio de estructuras enlazadas con Ia ayuda de un registro con campos: ciudad, padre y cosle. (Eslo recuerda mucho a la J &norma Muai. ) Bañares November! . 138-00180969?
  • 112. BLSKNJED/ l 112 eslmclura de los nodos, pero debe ser enlendido como una represenlacion logica y lisica de los eslados delinidos conceplualmenle en (b)). Puesto que el espacio de eslados es un érbol, se sigue que en el algoritmo A nunca se revisarén los costes (ni los padres) en ABIERTOS ni en CERRADOS (de hecho. CERRADOS no juega ningun papel en el algoritmo A en érbol). Por ello. la caracterislica de monotonia de las heuristicas no es especialmenle importante para el problema del viajante representado de ese modo. Sin embargo. las aproximaciones heuristicas (y su admisibilidad) siguen siendo muy importantes. pues el arbol de estados creoe enormemente con el numero de ciudades, por lo que no generar todos los eslados es imprescindible para poder resolver el problema en la préclica. Por otra parte, si la heuristica no es admisible no podremos decir que el problema ha sido realmente resuelto (lal vez encontramos en primer lugar un ciclo total que no sea éptimo). Vamos a oonsiderar seis heuristicas para el problema del viajanle. Supongamos que estamos en un eslado e que consta de r aristas. Sl el numero de ciudades en el mapa es n. resultaré que para complelar un ciclo tolal a partir de e lallan todavia p = n - r aristas. Las heuristicas son las siguientes: 1) h1(e) = O. 2) h2(e) = p ' cosle minimo enlre los de las aristas que no aparecen en el eslado e. 3) h3(e) = suma de los p menores costes enlre los de las aristas que no aparecen en el estado e. 4) h4(e) = suma del cosle de p aristas. una elegida por cada uno de los vértices de los que lodavia se tiene que sallr para Completar un ciclo lolal: para cada vértioe se elige el cosle minimo entre los de las aristas que inciden en él y que no aparecen en el eslado e. 5) h5(e) = suma del cosle de p aristas, una elegida por cada uno de los vértices a los que todavia se tiene que Ilegar para complelar un ciclo lolal: para cada vérlice se elige el cosle minimo enlre los de las aristas que inciden en él y que no aparecen en el eslado e. 6) h5(e) = cosle de la arista que une el origen con el otro extreme del estado. La primera heuristica señala. en realidad, Ia ausencia de heuristica (el algoritmo A se comporlara como 'primero el menos cosloso"). Las heuristicas 2 y 3 se J Hubla. PR . Hum 'J Hana-re. : mlm-car 9. 1.017- Cars-a 5153537
  • 113. BIJSOUEDA J 13 dilerencian de las 4 y 5 en que en las primeras los minimos son calculados globalmente sobre el conjunto de todas las aristas que no aparecen en el estado e, mientras que en las segundas los minirnos son calculados localmente sobre cada uno de los vértices involucrados. La heuristica 4 se diferencia de Ia 5 en que en Ia primera se considera el extreme derecha del estado e, pero no el vértice origen y en la 5 sucede justo al contrario. Las cuatro heuristicas 2, 3, 4 y 5 pueden ser mejoradas lacilmente, pero su calcula comenzaria a complicarse, siendo necesario hacer cierto tipo (limitado) de busqueda. En cuanto a la heuristica 6, es bastante pobre y rompe Ia linea de las anteriores. Tendria mas sentido si en el mapa dlspuslésemos de las coordenadas de las ciudades (oomo ya se hizo en el problema del tren) y detiniesemos como valor heurlstico de un estado Ia distancia en linea recta entre el origen y el otro extremo del estado. Por ejemplo, con el mapa de Ia figura 15 y para el estado e = [A, B,C]. tendremos p = 2 y los siguientes valores heuristicas: h, (e) = O, h2(e) = 2 ~ 1 = 2, h3(e) = 1 + 3 = 4 (las aristas son respectivamente CD y AD). h4(e) = 1 + 1 = 2 (las aristas corresponden respeclivamente a los vértices C y D: de hecho. los dos numeros corresponden a Ia misma arista; éste es uno de los aspectos que podria ser melorado en Ia heuristica), h5(e) = 3 + 1 = 4 (las aristas corresponden respectlvamente a los vértices A y D) y h5(e) = 4. Eierclclos. 1) Con el mapa de Ia figura 15, dibujese el arbol de busqueda A con cada una de las seis heuristicas anteriores. 2) Estadiese para cada una de las 6 heuristicas anteriores si es monotona y si es admisible. Entre aquellas que sean admisibles. analloese cuales son las mejor y peor lnlormadas (comparandolas por pares). J Rano/ PR, MKDVU Bañares November! . 138-00180969?
  • 114. SUSCUFDA . '14 TEMA 6. Estrateg ias Q ara [UIBQOS 6.1. Arboles de juego. Vamos a ocuparnos tan solo de ; uegos de dos ; ugadores con informacnén perfecta (es decur. en los que no mterviene el azar y en los que cada jugador "ve" toda Ia mformacién del otro) y de suma cero (solo se puede GANAR, PERDER o ENIPATAR). Ejemplos son las damas, el ajedrez. las tres en raya. Vamos a nnlrcducir un jueguecito de esas caracteristicas (que podemos denominar ; uego de los autos de choque) que tiene un pequeno factor de ramificacrén. Se ; uega con dos lichas blancas y dos fichas negras en un tablero 3 x 3. La conhguracrén micial del tablero aparece recognda en Ia figura 1. Solo una unica ficha puede ocupar una casilla en cada momento. Los movnmienlos de las hchas estan restnngados a las nueve casillas del tablero, excepto las hchas negras que pueden salir del tablero a partir de Ia columna de mes a la derecha (y no pueden volver al tablero). mientras las blancas pueden salir por Ia iila superior. Uno de los ; ugadores mueve las negras y puede. en un movrmiento, empu1ar una de ellas a una casilla adyaceme arriba. abaro o a Ia derecha. Su adversario ; uega con blancas y puede mover arriba. a Ia derecha o a Ia izquierda. Gana quien saca en primer lugar sus dos tichas luera del tablero. Si uno de los jugadores no puede mover en su turno. se producen tables (un empale). En Ia figura 2 se recoge una srtuacion de empale si juegan negras. . J Fu'. Arul? P R Mura . J 53745.33:: hhrcunm-. r r? , 1321H ~ [Tarrxrr 5k; 5.1,?
  • 115. BUSOUEDA 115 c-O-b Figura 1 Un érbol de juego es una representacion explicita de todas las jugadas posibles en una partida. Las hojas. es decir los vénices lerminales. corresponden a posiciones GANAR, PEHDER o EMPATAR. Cada camino desde Ia raiz (la posicion inicial del Juego) hasta una hoja representa una partida complete. Figura 2 Habitualmente. se denomina MAX al jugador que abre el Juego y al segundo, MIN. Son posiciones MAX (MIN) aquellas en las que tiene que jugar MAX (MIN, respectivamente). Estas posiciones se distinguen por los niveles en que aparecen. Si identificamos la raiz con el nivel O, y comienza jugando MAX, las posiciones de nivel par corresponden a MAX y las de nivel impar a MIN. En Ia figura 3 aparece recogido el comienzo de un érbol de Juego para el problema de los aulos de choque (comienza MAX oon negras). J RubnofRR, Mirah) Bañares November& 15398- Cuma 96-97
  • 116. BLSOUED/ l HS IDI IDI IDI DII BEI IIIE @IE IIE IBI Figura 3 En Ia figura 4 aparece retlejado un érbol de juego. con las posiciones MAX representadas por cuadrados y las MIN por circulos. Las posiciones terminales tienen etiquetas G, P o E que significan, respectivamente, GANAR. PERDER o EMPATAR para MAX. J Rabnowkn. umu Bañares Hammers? . 1993- Gurso 96-97
  • 117. BLSKNJEDA H? Una vez conocido el érbol de juego podemos propagar hacia arriba las eliquetas P. G, E de las posiciones lerrninales. segan el siguienle mélodo de etiquetado. Si N es una posicion MAX no terminal. entonces Etiquela (N) = G, si algun sucesor de N tiene etiqueta G; Etiquela (N) = P, si lodos los sucesores de N tienen etiquela P: y Etiqueta (N) = E. en otro caso. Si N es una posicion MIN no terminal. entonces Eiiqueta (N) = G. si lodos los sucesores de N tienen etiqueta G: Eliqueta (N) = P. si algun sucesor tiene eliqueta P; y Etiqueta (N) = E. en otro caso. La eliquela de una posicion nos indica lo mejor que podria jugar MAX en caso de que se enlrenlése a un oponente perfeclo. Resolver un érbol de juego significa asignar, siguiendo el proceso anterior, una eliqueta G. P o E a Ia posicion inicial. En al Iigura 5 aparece la resolucién del érbol de juego de Ia figura 4. Un érbol solucion para MAX es un subérbol del érbol de juego que contiene a Ia raiz y que contiene un sucesor de cada posicion MAX no tenninal que aparezca en él y todos los sucesores de cada nodo MIN que aparezca en él. (En la Iileratura. es més lrecuenle hablar de "estralegias" en lugar de "érboles solucion? hemos prelerido esta Ierminologia para evitar oonlusiones con Ia nocion de "estrategia de control” en sistemas de produccion. ) Un érbol solucion para MAX debe ser inlerpretado como un plan (una estrategia) de los movimienlos que debe realizar MAX. ante cualquier movimiento posible de MIN. Conociendo un érbol solucion para MAX, podemos programar a un compulador para que juegue con un contrincante MIN, humano o méquina . Sin embargo. en general, un érbol solucion para MAX no aseguraré que ésle gane (ni siquiera que juegue con un minimo de habilidad). Un érbol solucion para MAX se llamaré érbo! ganador para MAX (o estrategia ganadora para MA)0 si todas las posiciones terminales del érbol solucion tienen etiqueta G. Evidentemente, un érbol ganador para MAX asegura que el jugador MAX ganaré, haga lo que haga MIN. En general. existiré un érbol ganador para MAX si y solo si al resolver el érbol de juego Ia etiqueta de Ia posicion inicial es G. En la Iigura 5. el subérbol definido por las aristas punteadas es un érbol ganador para MAX. J Ratio . ~ PR . MIND 'J Bañares ? hantar 9. 1.033 - (Lusa 515437
  • 118. BLlSCLIFD/ l , V I 1:' Figura 5 Ejerclclos. Deiinir las nociones de arbol solucion para liatlN y de érbol ganador para MIN. ;Existe un arbol ganador para MIN en el arbol de juego de Ia figura 4? 6.2. Algoritmos MiniMax. EI método de etiquetado descrito en el apartado anterior requiere un arbol de juego completo. Para Ia mayoria de los juegos. desarrollai todo el arbol de juego es una tarea impracticable. debido a que existen muchos posibles movimientos en cada paso. con lo que ei arbol de juego crece enormemente. Un arbol de juego para las damas tiene aproximadamente 1040 posiciones no terminales. Generar el arbol completo requeriria mas o menos 102' siglos, incluso si en cada segundo se generasen 3 bilones de posiciones. EI tamaño de un arbol de juego para el ajedrez es todavia mas astronomico: unas 10120 posiciones y 10"” siglos con Ia misma velocidad de generacion. incluso si un adivino nos prcporcionase un arbol ganador (una estrategia ganadora) no tendriamos posibilidad de almacenarlo ni de recorrerlo. Puesto que. por restricciones de tiempo y de espacio. no podemos evaluar Ia etiqueta exacta de cada posicion sucesora, debemos pensar en una aproximacion heuristica. Podemos suponer que tenemos una funcion de evaluacion (estatica) h que nos indica cual es el "mérito" de cada una de las posiciones. Al contrario que en los dos temas anteriores. se supone que h asigna valores grandes a las posiciones que son mas tavorables para MAX. Por ejemplo. en el juego de los autos de choque . .I Antum PR . Nm-n J 62744.33: . 'u_1rr. v.'f. h1r3?_ IfPIUI . (1'.1.rs.1:'. v;5.I. ?
  • 119. SiJSCUFD/ l , '19 podemos suponer qJe una licha negra situada en una casilla cuenta por el numero marcado en Ia Iigura 6 para esa casilla (suponemos que MAX iuega con negras). Si una lrcha negra esté tuera del tablero cuenta por 50. Reciprocamente, una lrcha blanca cuenta scgun la numeracion que aparece en la Iigura 7 y -50 si esta lucra del tablero. Figura 7 Con esa heuristica, la contiguracion recogida en Ia lzgura 8 tendria valor heurlstico - 30. Figura 8 La heuristica anterior puede ser meiorada SI anadimos ademas una puntuacion para los bioqueos directos e indirecios. En Ia iigura 9 aparece un bloqueo drrecto de las tichas negras sobre las blancas y en Ia Iigura 10 un bloqueo indirecto. A los primeros podemos aszgnarles un peso 40 y a los segundos 30. Reciprocamente. un . .I Fitna: : PR Muri? .J Enviar: : . hhi-nrnmtrr? , i ? PKH ~ i? .urx.1:`. »'; 5.1,?
  • 120. Linare: domains ia tandan heuristica sia *penilai utilizar estrategia; dai *conttoii dar lini! *escalada* ; parar qatar: il? ! , liiegdi Siti ; embargo. unariasiraiegiartroumu : Esai no' niaga Ifar Inrmniiiciifai pri: la rsrsguniioiiigacior iiriniisfabzmns» TITTGWtIiEñIG` sensitifitas: :da: ;la i, dari* 15553 tai ; tunciñnêifil'i. Lo: mas ; lagian eos explorar-zal 1164115931; hasta nivel ada (que sai denomina &Valliñblññcréslñliña después gmpajgaiylyihadiatresus 11211073& : im narasi& 535911111515* HEiilHEBYiG itil? ! TIQSIiTBZlPQLIEiELSIcEW Bl! I uehaisquaoa s: uennmiiiaimñme ini a I . , "HBMSUC “iNJi I incar mover . 1 , mimisan a MBSM : nmputadaiit iaiegtramas maizena ta; iii: ;tai qggi es mayur qiiarêlftlfai iassntrasr : posibles pusiçianasrgtiiiiiesaiuquaisi
  • 121. BUSOUEDA 121 EI modo més popular de llevar a la préctica esta idea es el mélodo MiniMax: 1. Si N es una posicion terminal o una posicion en Ia frontera de busqueda. el valor V(N) es igual al valor de la funcion de evaluacién aslética h(N); en otro caso: 2. Si N es una posicion MAX, V(N) es igual al méximo de los valores de sus sucesores. 3. Si N es una posicion MIN, V(N) es igual al minimo de los valores de sus sucesores. Si ha sido calculado asi, V(N) se denomina valor MiniMax de Ia posicion N. Obsérvese que si asociamos oon Ia etiqueta P(erdar) el valor numérico -1. con E(mpatar) el valor O. con G(anar) el valor 1 y lomamos como nñmero de capas el nivel maxima del érbol de juego (o. dicho con otras palabras. no ponemos ningan Iimite de profundidad). entonces el mélodo anterior es equivalente al procedimianto de etiquetado explicado en el apartado anterior. En Ia figura 11 hemos recogido el célculo del valor MiniMax da 4 capas para la raiz en un érbol de juego. Los numeros dentro de las posiciones terminales corresponden a unos supuestos valores heuristicas, mientras que el resto de nameros corresponden a valores encontrados por el mélodo MiniMax. 10 10 2 10 14 2 20 10 9141 2 1 3 20 Emnmnmmmaannnamm Figura 11 J Hanoman. Muai. ) Baharu November! . 138-00180969?
  • 122. BUSOUEDA 122 Eierclclos. Calculese el valor MiniMax para Ia posicion inicial del iueego de los autos de choque oon una Capa y Ia primera heuristica introducida (la que no tiene en cuenta los bloqueos). Idem oon 2 capas. Repitase el ejercicio con una y dos capas utilizando Ia segunda heuristica. Para calcular el valor MiniMax de una posicion podemos enlplear la siguiente funcion Common Lisp. que se comporta como una busqueda en profundidad. Aqui el esquema MiniMax ha sido programado oomo un caso particular de sistema de produccion. por lo que hemos denominado estados a las posiciones y hemos utilizado una funcion expandir-estado para calcular Ia lista de posiciones sucesoras a una dada. ; FI Ictodo Mxn1Max 'nn profundidad" ; Una llawada al operador seria: (Iininax eslado iiuundurê inuWurU~uspsu? ) (defun Iinirax [estado jugndor 2] (; I lor Itezninag? estado! C- n UI) [funcion-hcurxstica estado] (let ( (s~5 Islquienterjuçadcr fuuadorf (n-1 I- n 1)] (lista-valores '()J J (do (| p;isLa [expandir esLado estado! lres( p1isLa)l) ctnndp plista) J (zutq Iisla valores (nons Iminsmax (tirai plxstab A j n ll l15ta~valore= )J) (LI (eq Juqaaor 'HANI cmaxi lista-valotcsj (nini lnsta valurcs)J)]) ; éuncioncs aux1l1:re: : (dcfun tcrmxnau? lcstancj . ..) ; predicado que determina ui una pusxcaén us v to us terminal. (dcfun fun:1on~hcur1ztica lcztado) . ..l ; Iunc; on qué calcula el valor heur1sL; :o de nii pcsic; on. ~n iñufun siuJ1enLu~7ugsdur (fuuador) (12 (cq juqaanr 'NAXJ 'MIN 'MAXI) ; (darun uxpandnz~esLadu (cstadol . ..) ; funcion que calcula la lista de posiciones sucesores a ; na dada. (darun nan; (l;9ta nunñroal . ..) ; funcion quo : ainul: ol maxima dc una 1.51: ac numnros. (darun r1nA (J; sta-nonarnsr . ..) ; funcion que : alcula el minimo dc una 11:: : dc nuncros. a. Es importante notar que en este algoritmo Ia evaluacién de una posicion no esté completa hasta que cada una de sus posiciones suoesoras en el espacio de busqueda. hasta un cierto nivel. no ha sido evaluada. Se trata por tanto de una estrategia exhaustiva. aunque de profundidad limitada. veremos en el ultimo apartado que es posible "podar" el espacio de busqueda sin perder informacion. J RuhbfRRñMMvfJ sama hbwwiwraliii-CWSOSGG7
  • 123. 8115505 DA . '23 6.3. Poda Alfa/ Beta. Para ilustrar el hecho de que el algoritmo NIiniMax anterior realiza demasiados esiuerzos y que no es necesario evaluar exhaustlvamente todos los sucesores para obtener el valor MiniMax. vamos a estudiar el problema en una situacion mas sencilla. Se trata de establecer un procedimiento de etiquetado sin Iimite de profundidad. como en el apartado 6.1. pero en el que solo son posibles dos etiqueias: G (= Ganar) y P (= Perder). En este caso. podemos establecer el siguiente esquema de etiquetado: 1 Si N es una posicion terminal, devolver directamenie P o G: en otro caso: 2 Si N es una posicion NIAX, devolver G en cuanto aparezca un sucesor con vaior G (este valor habré sido calculado por el mismo procedimiento que esté siendo descrito); si todos los sucesores tienen valor P. devolver P, 3 Si N es una posicion MIN. devolver P en cuanto aparezca un sucesor con valor P; si todos los sucesores tienen valor G. devolver G. En Ia figura 12 aparece un arbol de juego en el que se ha aplicado este método de etiquetado (se ha expiorado de izquierda a derecha). Las aristas punteadas señalan posiciones que no han tenido que ser evaluadas (con el mecanismo de etiquetado del apartado 6.1. todas las posiciones deben ser evaluadas). . .I Hunian PR . Nia-rr J Himmah: .'~: ii-x-. ~n: a.-. r:? _ walhi . (1'.1.rs.1:'. v;5.I. ?
  • 124. BLGOZJEDA 124 Ejerclcio. Estudiar que sucede en el arbol de Ia iigura 12 si expandimos de derecha a izquierda. Ahora es necesario aplicar Ia idea oonlenida en el anterior procedimienlo al célculo del valor MiniMax. Este problema es mas dilicil por dos razones: la existencia de un nnmero de capas (Iimite de profundidad) y porque el trabajo debe ser realizada con valores numérioos y no con un par de valores simbolicos. La idea para llevar a Ia préctica esa generalizacién es Ia siguiente. En lugar de construir una lista con los valores de los sucesores de una posicion y. después. calcular el méximo (o minimo) de esa lisla. procedemos a calcular el méximo (o minimo) secuencialmenle, pero si el valor méximo (o minimo) provisional cruza una cierta cota. entonces se para el proceso de céiculo y se devuelve Ia cola como valor: &i el méximo (o minimo) no Ilega a cruzar Ia cota es el méximo (o minimo) lo que es devuelto. Tenemos el siguiente algoritmo V(N. a|fa. beta. r), donde r es el numero de capas y alfa. beta son dos parémelros numéricos tales que alfa <= bela. EI algoritmo calcula el valor MiniMax de N con r capas si dicho valor se encuentra entre alfa y beta. Si el valor MiniMax de N es menor o 'igual que alla, devuelve alfa. Y si el valor MiniMax de N es mayor o igual que beta, devuelve beta. Asi pues si queremos calcular el valor MiniMax de r capas baslaré hacer una Ilamada V(N, -iniinilo. +iniinito. r). (Los valores -inlinito y +iniinito pueden ser reemplazados, respectivamente. por un namero menor o mayor que el minimo o méximo de los valores que puede tomar Ia funcion heuristica. si disponemos de esa informacion. ) Es importante observar que en el siguiente algoritmo recursivo los 4 parémetros pasan por valor y que el contador "i" utilizado. debe ser entendido como una variable local a cada una de las llamadas. Funcion alfa-beta V(N. a|fa. beta. r) devuelve un nurnero: 1. Si N esté en Ia frontera de busqueda (es decir. r o) o es una posicion terminal. entonces devuelve (h(N)): en otro caso: sean (Ni. “WNL . ..MJ las posiciones sucesoras de N. 2. i : = 1 3. mientras i <= k hacer 4. Si N es una posicion MAX entonces - alfa z- maxima de alfa y V(Na. aIfa. beta, r-1) - Si alfa >e beta entonces devuelve (beta) - Si i k entonces devuelve (alfa) . ) Rano. PR . NING 'J Ram-m hbracroar 9, 1219 - (Lusa SYL-v
  • 125. BUSOUEDA 125 si no - beta : = minimo de beta y V(N; .aIfa. beta. r-1) - Si beta <= alfa entonces devuelve (alfa) - Si i a k entonces devuelve (beta) 5. i I = i+1 En ese algoritmo. las cotas que determinan las podas (el ”mnocircuitadw del calcula del maximo o minimo) son aiustadas dinamicamente y propagadas del siguiente modo: 1. Cota alfa. La cota para una posicion N que sea MIN es una cota interior alfa. igual al mayor valor hasta ese momento de los antecesores MAX de N. La expansion de N puede ser terminada en el momento en que el minimo provisional sea menor o igual que alfa. 2. Cara beta. La cota para una posicion N que sea MAX es una cola superior beta. igual al menor valor hasta ese momento de los antecesores MIN de N. La expansion de N puede ser terminada en el momento en que el maxima provisional sea mayor o igual que beta. En Ia figura 13 se ilustra el funcionamiento de Ia poda alfa/ beta en el arbol de juego de Ia figura 11. En Ia figura 13 aparecen punteadas las aristas que Ilegan a posiciones que no son evaluadas. La mejora respecto al metoda MiniMax del apartado anterior depende en gran medida del modo de exploracion. En el ejemplo de Ia figura 13 se ha expandido de izquierda a derecha y solamente ha sido necesario evaluar 7 posiciones terminaies. En cambio. si expandiésemos de derecha a izquierda. serta necesario evaluar las 16 posiciones terminales y. por tanto. todas las posiciones intermedias también (luego no habria ganancia respecto al mélodo explicado en el apartado anterior). Ejerclcio. Analicese el funcionamiento de Ia poda alfa/ beta con el érbol de juego de la figura 11 y expansion de derecha a izquierda. J maren. MANU Bañares Nawvrura 1998- 0441809697
  • 126. di i @maamae ” masing

×