La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Temas importantes para el desarrollo de la segunda parte del TPE

Presentaciones similares


Presentación del tema: "Temas importantes para el desarrollo de la segunda parte del TPE"— Transcripción de la presentación:

1 Temas importantes para el desarrollo de la segunda parte del TPE
Contenedores asociativos ordenados Clase comparador Conceptos de Búsqueda Heurística Algoritmo A* Aclaraciones para la entrega Laboratorio Análisis y Diseño de Algoritmos 2 1

2 Contenedores asociativos ordenados
Por ejemplo: Contenedores asociativos: map y set Características Usan una relación de orden entre las claves. Dos claves son equivalentes cuando ninguna es menor que la otra. Garantiza que la complejidad de la mayoría de las operaciones nunca es mayor del orden logaritmico. Garantiza que los elementos están ordenados de forma ascendente de acuerdo a las claves. Los contenedores Set y Map, entre otros, son contenedore asociativos ordenados. Este tipo de contenedor usa una relación de orden entre las claves. Además, garantiza que la complejidad de la mayoría de las operaciones nunca es mayor del orden logaritmico. En los contenedores asociativos la relación de orden se establece entre las claves, mientras que en los contenedores secuenciales la relación de orden se establece entre los elementos del contenedor. Laboratorio Análisis y Diseño de Algoritmos 2 2

3 Contenedores asociativos ordenados
Es necesario saber como comparar dos claves. Para esto se utiliza el parámetro comparador. Para poder mantener la relación de orden, este tipo de contenedores, necesita un parámetro Comparador (Compare), el cual posibilita comparar dos claves de cualquier tipo de dato. Laboratorio Análisis y Diseño de Algoritmos 2 3

4 Análisis y Diseño de Algoritmos 2
Comparador Para tipos de datos básicos: Se utiliza el comparador por defecto Less<Key> Es un objeto función de tipo binario. Define el operador (TipoU t1,TipoU t2), el cual determina si t1 es menor que t2. Para tipos de datos definidos por el usuario: Es necesario definir un comparador El comparador debe contener el operador (TipoU,TipoU). Para poder comparar claves de tipo de datos básico, los contenedores utilizan un comparador por defecto llamanda less<Key>, el cual determina si una clave es menor que otra. En el caso en que las claves sean de tipos de datos definidos por el usuario, es necesario definir la forma de comparar para esto se define una estructura comparador que defina el operador (), en base al operador <. Un objeto función es cualquier objeto que puede llamarse como una función. Hay tres tipos de funciones Generadoras, Unarias y Binarias Laboratorio Análisis y Diseño de Algoritmos 2 4

5 Análisis y Diseño de Algoritmos 2
Comparador Ejemplo: class Comparador { public: bool operator()(const TipoU & s1, const TipoU & s2) const { return s1< s2; } }; map<TipoU, int, Comparador> mapa; class TipoU { bool operator < (TipoU t1) const { Laboratorio Análisis y Diseño de Algoritmos 2 5

6 Análisis y Diseño de Algoritmos 2
Búsqueda Espacio de búsqueda mover abajo mover derecha mover abajo mover derecha El espacio del problema es el entorno donde se lleva a cabo la búsqueda. Un espacio del problema consiste en: Un conjunto de estados del problema Un conjunto de operadores para cambiar de estado Una instancia del problema es un espacio del problema junto con un estado inicial y un estado objetivo. El grafo es el modelo utilizado con frecuencia para representar el espacio del problema. Los estados del espacio son representados por los nodos del grafo, y los operadores por los arcos entre los nodos. Si bien, la mayoría de los espacios del problema se corresponden con grafos con más de un camino entre pares de nodos, es frecuente que se los represente como árboles por cuestiones de simplicidad. La búsqueda es una técnica para resolver problemas cuya solución consiste en una serie de pasos que deben determinarse mediante la prueba sistemática de las alternativas. mover arriba mover derecha Laboratorio Análisis y Diseño de Algoritmos 2 6

7 Análisis y Diseño de Algoritmos 2
Búsqueda heurística Tanto DFS y BFS son algoritmos de búsqueda por “fuerza bruta”, ya que no requieren ningún conocimiento específico del dominio. Sin embargo, existen problemas donde el espacio de búsqueda es muy grande, y es necesario añadir a los algoritmos de búsqueda conocimiento del dominio para mejorar la eficiencia. Esto da lugar a los algoritmos de búsqueda “heurística”. Las “funciones de evaluación heurística” (o simplemente heurística) nos permiten estimar el costo del camino óptimo entre dos estados. A la hora de diseñar una función heurística se debe hacer un compromiso entre: El costo computacional de cada evaluación La calidad de la estimación retornada Lo único que requieren los algoritmos de búsqueda por “fuerza bruta” son: Una forma de describir los estados Un conjunto de operadores válidos (para pasar de un estado a otro) Un estado inicial Una descripción del estado objetivo Un problema de todos los algoritmos de de búsqueda por “fuerza bruta” es que su complejidad temporal crece exponencialmente con el tamaño del problema. Esto se denomina “explosión combinatoria”, y como consecuencia, el tamaño de los problemas que se pueden resolver con estas técnicas es bastante limitado. El término “heurística” se utiliza para cualquier “consejo” (en el cual se encuentra volcado nuestro conocimiento sobre el dominio) que frecuentemente es efectivo, pero el cual no está garantizado que funcione en todos los casos. Las funciones de evaluación heurísticas son el mecanismo a través del cual se nos permite introducir el conocimiento del domino específico que poseemos, para mejorar la eficiencia de la búsqueda. El valor devuelto por las mismas nos permitirán estimar la distancia a la que se encuentra un estado a expandir del estado objetivo. De este modo, es posible priorizar la exploración de los estados más prometedores y así orientar o dirigir la búsqueda en esa dirección. Laboratorio Análisis y Diseño de Algoritmos 2 7

8 Heurística En general, las soluciones encontradas con los algoritmos de búsqueda heurística son sub-óptimas. Existe un tipo de función heurística llamadas “admisibles”. Una función de evaluación heurística admisible nunca asigna a un estado un valor heurístico mayor al costo o distancia real. Para muchos algoritmos de búsqueda heurística (como el A*, por ejemplo), está garantizado que las soluciones encontradas serán las óptimas siempre que se utilicen heurśiticas admisibles. Para la mayoría de las aplicaciones es aceptable el intercambio de tiempo de cálculo por una solución no óptima, pero razonablemente buena. 8

9 Heurística Un ejemplo (x, y) ... ... (goalx, goaly) h = 2,8
Función Heurística h Distancia Euclídea h = 2 ... ... ... 9

10 Heurística Otro ejemplo ... Bloqueado ... h = 2,8 Función Heurística h
Distancia Euclídea h = 2 ... ... 10

11 Heurística Se definen los siguientes costos:
f(n) es el costo heurístico asociado a un estado n. g(n) es el costo para alcanzar un estado n a partir del estado inicial. h(n) es el costo heurístico para alcanzar un objetivo desde el estado n. La relación que existe entre los costos es: f(n) = g(n) + h(n) Para el algoritmo de búsqueda heurística que consideraremos, se define la función de evaluación heurística f. El valor heurístico f(n) asociado a un estado n, es la estimación del menor costo total de todos los caminos que llevan a una solución pasando por el estado n. 11

12 Heurística inicial f = g + h = 5,23 1 h = 2,23 Evaluado g = 3 Estado
Objetivo Evaluado f = g + h = 5,23 inicial 1 12

13 A* A* expande los nodos en el orden de sus valores heurísticos f(n).
El algoritmo mantine dos estructuras: Lista Abierta: con nodos generados sin expandir Lista Cerrada: con los nodos que ya han sido expandidos En cada ciclo el algoritmo lleva a cabo los siguientes pasos: Saca el nodo de la Lista Abierta con el menor valor f(n) Expande el nodo, generando todos sus hijos, les aplica la función heurística y los coloca la Lista Abierta en el orden de su valor heurístico. Coloca el nodo en la Lista Cerrada. El algoritmo termina cuando se elije el estado objetivo para la expansión. 13

14 Trabajo práctico Especial 2º parte
Se debe almacenar la siguiente información: para cada esquina: Dos coordenadas que indiquen su posición relativa en el plano. para cada cuadra: El nombre de la calle, El estado de la calle Laboratorio Análisis y Diseño de Algoritmos 2 14

15 Requisitos de la entrega
Implementación: La clase grafo con las correcciones solicitadas en la primer entrega. Los algoritmos BFS-Forest, DFS-Forest y Puntos de Articulación, funcionando correctamente con el grafo parametrizado con esquinas y calles. Las funciones necesarias para cargar y guardar el grafo en un archivo. El algoritmo A* que resuelva el problema solicitado. Una interfaz gráfica que permita: Editar el grafo de la ciudad (Agregar y Eliminar Vertices y Arcos, etc). Guardar y cargar el grafo del archivo. Permitir ejecutar y ver el resultado de cada uno de los algoritmos. Laboratorio Análisis y Diseño de Algoritmos 2 15

16 Requisitos de la entrega
Informe: Debe incluir las correcciones solicitadas en la primer entrega del trabajo, junto con el informe realizado para dicha entrega. Descripción del algoritmo A*, incluyendo una descripción de la implementación realizada y el cálculo de la complejidad. Breve descripción de los pasos necesarios para realizar las operaciones básicas de edición del grafo y ejecución de los algoritmos, utilizando la interfaz gráfica desarrollada. Laboratorio Análisis y Diseño de Algoritmos 2 16

17 Análisis y Diseño de Algoritmos 2
Fechas Fecha de entrega: 19 y 20 de noviembre Defensa: 26 y 27 de noviembre Laboratorio Análisis y Diseño de Algoritmos 2 17


Descargar ppt "Temas importantes para el desarrollo de la segunda parte del TPE"

Presentaciones similares


Anuncios Google