GRAFOS ESTRUCTURA DE DATOS. INTRODUCCION Los grafos son estructuras de datos Representan relaciones entre objetos Relaciones arbitrarias, es decir No.

Slides:



Advertisements
Presentaciones similares
PRACTICO N° 6 GRAFOS año: 2012.
Advertisements

GRAFOS ESTRUCTURAS DE DATOS.
GRAFOS: ALGORITMOS FUNDAMENTALES
Teoría de Grafos I semestre 2009 UNIVERSIDAD NACIONAL DE INGENIERIA
MATEMÁTICAS DISCRETAS.
“GRAFOS” Chacón Zamora José Christian González García Andrea
Tema 5 Grafos. Implementación (I)..
AED I. Estructuras de Datos.
Estructuras de datos y algoritmos
Programación entera y grafos
Material de apoyo Unidad 4 Estructura de datos
Grafos. Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por.
ARBOLES ESTRUCTURAS DE DATOS.

Estructuras de datos para Grafos
Grafos..
Estructura de Datos 4 Grafos Dirigidos
M.C. Meliza Contreras González
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.
Estructura de Datos Luis Humeau Waldi Saturno
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.
EL TDA COLA Estructuras de Datos. DEFINICION Abunda este concepto, en la vida cotidiana Cuando vamos al cine, para comprar las entradas Cuando estamos.
8-Puzle consiste en un tablero cuadrado (3x3) en el que hay situados 8 bloques cuadrados numerados (con lo cual se deja un hueco del tamaño de un bloque).
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
Universidad Autónoma del Estado de México
ANALISIS Y DISEÑO DEL ALGORITMOS
Estructuras PILA - COLA - LISTA.
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
PROBLEMA DEL AGENTE VIAJERO
TAD’s ARBOLES GENERALIZADOS
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2016
Listas enlazadas particulares
LISTAS..
Estructuras de datos y algoritmos
Listas Dinámicas.
TEORÍA DE GRAFOS -Algoritmo de Dijkstra -Algoritmo de Primm -Algoritmo de Kruskal Integrantes:
OMRI 2017 *inserta fecha aquí*
Introducción a las estructuras de datos
EL TDA COLA Estructuras de Datos. DEFINICION Abunda este concepto, en la vida cotidiana Cuando vamos al cine, para comprar las entradas Cuando estamos.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
PILAS Y COLAS INTEGRANTES: JAVIER GONZALEZ JORGE LUIS SOLIS ISAC FERNANDEZ.
Á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.
Grafos Introducción y definiciones.
Manuel Montes y Gómez Laboratorio de Tecnologías del Lenguaje
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
Árboles (Trees) Árboles Árboles binarios Recorridos de árboles
GRAFOS ESTRUCTURAS DE DATOS.
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
EL TDA COLA Estructuras de Datos.
Grafos (parte 1).
ANGULO YOMAIRA QUINTERO MARIA PAEZ MARIAM
Ejercicios.
Colas ESTRUCTURA DE DATOS. Colas Definición. Es una lista lineal de elementos en la que las operaciones de insertar y eliminar se realizan en diferentes.
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.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
Tema 5: Grafos CIS - UABJB - Estructura de Datos II
Algoritmos de caminos más cortos
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
características algoritmo algoritmo
Minimum Spanning Tree (Árbol de Expansión Mínima)
s t a c b d Grafos.
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 ESTRUCTURA DE DATOS

INTRODUCCION Los grafos son estructuras de datos Representan relaciones entre objetos Relaciones arbitrarias, es decir No jerárquicas Son aplicables en Química Geografía Ing. Eléctrica e Industrial, etc. Modelado de Redes De alcantarillado Eléctricas Etc. Impresora Modem PC2 Servidor PC1 Dado un escenario donde ciertos objetos se relacionan, se puede “modela el grafo” y luego aplicar algoritmos para resolver diversos problemas

DEFINICION Un grafo G = (V,A) V, el conjunto de vértices o nodos Representan los objetos A, el conjunto de arcos Representan las relaciones V = {1, 4, 5, 7, 9} A= {(1,4), (5,1), (7,9), (7,5), (4,9), (4,1), (1,5), (9,7), (5, 7), (9,4)}

TIPOS DE GRAFOS Grafos dirigidos Si los pares de nodos que forman arcos Son ordenados. Ej.: (u->v) Grafos no dirigidos Si los pares de nodos de los arcos No son ordenados Ej.: u-v CE D F H V = {C, D, E, F, H} A= {(C,D), (D,F), (E,H), (H,E), (E,C)} Grafo del ejemplo anterior

OTROS CONCEPTOS Arista Es un arco de un grafo no dirigido Vertices adyacente Vertices unidos por un arco Factor de Peso Valor que se puede asociar con un arco Depende de lo que el grafo represente Si los arcos de un grafo tienen F.P. Grafo valorado GuayaquilQuito Cuenca Ambato Riobamba

GRADOS DE UN NODO En Grafo No Dirigido Grado(V) Numero de aristas que contiene a V En Grafo Dirigido Grado de entrada, Graden(V) Numero de arcos que llegan a V Grado de Salida, Gradsal(V) Numero de arcos que salen de V CE D F H GuayaquilQuito Cuenca Ambato Riobamba Gradoent(D) = 1 y Gradsal(D) = 1 Grado(Guayaquil) = 3

CAMINOS Definicion Un camino P en un grafo G, desde V 0 a V n Es la secuencia de n+1 vertices Tal que (V i, V i+1 )  A para 0  i  n Longitud de camino El numero de arcos que lo forman Camino Simple Todos los nodos que lo forman son distintos Ciclo Camino simple cerrado de long. >= 2 Donde V 0 = V n Camino entre 4 y 7 P = {4, 6, 9, 7} Longitud: 3 A BC DEF Camino A y A P = {A, E, B, F, A} Longitud: 4 – 4ciclo

CONECTIVIDAD Grafo No Dirigido Conexo Existe un camino entre cualquier par de nodos Grafo Dirigido Fuertemente Conexo Existe un camino entre cualquier par de nodos Conexo Existe una cadena entre cualquier par de nodos H A B D

TDA GRAFO Datos Vertices y Arcos(relacion entre vertices) Operaciones void AñadirVertice(Grafo G, Vertice V) Añadir un nuevo vertice void BorrarVertice(Grafo G, Generico clave) Eliminar un vertice existente void Union(Grafo G, Vertice V1, Vertice V2) Unir dos vertices Void BorrarArco(Grafo G, Vertice V1, Vertice V2) Eliminar un Arco bool EsAdyacente(Grafo G, Vertice V1, Vertice V2) Conocer si dos vertices son o no adyacentes

REPRESENTACION Dos posibles representaciones Estatica: Matriz de Adyacencia Los vertices se representan por indices(0…n) Las relaciones de los vertices se almacenan en una Matriz Dinamica: Lista de Adyacencia Los vertices forman una lista Cada vertice tiene una lista para representar sus relaciones(arcos)

MATRIZ DE ADYACENCIA Dado un Grafo G = (V, A) Sean los Vertices V = {V0, V1, … Vn} Se pueden representar por ordinales 0,1,..n Como representar los Arcos? Estos son enlaces entre vertices Puede usarse una matriz V0V0 V1V1 V2V2 V3V3 V4V4 V5V5

EL TIPO DE DATO Los Vertices Se definen en un Arreglo Los Arcos Se definen en una Matriz #define MAX 20 typedef int [MAX][MAX] MatrizAdy; typdef Generico[MAX] Vertices; typedef struct Grafo{ Vertices V; MatrizAdy A; int nvertices; bool Dirigido; };

UNIR VERTICE void Union(Grafo G, int v1, int v2){ G->A[v1][v2] = 1; if(!G->dirigido) G->A[v2][v1] = 1; }

LISTA DE ADYACENCIA Si una matriz Tiene muchos vertices y Pocos arcos La Matriz de Adyacencia Tendra demasiados ceros Ocupara mucho espacio Los vertices Pueden formar una lista, no un vector Los arcos Son relaciones entre vertices Se pueden representar con una lista x cada vertice

EL TIPO DE DATO Cada vertice tiene Contenido Siguiente Una lista de adyacencia Cada nodo en la lista de adyacencia Peso del arco Siguiente Una referencia al vertice(arco) typedef struct Vertice{ Generico contenido; LSE *LA; }; typedef Vertice *Arco; typedef struct Grafo{ LSE LVertices; bool dirigido; };

ALGUNAS IMPLEMENTACIONES void Union(Grafo G, Vertice V1, Vertice V2){ LSE_InsertarNodoFin(V1->Larcos, LSE_CrearNodo(V2)); if(!G->dirigido) LSE_InsertarNodoFin(V2->Larcos, LSE_CrearNodo(V1); }

EJERCICIO Complete la implementacion de las operaciones del grafo con lista de adyacencia

RECORRIDOS DEL GRAFO Se busca Visitar todos los nodos posibles Desde un vertice de partida D Cualquiera Existe dos posibles recorridos En Anchura y En Profundidad

RECORRIDO EN ANCHURA Encolar vertice de partida Marcarlo como “visitado” Mientras la cola no este vacia Desencolar vertice W Mostrarlo Marcar como visitados Los vertices adyacentes de W Que no hayan sido ya visitados Encolarlos

EJEMPLO A T H B D C R D Cola Se Muestra: D BC BC CHHR H RA RA T T ATT

IMPLEMENTACION LSE *RecorrerEnAnchura(Grafo G, Vertice V){ LSE *L; LSE_nodo *sacado, *parco; Vertice *vsacado, *varco; Cola Q; L = malloc(sizeof(LSE)); LSE_Inicializar(L); Cola_Inicializar(&Q); V.visitado = TRUE; EnColar(&Q, LSE_NodoCrear(&V)); while(!Cola_EstaVacia(Q)){ sacado = DesEnColar(&Q); vsacado = Generico_ObtenerVertice(sacado->G); LSE_InsertarNodoFin(L, LSE_NodoCrear(vsacado)); for(parco = vsacado->LArcos->header; parco!=NULL; parco = parco->sig){ varco = Generico_ObtenerVertice(parco->G); if(!varco->visitado){ varco->visitado = TRUE; EnColar(&Q, LSE_NodoCrear(varco)); } return L; }

RECORRIDO EN PROFUNDIDAD Marcar vertice origen V como visitado Recorrer en Profundidad Cada vertice adyacente de V Que no haya sido visitado Ejemplo A T H B D C R Se Muestra: Pila D D B C C R R H H A T TAB

EJERCICIO Escriba la implementacion del recorrido en profundidad de un grafo a partir de un vertice inicial