Algoritmos sobre Grafos



Documentos relacionados
GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

Introducción a la Teoría de Grafos

Tema 7: Optimización sobre Redes Muchos de los problemas de Investigación Operativa pueden modelizarse y resolverse sobre un grafo: conjunto de

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Apuntes de Grafos. 1. Definiciones

Capítulo 1. MANUAL DE USUARIO

Capítulo 12: Indexación y asociación

Resolución de Problemas

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

ESTRUCTURA DE DATOS: ARREGLOS

Jhon Jairo Padilla Aguilar, PhD.

WAN y Enrutamiento WAN

Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas).

Estructuras de datos: Árboles binarios de

Primer Parcial de Programación 3 (1/10/2009)

Tema 6: Problemas Especiales de Programación Lineal

Estructura de datos y de la información Boletín de problemas - Tema 7

Unidad II: Análisis de Redes

Ampliación de Estructuras de Datos

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

árbol como un conjunto de nodos y líneas

Tema 4 Algoritmos y protocolos de encaminamiento

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

Métodos Heurísticos en Inteligencia Artificial

Análisis de redes PERT-CPM

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

Sistemas de producción y búsqueda de soluciones. Area de Computación e Inteligencia Artificial 1

ALGORITMO HILL CLIMBING

Programación Genética

Estructuras de Datos y Algoritmos Tecnólogo en Informática

1.0 Juegos en Forma Extensiva

Q-flow Patrones básicos de Workflow

Operación Microsoft Access 97

Algoritmos Básicos de Grafos

Mesa de Ayuda Interna

Problemas de Arquitectura de Redes, Sistemas y Servicios 2 o Grado en Ingeniería en Tecnologías de Telecomunicación Conjunto de problemas 6

Proyecto Help Desk en plataforma SOA Alcance del Sistema Versión 1.2. Historia de revisiones

Capítulo 6. ÁRBOLES.

Notas de Clase. Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia. 21 de febrero de 2004

ARREGLOS DEFINICION GENERAL DE ARREGLO

Tema 4. Gestión de entrada/salida

INSTRUCTIVO DEL COMANDO MAKE

6ª Práctica. Matlab página 1

BANNERS CÍCLICOS CON JAVASCRIPT

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

Flujo Máximo. Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem. 2002

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Universidad de Antioquia Juan D. Mendoza V.

Estructuras de datos: Proyecto 2

Estructuras de Datos y Algoritmos. Árboles de Expresión

Sistema de Ficheros. Sistemas Operativos - ITIG. Álvaro Polo Valdenebro. Abril apoloval@gsyc.es. GSyC Introducción 1

ETSIINGENIO 2009 DIBUJO DE GRAFOS MEDIANTE ALGORITMOS GENÉTICOS

CAPÍTULO II MARCO TEÓRICO ADMNISTRACIÓN DE PROYECTOS CON CPM

DETERMINACIÓN DEL VOLUMEN DE PEDIDO.

ANÁLISIS DE DATOS NO NUMERICOS

Capítulo VI. Diagramas de Entidad Relación

ESTUDIAR MATEMATICA EN CASA

REDES INFORMATICAS: Protocolo IP

ALGUNAS AYUDAS PARA EL ACCESO AL AULA DIGITAL Contenido

Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / Ejercicios de Patrones de Diseño:

Capítulo 9. Archivos de sintaxis

2.- Diseño del comportamiento: Diagrama de actividades. Mª Antonia Zapata

SISTEMA DE GESTIÓN DE INCIDENCIAS Y REQUERIMIENTOS MESA DE AYUDA SINAT MANUAL DE USUARIO

Práctica 8: Ruteo Dinámico

U.D.5: Diagramas de Gantt y PERT

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Metodología. del ajuste estacional. Tablero de Indicadores Económicos

Generación de ficheros PC-Axis desde Oracle mediante SAS

Redes y Servicios. Módulo I. Fundamentos y modelos de red. Tema 2. Fundamentos. Parte C. Nivel de red

Teoría del Juego - Juegos Combinatoriales Imparciales

Programación de Sistemas

Sistemas Operativos. Sesión 5: Protocolos de enrutamiento vector distancia

Enrutamiento (2) Area de Ingeniería Telemática

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

WINDOWS : COPIAS DE SEGURIDAD

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

UNIDAD 4 PROCESOS DE MARKOV

Archivos. Teoría de Sistemas Operativos. Archivos. Archivos. Archivos. Archivos. Administración de Archivos

Manual SBR. Pero antes de explicar las actividades que principalmente podemos desarrollar vamos a dar una visión global de la aplicación.

Conmutación. Conmutación telefónica. Justificación y definición.

Búsqueda heurística Prof. Constantino Malagón

Escuela Politécnica Superior. Planificación y Control de Proyectos. Capítulo 11. daniel.tapias@uam.es. Dr. Daniel Tapias Curso 2014 / 15 PROYECTOS

La Tecnología líder en Simulación

Proyecto Help Desk en plataforma SOA Modelo de Dominio Versión 1.3. Historia de revisiones

Práctica 7. Problemas de diseño de topologías de red con herramienta Net2Plan

TÉCNICAS DE PLANIFICACIÓN Y CONTROL DE PROYECTOS 1

Estructuras de Control - Diagrama de Flujo

Introducción a los Autómatas Finitos

Recuperador datos externos

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

Operación de Microsoft Word

Segunda práctica de Programación 2

editor de HTML integrado en Moodle. El contenido se divide en distintas partes llamadas páginas, que se muestran individualmente.

Curso PHP Módulo 1 R-Luis

Creación y administración de grupos de dominio

Transcripción:

Sexta Sesión 27 de febrero de 2010

Contenido Deniciones 1 Deniciones 2 3 4

Deniciones sobre Grafos Par de una lista de nodos y una lista de enlaces, denidos a su vez como pares del conjunto de nodos. G {V, E} V {v 1, v 2,..., v n } E {..., {v i, v j },... }, i, j [1, n], i j Si el orden de los elementos v i y v j en cada par del conjunto de enlace es relevante, se tiene un grafo dirigido Representaciones en algoritmos: Lista de Adyacencia: a i n, cada a i es la lista de nodos enlazados con el nodo i ésimo Matriz de Adyacencia: A a ij m n, a ij = 1 sí y sólo sí v i está conectado con v j, 0 en caso contrario. Se puede extender asignando a los a ij un valor asociado a la intensidad del enlace (matriz de proximidad) o la propia distancia geodésica de un nodo a otro (matriz geodésica)

Ciclo, Grafos Acíclicos Ciclo: secuencia de enlaces adyacentes en un grafo, recorridos sin repetir enlaces y cuyo nodo de partida es el mismo nodo de llegada. Ciclo Hamiltoniano: aquel que recorre todos sus nodos exactamente una vez (excepto el de partida/llegada). Ciclo Euleriano: ciclo que contiene todos los enlaces de un grafo, cada uno de ellos una única vez.

Grafo Dirigido Acíclico Grafo dirigido que no tiene ciclos para cada nodo, no hay un camino directo que empiece y termine en éste. Fuente: nodo sin enlaces de entrada, Sumidero: nodo sin enlaces de salida. Un GDA (DAG) nito tiene por lo menos una fuente y un sumidero. La profundidad de un nodo es la longitud del camino más largo desde una fuente a éste La altura de un nodo es la mayor longitud del camino más largo entre éste y un sumidero. La longitud de una DAG nito es la longitud (número de arcos) del camino más largo. máxima altura de todas las fuentes, máxima profundidad de todos los sumideros.

Etiquetado Deniciones Los recorridos sobre grafos exigen usualmente almacenar de forma accesible el Estado de cada nodo (y en ocasiones, enlace) del grafo según haya sido recorrido / analizado durante el proceso de análisis / búsqueda La forma de almacenar ese estado se puede implementar a través de atributos asignados a los nodos que representen el estado en el que se encuentra el nodo con un valor asociado a cada estado, El estado de un nodo puede constar de uno o más parámetros, simbólicos o numéricos. En casos de representaciones simbólicas, se suelen emplear enumeraciones descriptivas, que determinan la implementación de las reglas de evolución de los nodos del grafo

Etiquetado Deniciones Los recorridos sobre grafos exigen usualmente almacenar de forma accesible el Estado de cada nodo (y en ocasiones, enlace) del grafo según haya sido recorrido / analizado durante el proceso de análisis / búsqueda La forma de almacenar ese estado se puede implementar a través de atributos asignados a los nodos que representen el estado en el que se encuentra el nodo con un valor asociado a cada estado, El estado de un nodo puede constar de uno o más parámetros, simbólicos o numéricos. En casos de representaciones simbólicas, se suelen emplear enumeraciones descriptivas, que determinan la implementación de las reglas de evolución de los nodos del grafo

Etiquetado Deniciones Los recorridos sobre grafos exigen usualmente almacenar de forma accesible el Estado de cada nodo (y en ocasiones, enlace) del grafo según haya sido recorrido / analizado durante el proceso de análisis / búsqueda La forma de almacenar ese estado se puede implementar a través de atributos asignados a los nodos que representen el estado en el que se encuentra el nodo con un valor asociado a cada estado, El estado de un nodo puede constar de uno o más parámetros, simbólicos o numéricos. En casos de representaciones simbólicas, se suelen emplear enumeraciones descriptivas, que determinan la implementación de las reglas de evolución de los nodos del grafo

Algoritmos Básicos de Búsqueda

Problema del Ordenamiento Topológico Dado un Grafo Dirigido Acíclico, el problema del ordenamiento topológico consiste en Encontrar un ordenamiento de los vértices tal que todos ellos se listen hacia adelante (nodo inicial, nodo nal) de acuerdo a sus enlaces Utilidad: Asignar una prioridad a una lista de tareas con restricciones de precedencia (hacer primero la tarea A porque la B dependende del resultado de A, etc...) Se asume que el grafo está representado como una lista de adyacencias

Búsqueda en Profundidad Dada una lista de vértices V y una lista de enlaces E, hacer Para i = 1 hasta n Si v i no está marcado como visitado, RecorrerProfundidad(i) Fin Función RecorrerProfundidad(índice i) Marcar v i como visitado Agregar i a la lista de recorrido Usando la lista de enlaces e, para cada vecino v j de v i Regresar Si v j no está marcado como visitado RecorrerProfundidad(j) Agregar el enlace que une a v i con v j al árbol de recorrido

Búsqueda en Anchura Dada una lista de vértices V y una lista de enlaces E, deniendo una cola de prioridad Q, hacer Marcar el nodo inicial v i como visitado Añadir i a la lista de recorrido encolar v i en Q Mientras Q Ø extraer u i desde Q Para cada vecino u j de u i Si u j no esta marcado como visitado agregar u j a Q marcar u j como visitado Agregar el enlace que une a u i con u j al árbol de recorrido

Algoritmos de Ruta más corta

Algoritmo de BellmanFord Algoritmo de programación dinámica Encontrar la ruta más corta desde todos los nodos a un nodo sumidero t. Se suele calcular las longitudes de los caminos más cortos así que posteriormente se pueden recontruir las rutas fácilmente. Laidea de algoritmo es 1 Para cada nodo v, encontrar la longitud de la ruta más corta a t que usa al menos una arista o etiquetar si no hay tal ruta. 2 Supóngase para todo v se tienen las longitudes de la ruta más corta hasta t que usa i 1 o menos enlaces. La ruta más corta desde v a t que usa i o menos enlaces primero irá a algún vecino x j de v y tomar la ruta más corta desde x j hasta t que usa i 1 o menos enlaces (paso 1). Así, se necesita tomar únicamente los mínimos de la distancia entre todos los vecinos x j de 3 Repetir mientras i n 1

Pseudocódigo BellmanFord 1 inicializar d[v][0] = for v t. d[t][i]=0 i. 2 Para i = 1 hasta n 1 1 Para cada v t 1 d[v][i] = min (len(v,x) + d[x][i-1]) (v,x j ) E 3 Para cada v, escribir d[v][n-1].

Todas las distancias mínimas: FloydWarshall Sea A[i][j] la matriz de proximidad del grafo En vez de incrementar el número de enlaces en la rtua, se recorrerá el grafo por vértices Se incrementará el contador sobre el conunto de vértices que se admiten como intermedios en la ruta estimada Pseudocódigo: usando la matriz de i, después de cada iteración del bucle exterior, A[i][j] será igual a la longitud del camino más corto de v i a v j que puede usar los vértices en la secuencia {1, 2,..., k}: Para k = 1 hasta n Para cada i, j A[i][j] = min( A[i][j], (A[i][k] + A[k][j]);. Aunque el algoritmo tarda del orden de n 3, donde n es el número de nodos, El código es simple y compacto.

Todas las distancias mínimas: Dijkstra Sea un grafo dirigido conectado de N nodos, sea x el nodo origen y D n un vector (array) de distancias a los diferentes nodos indexados por n 1 Inicializar el array de todas las distancias en D n con un valor innito relativo (valor inicial desconocido), exceptuando la de x que se debe colocar en 0 (la distancia de x a sí mismo es 0). 2 Sea k = x (k es el nodo actual). 3 Recorrer todos los nodos adyacentes de k (denominados v i ), excepto los marcados como evaluados 4 Si la distancia desde x hasta v i guardada en D i es mayor que la distancia desde x hasta k sumada a la distancia desde a hasta v i, ésta se sustituye con la segunda nombrada, esto es: si (D i > D k + d(k, v i )) entoncesd i = D k + d(k, v i ) 5 Marcar como evaluadoa k. 6 El siguiente nodo actual es el de menor valor en D i (puede hacerse almacenando los valores en una cola de prioridad); volver a 3 mientras existan nodos no evaluados.

Algoritmo de Dijkstra: Ejemplo B 3 A 3 2 E 3 1 2 C 1 2 3 D G 3 F 2 Mientras Q Ø Se escoge v Q con menor D y se marca como visitado (sale de Q) Se añaden a Q los vecinos no marcados de v, denominados x Se actualiza D de cada x si la distancia que atraviesa a v es menor que la de la iteración anterior

Algoritmos basados en Árboles

Árbol de Expansión Spanning tree Un árbol de expansión de un grafo es una estructura de datos en árbol que toca todos los vértices del grafo Sólo tienen sentido en grafos de un sólo componente (conexos) Un árbol de expansión mínimo es un árbol de expansión cuya suma de longitudes de los enlaces es tan pequeña como sea posible en un grafo dado (puede haber más de uno) Se llama tamaño del árbol de expansión a la suma de las longitudes de los enlaces.

Algoritmo de Prim El algoritmo de Prim sobre un grafo permite construir el árbol de expansión mínimo (MST) del mismo. Puede verse como una versión simplicada del algoritmo de Dijkstra 1 Seleccionar un nodo arbitrario de inicio s. Inicializar el árbol T = s. 2 Repetidamente agregar el enlace más corto incidente a T en cada nodo (el enlace más corto que tiene un vértice dentro de los enlaces de T y el otro no hasta que el árbol contenga todos los nodos

Algoritmo de Kruskal Otra forma de encontrar el árbol de expansión mínimo de un grafo muy conocida es el Algoritmo de Kruskal. La idea es la de ordenar los enlaces por longitud y examinar cada uno de ellos del más corto al más largo. Se debe poner cada enlace en un conjunto de subárboles si no forma un ciclo con los enlaces escogidos con anterioridad