0% encontró este documento útil (0 votos)
219 vistas23 páginas

Clase Grafos Ed 2020 PDF

El documento describe conceptos básicos sobre grafos, incluyendo definiciones de vértices, aristas, grados de entrada y salida, caminos, ciclos, grafos dirigidos y no dirigidos, grafos conexos y fuertemente conexos. También describe formas de representar grafos como matrices de adyacencia y listas de adyacencia, así como operaciones comunes como agregar y eliminar vértices y aristas.

Cargado por

Delcar Jose
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
219 vistas23 páginas

Clase Grafos Ed 2020 PDF

El documento describe conceptos básicos sobre grafos, incluyendo definiciones de vértices, aristas, grados de entrada y salida, caminos, ciclos, grafos dirigidos y no dirigidos, grafos conexos y fuertemente conexos. También describe formas de representar grafos como matrices de adyacencia y listas de adyacencia, así como operaciones comunes como agregar y eliminar vértices y aristas.

Cargado por

Delcar Jose
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 23

LIMA – PERÚ – 2020

GRAFOS

ESTRUCTURA DE DATOS

Docente : Ing. Víctor Poma


Facultad: Ingeniería de Sistemas Computacionales
DEFINICIÓN

Un grafo está formado por entes físicos o conceptuales y las relaciones entre ellos un
conjunto de vértices o nodos V, que representan a los entes, y un conjunto de arcos A,
que representan las relaciones entre vértices.
Vértice
A B

E Arco E

D C

[email protected]|Ing. Víctor Poma


GRADO DIRIGIDO

• Se distingue entre grado de entrada y grado de salida; grado de entrada de un


nodo v, gradent(v), es el número de arcos que llegan a v; grado de salida de v,
gradsal(v), es el número de arcos que salen de v.

IA HW

DB

RN SW

[email protected]|Ing. Víctor Poma


CAMINO

• La longitud de un camino es el número de arcos del camino. En un grafo valorado, la


longitud del camino con pesos es la suma de los pesos de los arcos en el camino.

P2= (IA,ML)

IA HW P1= (DB,RN,SW,HW)

DB

ML

RN SW

[email protected]|Ing. Víctor Poma


GRAFO DIRIGIDO CON CICLOS

• En un grafo dirigido, un ciclo es un camino simple cerrado. Por tanto, un ciclo


empieza y termina en el mismo nodo, v0 = vn, y además, debe tener más de un arco.
Un grafo dirigido sin ciclos (a cíclico) se acostumbra a denominar GDA (Grafo
Dirigido A cíclico),

C
B
A

D E

[email protected]|Ing. Víctor Poma


GRADO NO DIRIGIDO

• Se distingue entre grado de entrada y grado de salida; grado de entrada de un


nodo v, gradent(v), es el número de arcos que llegan a v; grado de salida de v,
gradsal(v), es el número de arcos que salen de v.

IA HW

DB

RN SW

[email protected]|Ing. Víctor Poma


GRADO DIRIGIDO (GRAFO CONEXO)

Un grafo no dirigido es conexo si existe un camino entre cualquier par de nodos que
forman el grafo. Un grafo dirigido con esta propiedad se dice que es fuertemente
conexo. Además, un grafo completo es aquel que tiene un arco para cualquier par de
vértices.

3 5

7
2

[email protected]|Ing. Víctor Poma


GRADO DIRIGIDO (GRAFO FUERTEMENTE CONEXO)

Un grafo no dirigido es conexo si existe un camino entre cualquier par de nodos que
forman el grafo. Un grafo dirigido con esta propiedad se dice que es fuertemente
conexo. Además, un grafo completo es aquel que tiene un arco para cualquier par de
vértices.

4
8

5
6

[email protected]|Ing. Víctor Poma


MATRIZ DE ADYACENCIA (GRAFO DIRIGIDO)

La característica mas importante de un grafo, que distingue a uno de otro, es el conjunto


de pares de vértices que están relacionados, o que son adyacentes. Por ello, la forma
más sencilla de representación es mediante una matriz, de tantas filas/columnas como
nodos, que permite modelar fácilmente esa cualidad.

4
8

5
6

[email protected]|Ing. Víctor Poma


MATRIZ DE ADYACENCIA

La característica mas importante de un grafo, que distingue a uno de otro, es el conjunto


de pares de vértices que están relacionados, o que son adyacentes. Por ello, la forma
más sencilla de representación es mediante una matriz, de tantas filas/columnas como
nodos, que permite modelar fácilmente esa cualidad.

0 1 1 0 0
1 0 1 0 0
A= 0 1 1 0 0
0 1 1 0 0
1 0 0 0 0

[email protected]|Ing. Víctor Poma


MATRIZ DE ADYACENCIA (GRAFO NO DIRIGIDO)

4 0 1 0 1 1
1 0 1 0 0
A= 0 1 0 1 1
1 0 1 0 0
5 1 0 1 0 0
6

[email protected]|Ing. Víctor Poma


LISTAS DE ADYACENCIA

Las listas de adyacencia son una estructura multienlazada formada por una tabla
directorio en la que cada elemento representa un vértice del grafo, del cual emerge una
lista enlazada con todos sus vértices adyacentes. Es decir, cada lista representa los
arcos con el vértice origen del nodo de la lista directorio, por eso se llama lista de
adyacencia.

[email protected]|Ing. Víctor Poma


LISTAS DE ADYACENCIA

Si se analiza el vértice 5, es adyacente a los vértices 1, 2 y 4; por ello su lista de


adyacencia consta de tres nodos, cada uno con el vértice destino que forma el arco. El
vértice 4 no es origen de ningún arco, su lista de adyacencia está vacía.

1 3 4

2 3

3 1

5 1 2 4

[email protected]|Ing. Víctor Poma


OPERACIONES CON LISTAS ADYACENCIA

Nuevo vértice

Añade un nuevo vértice a la lista directorio. Si el vértice ya está en la tabla no hace nada,
devuelve control; si es nuevo, se asigna a continuación del último. La implementación no
considera que pueda haber overflow; el lector puede implementar un método auxiliar que
duplique la tabla si ésta se llena. El tiempo de la operación depende de la búsqueda, en
el peor caso es lineal, O(n) siendo n el número de nodos.

[email protected]|Ing. Víctor Poma


OPERACIONES CON LISTAS ADYACENCIA

Arista

Esta operación da entrada a un arco del grafo. El método tiene como entrada el vértice
origen y el vértice destino. El método adyacente() determina si la arista ya está en la lista
de adyacencia,

[email protected]|Ing. Víctor Poma


OPERACIONES CON LISTAS ADYACENCIA

Borrar arco

La operación consiste en eliminar el nodo de la lista de adyacencia del vértice origen que
contiene el arco del vértice destino. Una vez encontrada la dirección de ambos vértices
en la lista de nodos se accede a la correspondiente lista de adyacencia para proceder a
borrar el nodo que contiene el vértice destino.

[email protected]|Ing. Víctor Poma


OPERACIONES CON LISTAS ADYACENCIA

Adyacente

La operación determina si dos vértices, v1 y v2, forman un arco. En definitiva, si el


vértice v2 está en la lista de adyacencia de v1. El método buscarLista() devuelve la
dirección del nodo que contiene al arco, si no está devuelve null.

[email protected]|Ing. Víctor Poma


OPERACIONES CON LISTAS ADYACENCIA

Borrar vértice

Eliminar un vértice de un grafo es una operación que puede ser considerada costosa en
tiempo de ejecución, ya que supone acceder a cada uno de los elementos de la
multiestructura. En primer lugar, hay que buscar la dirección (puntero) del vértice en la
lista directorio. En segundo lugar, eliminar cada uno de los nodos de la correspondiente
lista de adyacencia. Y por último, recorrer cada lista de adyacencia y si encuentra algún
arco con el vértice que se está borrando, se elimina de la lista. (Se deja como ejercicio la
implementación de la operación.)

[email protected]|Ing. Víctor Poma


RECORRIDO DE UN GRAFO

El recorrido se inicia a partir del nodo D, se marca y se mete en la pila. Iterativamente,


se quita el nodo cabeza, se procesa, se meten en la pila sus adyacentes no marcados y
se marcan.

FILA VERTICES PROCESADOS


D D
B C C
B R R
B H H
B A T T
B A A
Pila vacia B

[email protected]|Ing. Víctor Poma


CONEXIONES EN UN GRAFO

El algoritmo para determinar las componentes conexas de un grafo G se basa en el


recorrido del grafo (en anchura o en profundidad). Los pasos a seguir son los siguientes:
1. Realizar un recorrido del grafo a partir de cualquier vértice w.
2. Si en el recorrido se han marcado todos los vértices, entonces el grafo es conexo.
3. Si el grafo no es conexo, los vértices marcados forman una componente conexa.
4. Se toma un vértice no marcado, z, y se realiza de nuevo el recorrido del grafo a partir.
5. El algoritmo termina cuando todos los vértices han sido marcados (visitados)

[email protected]|Ing. Víctor Poma


BUSQUEDA DE LOS PUNTOS DE ARTICULACIÒN

Los sucesivos vértices por los que se pasa en el recorrido en profundidad de un


grafo se puede representar mediante un árbol de expansión. La raíz del árbol es el
vértice de partida, A y cada arco del grafo será una arista en el árbol.

E
A D E

E Árbol de expansión
B C F
E
Grafo no dirigido E E

[email protected]|Ing. Víctor Poma


CASO PRACTICO

Programar en Java.
 Te invito a ver el video explicativo para poner en practica los
conocimientos empleados en esta presentación.

[email protected]|Ing. Víctor Poma


EJEMPLO

Se tiene el siguiente gafo, codificar en java para interpretar la conexión entre vértices por
cada camino.

3
A B
1

3 3
E C
2
3
1
D
F 3

[email protected]|Ing. Víctor Poma

También podría gustarte