ALGORITMOS DE BÚSQUEDA

Manuel Nicolás Ortuño Miguel Ángel Sánchez-Guerra Panadero

1

Introducción
‡ Definiciones del problema de la búsqueda ‡ Ejemplo 8-puzzle ‡ Estimación heurística
2

Definiciones del problema de la búsqueda ‡ Un problema de optimización discreta se puede expresar como una tupla (S,f).
± S conjunto de todas las soluciones que satisfacen las restricciones. ± f función de coste:
± f: S p „

‡ Encontrar xo talque f(xo) e f(x) xS.
3

Ejemplo 8-puzzle (I) Estado inicial 5 2 1 8 3 4 7 6 Estado final 1 2 3 4 5 6 7 8 p S = Conjunto de todas las secuencias de movimientos que conducen del estado inicial al estado final. 4 . f = Número de movimientos en la secuencia.

1 4 7 5 8 2 3 6 Abajo 1 4 7 5 2 3 4 7 8 6 Estado inicial Abajo 1 4 7 2 5 8 3 6 Arriba 1 4 7 2 5 8 3 Arriba 1 4 2 5 8 3 6 Izqda. 1 4 7 5 8 2 3 6 6 7 Estado final 5 .Ejemplo 8-puzzle (y II) 5 1 4 8 7 2 3 6 Arriba 1 5 8 2 3 6 Arriba 1 4 5 8 7 2 3 6 Izqda.

‡ g(x): Coste de llegar desde el estado inicial al estado x. desde el estado inicial pasando por x. 6 . ‡ h(x): Función heurística. Coste estimado de llegar desde x al estado final. ‡ Si h es admisible entonces l(x) es una cota inferior del coste del camino al estado final. Coste de llegar del estado inicial al estado final pasando por el estado x.Estimación heurística ‡ l(x): Función de búsqueda.  x. ‡ l(x) = g(x) + h(x) ‡ h(x) es admisible si es una cota inferior del coste de llegar al estado final desde el estado x.

se cumple que h(x) es admisible.3) la de abajo a la derecha. ‡ Esta distancia estima el número de movimientos para pasar de la posición inicial a la posición final. 7 . ‡ Se define la distancia de Manhattan entre las casillas (i. 8-puzzle ‡ Se numerarán las casillas del puzzle por la tupla (nº fila. Y la casilla (3. siendo la casilla (1.Estimación heurística. nº columna).j) y (k. ‡ Si consideramos h(x) igual a la distancia de Manhattan.l) como |i-k|+|j-l|.1) la de arriba a la izquierda.

Algoritmos de búsqueda secuenciales ‡ Búsqueda en profundidad (DFS). ‡ IDA* (Iterative Deepening A*). ‡ Búsqueda mejor nodo (BFS). 8 . ‡ Backtracking simple. ‡ Búsqueda en profundidad Branch-andBound (DFBB).

± Utilizado para búsqueda en árboles. ± Inicialmente se expande el nodo inicial y se generan sus sucesores. ± En el siguiente paso se expande el nodo más reciente generado.Búsqueda en profundidad ‡ Depth-First Search (DFS). ± Si el nodo no tiene sucesores o no conduce a una solución se retrocede y se expande otro nodo diferente. 9 .

10 . ‡ No se garantiza encontrar la solución de mínimo coste (optima). ‡ No utiliza información heurística para elegir el sucesor a expandir. ‡ Existe una variante llamada Backtracking ordenado que si utiliza información heurística. ‡ Termina encontrando la primera solución.Backtracking simple ‡ Método de búsqueda en profundidad.

‡ Continúa buscando después de encontrar una solución. ‡ Poda los caminos solución que conducen a una peor solución. 11 . de manera que actualiza el mejor camino solución.Búsqueda en profundidad Branch-andBound ‡ Depth-First Branch-and-Bound (DFBB). Posible poda de nodos que mejoran el camino solución. ‡ Algoritmo muy dependiente de la función heurística.

Se garantiza solución si cada nodo tiene un número de descendiente finito. h (función heurística) es una estimación de lo que queda por recorre. Si la función h nunca sobreestima a un nodo entonces se encuentra solución optima. l es una estimación del camino solución desde el nodo inicial pasando por x.IDA* (Iterative Deepening A*) ‡ ‡ ‡ ‡ ‡ ‡ Utiliza la función l(x) = g(x) + h(x) para guiar la búsqueda. 12 . g es una estimación de lo que se ha recorrido.

‡ Al expandir un nodo sus sucesores se introducen en la lista de abiertos. ‡ Se mantienen dos listas. 13 . ‡ Asigna el valor heurístico menor a los nodos más prometedores. ‡ La lista de abiertos se ordena por el valor heurístico. ‡ Un nodo ya expandido se introduce en la lista de cerrados.Búsqueda mejor nodo (I) ‡ Válido para árboles y grafos. abiertos y cerrados.

el nodo con mayor valor heurístico se borra. ± El sucesor esta en la lista de abiertos o cerrados pero su valor heurístico es menor.Búsqueda mejor nodo (y II) ‡ El sucesor de un nodo expandido se pone en la lista de abiertos si: ± El sucesor no esta en la lista de abiertos ni en la lista de cerrados. (se puede mejorar el algoritmo recalculando el valor heurístico de los nodos sucesores). 14 .

que reduce el Speedup. cada uno de los cuales busca en una parte del árbol de búsqueda. ‡ Idealmente el tiempo de búsqueda se reduciría en proporción al número de procesadores que colaboran en la búsqueda. ‡ Hay que tener en cuenta el factor de sobrecarga introducido.Búsqueda paralela ‡ Para mejorar la búsqueda en los algoritmos secuenciales podemos utilizar varios procesadores colaborando entre ellos. por la colaboración de los procesadores. 15 .

‡ Factor de sobrecarga en la búsqueda: Wp/W ± ± W carga de trabajo de un procesador. .. Sobrecarga por tiempo inactivo del procesador. Sobrecarga por la comunicación.. debido a problemas de balanceo de la carga.). Wp carga de trabajo de p procesadores. (compartición de datos. 3. 16 . Problemas con la estructura de datos compartida. 2.Factor de sobrecarga ‡ Se incluye sobrecarga por los siguientes motivos: 1. exclusión mutua.

Algoritmos paralelos de Búsqueda ‡ Búsqueda en profundidad paralela ‡ Búsqueda de mejor nodo paralela 17 .

Problema. Fig.1 Fig.2 18 . ‡ Uno de los problemas de este algoritmo es la distribución del espacio de búsqueda en cada procesador.Búsqueda en profundidad paralela.

y el procesador que solicita y recibe trabajo se llama receptor. ± Balanceo estático de la carga. ± Balanceo dinámico de la carga. ‡ El procesador que tiene trabajo se llama donador.Búsqueda en profundidad paralela. ‡ Cuando un procesador está inactivo. ‡ Inicialmente el espacio de búsqueda es asignado a un procesador. lo que asigna más trabajo a unos procesadores que a otros. ‡ Se particiona el árbol de búsqueda siempre de la misma forma. ‡ Existen dos alternativas a la hora de distribuir la carga de trabajo entre los procesadores. solicita trabajo. 19 . Balanceo de la carga. y los otros procesadores no tienen trabajo. ‡ Un procesador puede estar en dos fases: activo o inactivo.

Elección aleatoria (RP. ‡ Estrategias de particionado del trabajo. ‡ Esquemas de balanceo de carga. Parámetros importantes. Asinchronous Round Robin). Random Polling). Global Round Robin). Balanceo dinámico. Round Robin Asincrono (ARR.Búsqueda en profundidad paralela. 20 . Round Robin Global (GRR.

Estrategias balanceo. ‡ Hay que conseguir que la partición se haga en dos partes con el mismo trabajo. Es difícil particionar en espacio de búsqueda balanceadamente. ‡ Cada procesador tiene una pila donde almacena en orden los nodos expandidos. y envía una parte al receptor. Balanceo dinámico.(I) ‡ El procesador donador particiona su espacio de búsqueda.Búsqueda en profundidad paralela. 21 .

(II) ‡ Estrategias: 1. Nodos cerca de la cola de la pila.Búsqueda en profundidad paralela. Balanceo dinámico. Enviar nodos cerca de la cota profundidad (aquellos nodos que han sido descubiertos pero no expandidos). Se envían grandes árboles. Estrategias balanceo. 22 . Enviar la mitad de los nodos entre la cola de la pila y la cota profundidad. 2. 3.

23 . Estrategias balanceo.(y III) ‡ Si el espacio de búsqueda es uniforme las estrategias 1 y 3 trabajan mejor. ‡ Si el espacio de búsqueda es muy irregular la estrategia 3 trabaja mejor. Balanceo dinámico. la estrategia 2 es mejor. ‡ Si la heurística de búsqueda es buena.Búsqueda en profundidad paralela.

Esquemas balanceo.Búsqueda en profundidad paralela. ± Por cada petición se incrementa la variable local ((variable + 1 ) modulo p) 24 . Balanceo dinámico.(I) ‡ Round Robin Asincrono ± Cada procesador tiene una variable destino. ± La variable inicialmente cada procesador la coloca a ((etiquetapropia + 1) modulo p) ± Con esta estrategia cada procesador tiene un procesador donador independiente de los demás. ± Cuando un procesador se queda sin trabajo usa la variable como procesador donador. incrementando la variable módulo p. y envía una petición de trabajo.

(II) ‡ Round Robin Global. Balanceo dinámico.Búsqueda en profundidad paralela. contenida en el procesador P0. ± La primera petición global se realiza al procesador P0. 25 . ± Todos los procesadores comparten la misma variable destino. Esquemas balanceo. ± Por cada petición se incrementa la variable global en 1 ((variable + 1) modulo p).

± Asegura que las peticiones de trabajo están distribuidas. ± Aleatoriamente se elige un donador con igual probabilidad. Esquemas balanceo.(y III) ‡ Elección Aleatoria. Balanceo dinámico.Búsqueda en profundidad paralela. 26 . ± Es el más simple de los esquemas.

Entorno de trabajo general para análisis del algoritmo búsqueda en profundidad paralela (I) ‡ Se analizará el rendimiento y la escalabilidad. 27 . ‡ Si el factor de sobrecarga es mayor a uno esto implica que el algoritmo paralelo realiza más trabajo que el secuencial. ‡ La sobrecarga de los esquemas de balanceo de la carga se debe a la comunicación (peticiones y envío de trabajo). tiempo inactivo de procesador (en espera de trabajo). detección de la terminación y uso de recursos compartidos.

E es una cota inferior del balanceo de la carga. 28 .Entorno de trabajo general. talque ]w>Ew. Cálculo del factor de sobrecarga en la comunicación (II) ‡ El trabajo de un procesador nunca puede ser particionado en partes mas grandes que un tamaño fijo. ‡ Asumimos que el trabajo w en un procesador se divide en dos partes ]w y (1-])w con 0 e ] e 1. excedido por un umbral I.5). Existe una constante E (0 < E e 0.

y el resto de procesadores no tienen trabajo.E)W. ‡ El número total de peticiones de trabajo es O(V(p) log W) 29 .Entorno de trabajo general. Cálculo del factor de sobrecarga en la comunicación (III) ‡ Definimos V(p) como el mínimo número de peticiones de trabajo necesarios para que todo procesador haya recibido como mínimo una petición de trabajo. ‡ Inicialmente el procesador P0 tiene W unidades de trabajo.E)2W. el máximo trabajo pendiente en un procesador es menor a (1 . después de 2V(p) peticiones. el máximo trabajo pendiente en un procesador es menor (1 . Después de V(p) peticiones.

Entorno de trabajo general. ‡ Considerando tcom como el tiempo necesario para enviar una unidad de trabajo. Cálculo del factor de sobrecarga en la comunicación (IV) ‡ Asumimos que el tamaño de un mensaje de petición y de transferencia de trabajo es constante. la sobrecarga de la comunicación T0 se define como: T0= tcom V(p) log W ‡ Siendo la eficiencia E: 1 1 E! ! 1  T0 / W 1  (tcomV ( p ) log W ) / W 30 .

Cálculo del factor de sobrecarga en la comunicación (y V) ‡ Nuestro objetivo es conseguir funciones isoeficientes para cada esquema de balanceo de carga sobre diferentes arquitecturas (hipercubo. ‡ T0 depende de tcom (determinado por cada arquitectura) y de V(p) (dependiente de cada esquema de balanceo de carga).Entorno de trabajo general. 31 . red).

hasta que los contadores de todos apuntan al procesador p-1. quedando el número de peticiones total: V(p)=O(p2) 32 . Cálculo V(p) Round Robin Asincrono. ‡ El peor caso ocurre cuando todos los procesadores envían peticiones de trabajo al mismo procesadores. Esto ocurre p-1 veces. Entonces se realizan p-2 peticiones al procesador apuntado por el contador. ‡ Supongamos que el procesador p-1 tiene todo el trabajo y los contadores locales de todos los procesadores apuntan al procesador 0. que harán otras p-1 peticiones.Entorno de trabajo general.

Después de p peticiones. 33 . cada procesador ha recibido una petición. Cálculo V(p) Round Robin Global. ‡ Todos los procesadores reciben peticiones en secuencia.Entorno de trabajo general. Por tanto V(p) = p.

‡ El peor caso no está acotado. Cálculo V(p) Elección aleatoria. por la naturaleza aleatoria de la elección del donador. ‡ Calculando obtenemos que V(p) = 5(p log p) 34 . ‡ Se debe de calcular el número de veces que se debe de elegir a un procesador para que con una probabilidad distribuida entre todos los procesadores. Así que consideramos el caso medio. se elijan a todos ellos.Entorno de trabajo general.

‡ Analizar rendimiento de los esquemas de balanceo de la carga. ‡ La distancia entre cualquier pareja de procesadores es 5(log p). ‡ Tiempo de comunicación tcom = 5(log p) T0 = O(V(p) log p log W) 35 .Análisis de esquemas de balanceo de la carga para hipercubo.

Round Robin Asíncrono. ‡ En el caso que el árbol de búsqueda este perfectamente balanceado: ± El tamaño del problema W = O(p2 log p log Wi) ± Sustituyendo W tenemos que la función de isoeficiencia queda como: O(p2 log2 p) 36 .Análisis de esquemas de balanceo de la carga.

Round Robin Global. simplificando tenemos que una función de isoeficiencia: O(p2 log p) 37 .Análisis de esquemas de balanceo de la carga. ‡ Realizando un análisis como el anterior obtenemos: W = O(p log2 p) ‡ Debido a que se accede a la variable global destino repetidamente esto puede causar una contención.

Análisis de esquemas de balanceo de la carga. Elección aleatoria. ‡ La sobrecarga por comunicación es: T0 = O(p log2 p log W) ‡ Igualando T0 con el tamaño del problema W y simplificando se obtiene la función de isoeficiencia: O(p log3 p) 38 .

Análisis de esquemas de balanceo de la carga para red.
‡ Se analiza la escalabilidad de los distintos esquemas. ‡ Red Ethernet. ‡ El tiempo de comunicación es constante: Tcom = 5(1) ‡ La sobrecarga por comunicación queda: T0 = O(V(p) log W) ‡ Hay que tener en cuenta la sobrecarga debida al bus compartido.
39

Análisis de esquemas de balanceo de la carga para red. Round Robin Asíncrono.
‡ La sobrecarga por comunicación: T0 = O(p2 log W) ‡ Sustituyendo W obtenemos la función de isoeficiencia: O(p2 log p) ‡ Teniendo en cuenta la contención del bus, la función de isoeficiencia queda como: O(p3 log p)
40

Análisis de esquemas de balanceo de la carga para red. Round Robin Global.
‡ Realizando un análisis como el anterior obtenemos: T0 = O(p log W) ‡ Igualando la sobrecarga por comunicación con el tamaño del problema, obtenemos la función de isoeficiencia: O(p log p) ‡ Debido a la contención ocasionada por la variable global destino y por la contención del bus, tenemos que la función de isoeficiencia queda: O(p2 log p)
41

Análisis de esquemas de balanceo de la carga para red. ‡ Realizando un análisis como el anterior obtenemos: T0 = O(p log p log W) ‡ La función de isoeficiencia queda como O(p log2 p) ‡ Debido a la contención del bus. Elección aleatoria. la función de isoeficiencia queda: O(p2 log2 p) 42 .

5 log2 p) 43 . ‡ Se puede realizar un análisis de isoeficiencia similar al hecho anteriormente para el caso de anillo y malla Esquema Topo. Hiper Red Anillo Malla ARR O(p2 log2 p) O(p3 log p) O(p3 log p) O(p2.5 log p) GRR O(p2 log p) O(p2 log p) O(p2 log p) O(p2 log p) RP O(p log3 p) O(p2 log2 p) O(p2 log2 p) O(p1.Análisis de esquemas de balanceo de la carga para otras topologías.

(I) ‡ Suponemos un anillo lógico. 44 . Dijkstra. ‡ El procesador P0 contiene el token y se lo pasa al procesador P1.Detección de la terminación de la búsqueda. ‡ El algoritmo termina cuando el procesador P0 recibe el token. ‡ Cuando el procesador P1 termina la computación se lo pasa al procesador P2. ya que un procesador que termine su trabajo puede recibir nuevo. ‡ No se puede aplicar este esquema directamente. Comunicación por Tokens.

± Si Pj envía trabajo a Pi. ± Si el procesador P0 recibe un token negro. Pj se marca como negro y marca el token como negro. ± Cuando el procesador P0 recibe un token blanco finaliza. esto indica que el token está atravesando el principio del anillo. (II) ‡ Modificación del esquema para ser aplicable.Detección de la terminación de la búsqueda. Dijkstra. ± Solo se permite pasar trabajo de Pi a Pj con i<j. Inicialmente todos en blanco. 45 . ± Todos los procesadores están en dos estados negro o blanco.

Se marca como blanco y envía un token blanco. entonces pasa el token a Pi+1. ‡ Si Pi tiene el token y está inactivo.Detección de la terminación de la búsqueda. En otro caso el token no se modifica. (y III) ‡ Cuando un procesador esta en espera de trabajo. ‡ Si Pi envía trabajo a Pj e i>j. Pi se convierte en blanco. el token se marca como negro. el procesador P0 inicializa el algoritmo de detección. ‡ Si Pi pasa el token a Pi+1. 46 . Pi se convierte en negro. Dijkstra. Si Pi es negro.

w0 (peso de P0) y wi son 0. ‡ Cuando el trabajo se particiona también se divide el peso.5. ‡ Inicialmente el procesador P0 tiene todo el trabajo y un peso igual a 1. Tras la primera partición de trabajo para el procesador i. ‡ El algoritmo termina cuando P0 tiene todo el peso. 47 . ‡ Cuando un procesador termina su trabajo envía su peso al donador.Detección de la terminación de la búsqueda basada en árbol.

± Expande más de un nodo al mismo tiempo. pero en este caso existe una lista de abiertos global. 48 . cada procesador expande un nodo distinto.Búsqueda mejor nodo paralelo (I) ‡ Estrategia centralizada: ± Similar al mismo algoritmo en su forma secuencial.

± Acceso a la lista de abiertos: ‡ Todos los procesadores deben acceder a la lista de abiertos. no puede saber si esta es la solución óptima hasta que los otros procesadores han terminado de buscar.Búsqueda mejor nodo paralelo (II) ‡ Problemas: ± Criterio de terminación: ‡ Cuando un procesador encuentra una solución. o saben que la solución que van a obtener es peor. ‡ Grabe problema en arquitectura de paso de mensajes y reducción del speedup en arquitecturas de memoria compartida. 49 .

Búsqueda mejor nodo paralelo (III) ‡ Soluciones: ± Cada procesador mantendrá una lista de abiertos local. ‡ En un principio se divide el espacio de búsqueda entre todos los procesadores. expandiendo algunos nodos de la lista de abiertos y distribuyéndolos entre los procesadores. realizando la búsqueda en su lista de abiertos local. 50 . ‡ Algunos procesadores realizarán búsquedas innecesarias por tener los nodos menos prometedores.

Caja negra. En anillo. Aleatoria. 2. 1.Búsqueda mejor nodo paralelo (IV) ‡ Estrategias de comunicación en árboles de búsqueda: ± Nuestro objetivo consiste en que los nodos más prometedores sean distribuidos entre todos los procesadores. 3. 51 .

± Esta estrategia asegura que si un procesador tiene un buen espacio de búsqueda los otros procesadores obtendrán parte de él. 52 . Estrategia de comunicación aleatoria: ± Cada procesador envía algunos de sus mejores nodos a la lista de abiertos de un procesador seleccionado aleatoriamente.Búsqueda mejor nodo paralelo (V) 1.

Estrategia de comunicación en anillo: ± Cada procesador forma parte de un anillo lógico. 53 .Búsqueda mejor nodo paralelo (VI) 2. ± Los procesadores intercambian periódicamente algunos de sus mejores nodos con la lista de abiertos de sus vecinos en el anillo.

llamada caja negra (blackboard). un procesador expande el nodo solo si su valor heurístico no varía mucho del mejor nodo de la caja negra. ± Tras seleccionar el mejor nodo de la lista de abiertos local. 54 .Búsqueda mejor nodo paralelo (VII) 3. Estrategia de comunicación de caja negra: ± Existe una estructura compartida por todos los procesadores.

y vuelve a seleccionar un nodo a expandir. entonces el procesador recibe algunos de los mejores nodos de la caja negra.Búsqueda mejor nodo paralelo (VIII) 3. Estrategia de comunicación de caja negra: ± Si el nodo seleccionado es mucho mejor que el mejor nodo de la caja negra entonces el procesador envía algunos de sus mejores nodos antes de expandirlos. 55 . ± Si el nodo es mucho peor que el mejor nodo de la caja negra.

± Solución: Mapear cada nodo en un procesador. 56 . de forma que cuando un nodo es generado. ± Implementación: Técnicas Hash. ± Esta tarea se distribuye entre los procesadores. el cuál chequea localmente la duplicación.Búsqueda mejor nodo paralelo (IX) ‡ Estrategias de comunicación en grafos de búsqueda: ± Problema: Chequear la repetición de nodos. éste es asignado a un procesador.

57 . en caso negativo.Búsqueda mejor nodo paralelo (X) ‡ Estrategias de comunicación en grafos de búsqueda: ± Si un nodo ya ha sido generado. se comprueba que el nuevo nodo no tenga mejor coste que el antiguo. se debe de actualizar los costes de ese nodo y posiblemente de sus sucesores.

un algoritmo secuencial DFS. expande más nodos debido a que selecciona un mal camino de búsqueda.Búsqueda mejor nodo paralelo (XI) ‡ Anomalías en el Speedup: ± Speedup superlineal: Para un mismo espacio de búsqueda. provocado por una mala función heurística de búsqueda. 13 nodos 9 nodos 58 .

Búsqueda mejor nodo paralelo (XII) ‡ Anomalías en el Speedup: ± Speedup sublineal: Caso más usual. se expande al mismo tiempo el nodo más prometedor y otros también prometedores. debido al uso de varios procesadores. 7 nodos 15 nodos 59 .

Búsqueda mejor nodo paralelo (y XIII) ‡ Factor de sobrecarga: ± Este factor nos identificará si el algoritmo secuencial no es óptimo. pues al tener éste un valor inferior a uno indica que el algoritmo paralelo expande menos nodos que el secuencial. 60 .

Ruegos y Preguntas 61 .