650 likes | 842 Views
ALGORITMOS DE BÚSQUEDA. Manuel Nicolás Ortuño Miguel Ángel Sánchez-Guerra Panadero. Introducción. Definiciones del problema de la búsqueda Ejemplo 8-puzzle Estimación heurística. Definiciones del problema de la búsqueda.
E N D
ALGORITMOS DE BÚSQUEDA Manuel Nicolás Ortuño Miguel Ángel Sánchez-Guerra Panadero
Introducción • Definiciones del problema de la búsqueda • Ejemplo 8-puzzle • Estimación heurística
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 • Encontrar xo talque f(xo) f(x) xS.
Ejemplo 8-puzzle (I) Estado inicial Estado final S = Conjunto de todas las secuencias de movimientos que conducen del estado inicial al estado final. f = Número de movimientos en la secuencia.
Ejemplo 8-puzzle (y II) Arriba Arriba Izqda. Abajo Estado inicial Abajo Arriba Arriba Izqda. Estado final
Estimaciónheurística • l(x): Función de búsqueda. Coste de llegar del estado inicial al estado final pasando por el estado x. • h(x): Función heurística. Coste estimado de llegar desde x al estado final. • g(x): Coste de llegar desde el estado inicial al estado 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, x. • Si h es admisible entonces l(x) es una cota inferior del coste del camino al estado final, desde el estado inicial pasando por x.
Estimaciónheurística, 8-puzzle • Se numerarán las casillas del puzzle por la tupla (nº fila, nº columna), siendo la casilla (1,1) la de arriba a la izquierda. Y la casilla (3,3) la de abajo a la derecha. • Se define la distancia de Manhattan entre las casillas (i,j) y (k,l) como |i-k|+|j-l|. • Esta distancia estima el número de movimientos para pasar de la posición inicial a la posición final. • Si consideramos h(x) igual a la distancia de Manhattan, se cumple que h(x) es admisible.
Algoritmos de búsqueda secuenciales • Búsqueda en profundidad (DFS). • Backtracking simple. • Búsqueda en profundidad Branch-and-Bound (DFBB). • IDA* (Iterative Deepening A*). • Búsqueda mejor nodo (BFS).
Búsquedaen profundidad • Depth-First Search (DFS). • 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. • Si el nodo no tiene sucesores o no conduce a una solución se retrocede y se expande otro nodo diferente.
Backtracking simple • Método de búsqueda en profundidad. • Termina encontrando la primera solución. • 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.
Búsqueda en profundidad Branch-and-Bound • Depth-First Branch-and-Bound (DFBB). • Continúa buscando después de encontrar una solución, de manera que actualiza el mejor camino solución. • Poda los caminos solución que conducen a una peor solución. • Algoritmo muy dependiente de la función heurística. Posible poda de nodos que mejoran el camino solución.
IDA* (Iterative Deepening A*) • Utiliza la función l(x) = g(x) + h(x) para guiar la búsqueda. • g es una estimación de lo que se ha recorrido. • h (función heurística) es una estimación de lo que queda por recorre. • l es una estimación del camino solución desde el nodo inicial pasando por x. • Se garantiza solución si cada nodo tiene un número de descendiente finito. • Si la función h nunca sobreestima a un nodo entonces se encuentra solución optima.
Búsqueda mejor nodo (I) • Válido para árboles y grafos. • Asigna el valor heurístico menor a los nodos más prometedores. • Se mantienen dos listas, abiertos y cerrados. • Al expandir un nodo sus sucesores se introducen en la lista de abiertos. • Un nodo ya expandido se introduce en la lista de cerrados. • La lista de abiertos se ordena por el valor heurístico.
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. • El sucesor esta en la lista de abiertos o cerrados pero su valor heurístico es menor, el nodo con mayor valor heurístico se borra. (se puede mejorar el algoritmo recalculando el valor heurístico de los nodos sucesores).
Búsqueda paralela • Para mejorar la búsqueda en los algoritmos secuenciales podemos utilizar varios procesadores colaborando entre ellos, 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, por la colaboración de los procesadores, que reduce el Speedup.
Factor de sobrecarga • Se incluye sobrecarga por los siguientes motivos: • Sobrecarga por la comunicación. • Sobrecarga por tiempo inactivo del procesador, debido a problemas de balanceo de la carga. • Problemas con la estructura de datos compartida. (compartición de datos, exclusión mutua, ...). • Factor de sobrecarga en la búsqueda: Wp/W • W carga de trabajo de un procesador. • Wp carga de trabajo de p procesadores.
Algoritmos paralelos de Búsqueda • Búsqueda en profundidad paralela • Búsqueda de mejor nodo paralela
Búsqueda en profundidad paralela.Problema. • Uno de los problemas de este algoritmo es la distribución del espacio de búsqueda en cada procesador. Fig.1 Fig.2
Búsqueda en profundidad paralela.Balanceo de la carga. • Existen dos alternativas a la hora de distribuir la carga de trabajo entre los procesadores. • Balanceo estático de la carga. • Se particiona el árbol de búsqueda siempre de la misma forma, lo que asigna más trabajo a unos procesadores que a otros. • Balanceo dinámico de la carga. • Inicialmente el espacio de búsqueda es asignado a un procesador, y los otros procesadores no tienen trabajo. • Cuando un procesador está inactivo, solicita trabajo. • El procesador que tiene trabajo se llama donador, y el procesador que solicita y recibe trabajo se llama receptor. • Un procesador puede estar en dos fases: activo o inactivo.
Búsqueda en profundidad paralela.Balanceo dinámico. Parámetros importantes. • Estrategias de particionado del trabajo. • Esquemas de balanceo de carga. • Round Robin Asincrono (ARR, Asinchronous Round Robin). • Round Robin Global (GRR, Global Round Robin). • Elección aleatoria (RP, Random Polling).
Búsqueda en profundidad paralela.Balanceo dinámico. Estrategias balanceo.(I) • El procesador donador particiona su espacio de búsqueda, y envía una parte al receptor. • 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.
Búsqueda en profundidad paralela.Balanceo dinámico. Estrategias balanceo.(II) • Estrategias: • Nodos cerca de la cola de la pila. Se envían grandes árboles. • Enviar nodos cerca de la cota profundidad (aquellos nodos que han sido descubiertos pero no expandidos). • Enviar la mitad de los nodos entre la cola de la pila y la cota profundidad.
Búsqueda en profundidad paralela.Balanceo dinámico. 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. • Si la heurística de búsqueda es buena, la estrategia 2 es mejor.
Búsqueda en profundidad paralela.Balanceo dinámico. Esquemas balanceo.(I) • Round Robin Asincrono • Cada procesador tiene una variable destino. • Cuando un procesador se queda sin trabajo usa la variable como procesador donador, y envía una petición de trabajo, incrementando la variable módulo p. • 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. • Por cada petición se incrementa la variable local ((variable + 1 ) modulo p)
Búsqueda en profundidad paralela.Balanceo dinámico. Esquemas balanceo.(II) • Round Robin Global. • Todos los procesadores comparten la misma variable destino, contenida en el procesador P0. • La primera petición global se realiza al procesador P0. • Por cada petición se incrementa la variable global en 1 ((variable + 1) modulo p).
Búsqueda en profundidad paralela.Balanceo dinámico. Esquemas balanceo.(y III) • Elección Aleatoria. • Es el más simple de los esquemas. • Aleatoriamente se elige un donador con igual probabilidad. • Asegura que las peticiones de trabajo están distribuidas.
Entorno de trabajo general para análisis del algoritmo búsqueda en profundidad paralela (I) • Se analizará el rendimiento y la escalabilidad. • 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. • Si el factor de sobrecarga es mayor a uno esto implica que el algoritmo paralelo realiza más trabajo que el secuencial.
Entorno de trabajo general. 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, excedido por un umbral . • Asumimos que el trabajo w en un procesador se divide en dos partes w y (1-)w con 0 1. Existe una constante (0 < 0.5), talque w>w. es una cota inferior del balanceo de la carga.
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, y el resto de procesadores no tienen trabajo. Después de V(p) peticiones, el máximo trabajo pendiente en un procesador es menor (1 - )W, después de 2V(p) peticiones, el máximo trabajo pendiente en un procesador es menor a (1 - )2W. • El número total de peticiones de trabajo es O(V(p) log W)
Entorno de trabajo general. 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. • Considerando tcomcomo el tiempo necesario para enviar una unidad de trabajo, la sobrecarga de la comunicación T0 se define como: T0= tcomV(p) log W • Siendo la eficiencia E:
Entorno de trabajo general. 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, red). • T0 depende de tcom (determinado por cada arquitectura) y de V(p) (dependiente de cada esquema de balanceo de carga).
Entorno de trabajo general. Cálculo V(p)Round Robin Asincrono. • El peor caso ocurre cuando todos los procesadores envían peticiones de trabajo al mismo procesadores. • Supongamos que el procesador p-1 tiene todo el trabajo y los contadores locales de todos los procesadores apuntan al procesador 0. Entonces se realizan p-2 peticiones al procesador apuntado por el contador. Esto ocurre p-1 veces, hasta que los contadores de todos apuntan al procesador p-1, que harán otras p-1 peticiones, quedando el número de peticiones total:V(p)=O(p2)
Entorno de trabajo general. Cálculo V(p)Round Robin Global. • Todos los procesadores reciben peticiones en secuencia. Después de p peticiones, cada procesador ha recibido una petición. Por tanto V(p) = p.
Entorno de trabajo general. Cálculo V(p)Elección aleatoria. • El peor caso no está acotado, por la naturaleza aleatoria de la elección del donador. Así que consideramos el caso medio. • 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, se elijan a todos ellos. • Calculando obtenemos que V(p) = (p log p)
Análisis de esquemas de balanceo de la carga para hipercubo. • Analizar rendimiento de los esquemas de balanceo de la carga. • La distancia entre cualquier pareja de procesadores es (log p). • Tiempo de comunicación tcom = (log p) T0 = O(V(p) log p log W)
Análisis de esquemas de balanceo de la carga. Round Robin Asíncrono. • En el caso que el árbol de búsqueda este perfectamente balanceado: • El tamaño del problema W = O(p2log p log Wi) • Sustituyendo W tenemos que la función de isoeficiencia queda como: O(p2 log2p)
Análisis de esquemas de balanceo de la carga. Round Robin Global. • Realizando un análisis como el anterior obtenemos: W = O(p log2p) • Debido a que se accede a la variable global destino repetidamente esto puede causar una contención, simplificando tenemos que una función de isoeficiencia: O(p2log p)
Análisis de esquemas de balanceo de la carga. Elección aleatoria. • La sobrecarga por comunicación es: T0 = O(p log2p log W) • Igualando T0con el tamaño del problema W y simplificando se obtiene la función de isoeficiencia: O(p log3 p)
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 = (1) • La sobrecarga por comunicación queda: T0 = O(V(p) log W) • Hay que tener en cuenta la sobrecarga debida al bus compartido.
Análisis de esquemas de balanceo de la carga para red. Round Robin Asíncrono. • La sobrecarga por comunicación: T0 = O(p2log 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)
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(p2log p)
Análisis de esquemas de balanceo de la carga para red. Elección aleatoria. • Realizando un análisis como el anterior obtenemos: T0 = O(p log p log W) • La función de isoeficiencia queda como O(plog2p) • Debido a la contención del bus, la función de isoeficiencia queda: O(p2log2p)
Análisis de esquemas de balanceo de la carga para otras topologías. • Se puede realizar un análisis de isoeficiencia similar al hecho anteriormente para el caso de anillo y malla
Detección de la terminación de la búsqueda. Dijkstra. (I) • Suponemos un anillo lógico. Comunicación por Tokens. • El procesador P0 contiene el token y se lo pasa al procesador P1. • Cuando el procesador P1 termina la computación se lo pasa al procesador P2. • El algoritmo termina cuando el procesador P0 recibe el token. • No se puede aplicar este esquema directamente, ya que un procesador que termine su trabajo puede recibir nuevo.
Detección de la terminación de la búsqueda. Dijkstra. (II) • Modificación del esquema para ser aplicable. • Todos los procesadores están en dos estados negro o blanco. Inicialmente todos en blanco. • Solo se permite pasar trabajo de Pi a Pj con i<j. • Si Pj envía trabajo a Pi, Pj se marca como negro y marca el token como negro. • Cuando el procesador P0 recibe un token blanco finaliza. • Si el procesador P0 recibe un token negro, esto indica que el token está atravesando el principio del anillo.
Detección de la terminación de la búsqueda. Dijkstra. (y III) • Cuando un procesador esta en espera de trabajo, el procesador P0 inicializa el algoritmo de detección. Se marca como blanco y envía un token blanco. • Si Pi envía trabajo a Pj e i>j, Pi se convierte en negro. • Si Pi tiene el token y está inactivo, entonces pasa el token a Pi+1. Si Pi es negro, el token se marca como negro. En otro caso el token no se modifica. • Si Pi pasa el token a Pi+1, Pi se convierte en blanco.
Detección de la terminación de la búsqueda basada en árbol. • Inicialmente el procesador P0 tiene todo el trabajo y un peso igual a 1. • Cuando el trabajo se particiona también se divide el peso. Tras la primera partición de trabajo para el procesador i, w0 (peso de P0) y wi son 0.5. • Cuando un procesador termina su trabajo envía su peso al donador. • El algoritmo termina cuando P0 tiene todo el peso.
Búsqueda mejor nodo paralelo (I) • Estrategia centralizada: • Similar al mismo algoritmo en su forma secuencial, pero en este caso existe una lista de abiertos global. • Expande más de un nodo al mismo tiempo, cada procesador expande un nodo distinto.
Búsqueda mejor nodo paralelo (II) • Problemas: • Criterio de terminación: • Cuando un procesador encuentra una solución, no puede saber si esta es la solución óptima hasta que los otros procesadores han terminado de buscar, o saben que la solución que van a obtener es peor. • Acceso a la lista de abiertos: • Todos los procesadores deben acceder a la lista de abiertos. • Grabe problema en arquitectura de paso de mensajes y reducción del speedup en arquitecturas de memoria compartida.
Búsqueda mejor nodo paralelo (III) • Soluciones: • Cada procesador mantendrá una lista de abiertos local, realizando la búsqueda en su 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. • Algunos procesadores realizarán búsquedas innecesarias por tener los nodos menos prometedores.