GRAFOS ESTRUCTURAS DE DATOS.

Slides:



Advertisements
Presentaciones similares
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
Advertisements

GRAFOS ESTRUCTURAS DE DATOS.
Cont. Arbol Binario de Búsqueda
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Definiciones: conjuntos, grafos, y árboles
ARBOLES ESTRUCTURAS DE DATOS.
GRAFOS ESTRUCTURA DE DATOS. INTRODUCCION Los grafos son estructuras de datos Representan relaciones entre objetos Relaciones arbitrarias, es decir No.
Un grafo consta de un conjunto de vértices y un conjunto de aristas. Cada arista de un grafo se especifica mediante un par de vértices. Denotemos al conjunto.
BÚSQUEDA EN ESPACIOS DE ESTADOS Espacio de estados: modelo del mundo representado por un grafo Espacio de estados: modelo del mundo representado por un.
COLORACIÓN DE GRAFOS Y POLINOMIO CROMÁTICO PAOLA FABRES MARÍA JULIA SEGURA.
L ISTAS ENLAZADAS M.IA. Daniel Alejandro García López.
Profesor: Mag. Ing. Pavel Aliaga E. Facultad de Ing. de Sistemas Universidad de Lima Teoría de Grafos Estructuras Discretas en Computación.
Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007.
Programación lógica funcional Árboles Binarios.  El siguiente trabajo trata sobre la estructura de datos no lineales llamada árbol. Esta estructura se.
BÚSQUEDA DE SOLUCIONES Soluciones no Informadas (cont.) Dra. Myriam Hernández A.
ALGORITMO DE DIJKSTRA BANDA DÍAZ ANA KARINA SUAREZ BARON SINDY TATIANA.
Curso Sygma. Grafos Universidad San Buenaventura Cali.
LOGICA Y MATEMATICA COMPUTACIONAL
Árboles binarios. Algoritmos básicos
ESTRUCTURAS CONDICIONALES
Universidad Autónoma del Estado de México
ANALISIS Y DISEÑO DEL ALGORITMOS
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
Guía de Ejercicios 3: D&AA Universidad Viña del Mar 30/9/2002
Montículos Binarios (Binary Heaps)
TAD’s ARBOLES GENERALIZADOS
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2016
Listas enlazadas particulares
LISTAS..
TUTORIAL PSeint.
Listas Dinámicas.
TEORÍA DE GRAFOS -Algoritmo de Dijkstra -Algoritmo de Primm -Algoritmo de Kruskal Integrantes:
Universidad Nacional de Loja
Introducción a las estructuras de datos
ÁRBOLES El árbol es una estructura de datos muy importante en informática y en ciencias de la computación. Los árboles son estructuras no lineales,
CONJUNTOS ESTRUCTURAS DE DATOS.
Árboles clase 6 Apoyo de Práctica. Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido.
ÁRBOLES ESTRUCTURA DE DATOS II ING. CARLOS ALBERTO PULLAS.
ESTRUCTURAS DISCRETAS M. Sc. PABLO CESAR TAPIA CATACORA.
ÁNGULO TRIGONOMÉTRICO EL ÁNGULO TRIGONOMÉTRICO SE OBTIENE GIRANDO UN RAYO ALREDEDOR DE SU ORIGEN. SENTIDO DE GIRO HORARIO SENTIDO DE GIRO ANTIHORARIO.
Agentes que planifican. 1. Introduccion En la actualidad todas la mayoría de actividades en un empresa o compañía, como en el hogar o el medio ambiente.
Grafos Introducción y definiciones.
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
Árboles (Trees) Árboles Árboles binarios Recorridos de árboles
Árboles Binarios de Búsqueda (ABB)
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
características algoritmo algoritmo algoritmo
EL TDA COLA Estructuras de Datos.
Grafos (parte 1).
ANGULO YOMAIRA QUINTERO MARIA PAEZ MARIAM
TRIGONOMETRIA CONTEMPORANEA.
Introducción a la Estadística Informática
Ejercicios.
OPTIMIZACIÓN EN REDES EN ALGUNOS PROBLEMAS DE OPTIMIZACIÓN PUEDE SER ÚTIL REPRESENTAR EL PROBLEMA A TRAVÉS DE UNA GRÁFICA: ruteo de vehículos, distribución.
GRAFOS ESTRUCTURA DE DATOS. INTRODUCCION Los grafos son estructuras de datos Representan relaciones entre objetos Relaciones arbitrarias, es decir No.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
Tema 5: Grafos CIS - UABJB - Estructura de Datos II
Algoritmos de caminos más cortos
Árboles Binarios Estructuras de Datos.
características algoritmo algoritmo
Árboles Binarios Recorridos.
Minimum Spanning Tree (Árbol de Expansión Mínima)
Luis Manuel Monroy García Matemáticas discretas Ingeniería de Sistemas Universidad Simón Bolívar.
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
s t a c b d Grafos.
UNIVERSIDAD NACIONAL DEL CENTRO DEL PERU FACULTAD DE INGENIERIA DE MINAS HUANCAYO I MODELO DE REDES Ing. Eli Teobaldo Caro Meza CURSO: INVESTIGACION.
Espacio de estados: un problema se divide en un conjunto de pasos de resolución desde el inicio hasta el objetivo. Los estados y su relación de accesibilidad.
Grafos. Concepto: Un Grafo no es más que un conjunto de nodos o vértices que se encuentran relacionados con unas aristas. Además, los vértices tienen.
Grafos s t a c b d Grafos.
Transcripción de la presentación:

GRAFOS ESTRUCTURAS DE DATOS

Componentes conexas: entre ellas son conexas De un grafo no dirigido Se pude saber si es conexo Si no lo es se pueden conocer sus Componentes Conexas Conjunto W, de vértices del grafo En el cual hay camino desde cualquier V1 a cualquier V2 Donde V1 y V2 pertenecen a W Componentes conexas: entre ellas son conexas CONEXO A C B D E A C B D E No CONEXO

ALGORTIMO: DETERMINAR CONEXIÓN Si entre todos los vértices, hay camino Un recorrido desde cualquier vértice Visitara a TODOS los vértices del grafo Si no Tendremos una componente conexa Conjunto de vértices recorrido Para descubrir otras Repetir recorrido desde un vértice no visitado Hasta que todos los vértices hayan sido visitados

EJEMPLO A B E A B E C D C D Componente Conexa W1 Recorrido desde E Recorrido desde B Conjunto recorridos = Conjunto de Vertices Es CONEXO B A

Las componentes forman una Lista de Listas IMPLEMENTACION No olvidar: Luego de recorrer, obtendremos un conjunto de vertices LRecorrido bool ComponentesConexas(Grafo G, LSE *LComponentes){ Vertice *V; LSE *LRecorrido; while(TRUE){ V = BuscarVerticeNoVisitado(G); if(!V) break; LRecorrido = RecorrerAnchura(G,*V); LSE_InsertarNodoFin(LComponentes, LSE_CrearNodo(LRecorrido)); } if(LComponentes->header == LComponentes->last) return TRUE; return FALSE; Las componentes forman una Lista de Listas

COMPONENTES FUERTEMENTE CONEXAS De un grafo DIRIGIDO Se puede saber si es FUERTEMENTE CONEXO Si no lo es se pueden conocer sus Componentes Fuertemente Conexas Conjunto W, de vertices del grafo En el cual hay camino desde cualquier V1 a cualquier V2 Donde V1 y V2 pertenecen a W No CONEXO 4 5 6 8 C F H B S Componentes CONEXO

ALGORITMO Dado un Vo, se desea conocer Los vertices a los que se puede llegar (D) Los vertices que llegan a Vo (A) Si D interseccion A = V entonces Hay camino entre cualquier par de vertices Fuertemente conexo Si no Tendremos una componente conexa Conjunto de vertices recorrido Para descubrir otras Repetir recorrido desde vertice que no sea elemento de una C.F.C. Hasta que todos los vertices esten en C.F.C

EJEMPLO C B H F S W = D  A C B W1 = {B, C, S} W2 = {H} W3 = {F} H W <> V, Componente F.C. F S 1) Recorrer desde B (Descendientes) 1) Recorrer desde H (Descendientes) 1) Recorrer desde F (Descendientes) D = B S C D = H F C B S D = F C B S 2) Invertir Direcciones 3) Recorrer desde B (Ascendientes) 3) Recorrer desde H (Ascendientes) 3) Recorrer desde F (Ascendientes) A = B C F H S A = H A = F H

PUNTOS DE ARTICULACION En un grafo no dirigido conexo Existen vertices que si se eliminan “Desconectan” al Grafo Lo dividen en componentes conexas Estos vertices “clave” Son puntos de articulacion Si un grafo no tiene P.A. Es biconexo La conectividad de un grafo Es el numero de nodos que se necesitan eliminar Para dejar a un grafo “desconectado”

EJEMPLO A D C B E F Puntos de Articulacion

ARBOL DE EXPANSION Para poder calcular los P.A. de un grafo Hay que obtener el arbol de expansion Este se obtiene A partir del Recorrido en Profundidad Ejemplo A C D F A B E C E Arco en Retroceso: Cuando se quiere visitar un nodo que ya ha sido visitado y no es el padre D B F

COMO REPRESENTAR EL ARBOL DE EXPANSION Un arbol en expansion No es un arbol binario Cada Vertice puede tener 0, 1 o n hijos Si sabemos que CADA VERTICESOLO TIENE UN PADRE Si no tomamos en cuenta los Arcos en Retroceso La representacion depende del Grafo Matriz de Ady -> Usar un arreglo o Lista de Ady -> Una lista La representacion mostrará Quien es el padre de cada nodo

ARBOL DE EXPANSION CON MATRIZ DE ADY. Los vertices del grafo Se encuentran en un arreglo Cada indice del arreglo Representa un vertice Ej: A – 0, B – 1, etc Al representar el arbol de expansion El padre(indice) de cada nodo Puede almacenarse en un arreglo Que tambien represente a los vertices A B C E D F 4 5 2 A 1 B 2 C 3 D 4 E 5 F typedef struct TVertices{ Generico V[MAX]; int Padres[MAX]; int nvertices; }Vertices;

ARBOL DE EXP. CON LISTA DE ADYACENCIA Los vertices del grafo Se encuentran en una lista Cada nodo Representa un vertice Al representar el arbol de expansion De cada nodo de esta lista Solo nos interesa conocer al padre Se puede añadir un dato al nodo vertice Un enlace con el padre D F A B C D E F typedef struct Vertice{ Generico Informacion; Vertice *padre; Lista *LArcos; }Vertice;

ALGORITMO: ENCONTRAR P.A. Num(v) se calcula a medida que se genera el Arbol de Expansion Para calcular Bajo(v), se necesita bajar hasta conocer los Bajos(hijos de v) A cada vertice numerarlo De acuerdo al recorrido Se obtiene Num(v) A c/vertice, calcular Bajo(v) Minimo entre Num(v) Num(arco_retroceso de v) Bajo(hijos de v) P.A. son La raiz si tiene >= 2 hijos Vertices para los cuales Algun Bajo(hijo de v) >= Num(v) 1 ,1 Min(1, --, 2) A es P.A. A C es P.A. 2 ,2 3 ,3 D C Min(3, --, 3) F 4 ,3 Min(2, --, --) Min(4, ---, 3) E 5 ,3 B Min(5, ---, 3) 6 ,3 Min(6, 3, ----)

CAMBIOS EN EL ARBOL Tanto Num(v) como Bajo(v) Deben ser parte ahora de la estructura Del arbol typedef struct TVertices{ Generico V[MAX]; int Padres[MAX]; int Num[MAX]; int Bajo[MAX]; int nvertices; }Vertices; typedef struct Vertice{ Generico Informacion; int Num, Bajo; Vertice *padre; Lista *LArcos; }Vertice;

COMO IMPLEMENTAR?? Primero Luego Que representacion se usara? Si es M.A. Usar Arbol de Expansion como un tipo aparte Si es L.A. Usar Grafo para trabajar con Arbol de Exp. Luego Recorrer el grafo Para llenar Num y enlazar a los padres Calcular Bajo Y con esta informacion decidir cual es punto de art.

IMPLEMENTACION CALCULAR NUM y PADRES //Al recorrer, llenar Num y enlazar con los padres void RecorrerParaArbol(Grafo G, Vertice *V, int *vez){ int i; LSE_nodo *p; V->visitado = TRUE; *vez++; ((Vertice *)(p->G))->Num = *vez; for(p = V->LA->header; p!=NULL; p= p->sig){ if(!((Vertice *)(p->G))->Visitado){ RecorrerParaArbol(G, p->G, vez); ((Vertice *)p->G)->padre = V; } Al vertice de origen, marcar como vistado y contarlo, hay que llevar rastreo del aumento del contador

IMPLEMENTACION CALCULAR BAJO //Para calcular el Bajo de Vorigen, calcular Bajo de los hijos(en recorrido9 //Es decir, recorrer otra vez el grafo para poder “bajar” x el mismo void CalcularBajo(Grafo G, Vertice *V ){ int i; LSE_nodo *p; Vertice *Ad; V->visitado = TRUE; V->Bajo = V->Num; for(p = V->LA->header; p!=NULL; p= p->sig){ Ad = Generico_ObtenerVertice(p->G); if(!Ad->Visitado){ CalcularBajo(G, Ad); if(Ad->Bajo < V->Bajo) V->Bajo = A->Bajo; }else if(V->padre!=Ad) if(Ad->Num < V->Bajo) V->Bajo = Ad->Num; } Antes de llamar a esta funcion, el grafo debe de volver a quedar como si no se hubiese recorrido antes Calcular el bajo del hijo, si es menor que el actual, cambiarlo Si ya fue visitado y no es el padre: arco en retroceso

EJERCICIO Escriba una funcion que dado un Grafo permita conocer los puntos de Articulacion del mismo Recuerde que los P.A. son vertices