1 / 61

ALGORITMOS DE BÚSQUEDA

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.

dixon
Download Presentation

ALGORITMOS DE BÚSQUEDA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALGORITMOS DE BÚSQUEDA Manuel Nicolás Ortuño Miguel Ángel Sánchez-Guerra Panadero

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

  3. 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) xS.

  4. 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.

  5. Ejemplo 8-puzzle (y II) Arriba Arriba Izqda. Abajo Estado inicial Abajo Arriba Arriba Izqda. Estado final

  6. 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.

  7. 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.

  8. 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).

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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.

  14. 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).

  15. 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.

  16. 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.

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

  18. 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

  19. 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.

  20. 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).

  21. 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.

  22. 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.

  23. 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.

  24. 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)

  25. 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).

  26. 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.

  27. 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.

  28. 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.

  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, 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)

  30. 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:

  31. 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).

  32. 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)

  33. 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.

  34. 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)

  35. 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)

  36. 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)

  37. 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)

  38. 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)

  39. 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.

  40. 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)

  41. 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)

  42. 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)

  43. 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

  44. 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.

  45. 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.

  46. 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.

  47. 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.

  48. 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.

  49. 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.

  50. 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.

More Related