Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


grafos apuntes java java java, Diapositivas de Programación Java

dsaddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Tipo: Diapositivas

2016/2017

Subido el 16/03/2017

jesus_c._martinez
jesus_c._martinez 🇪🇸

4.5

(4)

1 documento

1 / 12

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Estructuras de Datos 2016
GRAFOS (parte 1)
M.C. Yalú Galicia Hernández (FCC/BUAP) 1
Grafos
Introducción a la teoría de grafos
M.C. Yalú Galicia Hdez. (FCC/BUAP)
1
Introducción
Los grafos sirven
para representar
relaciones
arbitrarias (no
necesariamente
jerárquicas)
entre objetos de
datos
M.C. Yalú Galicia Hdez. (FCC/BUAP)
2
Aplicaciones
Circuitos electrónicos
Tarjetas impresas
Circuitos integrados
Redes de transporte
Autopistas
Vuelos
Redes de ordenadores
LANs
Internet
Web
Planeación (rutas críticas)
Planificación de las
tareas que completan
un proyecto
Redes sociales
M.C. Yalú Galicia Hdez. (FCC/BUAP)
3
Ejemplo de uso de Grafos
En una red de carreteras las poblaciones representan
los vértices del grafo y las carreteras de unión de dos
poblaciones, los arcos, de modo que a cada arco se
asocia información tal como la distancia entre dos
ciudades, el consumo de gasolina por automóvil, etc.
M.C. Yalú Galicia Hdez. (FCC/BUAP)
4
Atlixco
Tehuacán
Puebla
Teziutlan
Chignahuapan
Zacatlán
Zacapoaxtla
2
2.5
5
3
2
1
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga grafos apuntes java java java y más Diapositivas en PDF de Programación Java solo en Docsity!

GRAFOS (parte 1)

Grafos

Introducción a la teoría de grafos

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Introducción

 Los grafos sirven

para representar

relaciones

arbitrarias (no

necesariamente

jerárquicas)

entre objetos de

datos

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Aplicaciones

 Circuitos electrónicos

 Tarjetas impresas

 Circuitos integrados

 Redes de transporte

 Autopistas

 Vuelos

 Redes de ordenadores

 LANs

 Internet

 Web

 Planeación (rutas críticas)

 Planificación de las

tareas que completan

un proyecto

 Redes sociales

M.C. Yalú Galicia Hdez. (FCC/BUAP)

3 Ejemplo de uso de Grafos

 En una red de carreteras las poblaciones representan

los vértices del grafo y las carreteras de unión de dos

poblaciones, los arcos, de modo que a cada arco se

asocia información tal como la distancia entre dos

ciudades, el consumo de gasolina por automóvil, etc.

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Atlixco

Tehuacán

Puebla

Teziutlan

Chignahuapan

Zacatlán

Zacapoaxtla

GRAFOS (parte 1)

Definiciones

 Un grafo consiste en un conjunto de vértices o

nodos (V) y un conjunto de arcos o aristas (A).

 Un grafo se representa con el par G = (V,A).

 El número de elementos de V se llama orden

del grafo

 Un grafo nulo es un grafo de orden cero

 Un arco o arista está formado por un par de

nodos u y v, y se representa por (u,v)

 Un grafo es dirigido (o digrafo) si los pares de

nodos que forman los arcos son ordenados y se

representan u  v.

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Definiciones

 Un grafo no dirigido es aquel que los arcos

están formados por pares de nodos no

ordenados, se representa u  v.

 Si (u,v) es una arista en el conjunto de aristas

del grafo A(G), entonces u y v se dice que

son vértices adyacentes.

 Es decir, dos vértices son adyacentes si hay un

arco que los une.

 Un arco tiene, a veces, asociado un factor

de peso, en cuyo caso se dice que es un

grafo valorado o ponderado.

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Fundamentos: grafos dirigidos

 Grafo no dirigido

V(G1) = {a,b,c,d}

A(G1) = {(a,b),(a,d),(b,c),(b,d)}

Adyacentes a a: b, d

Adyacentes a b: a, c, d

 Grafo dirigido

V(G2) = {1,3,5,7,9}

A(G2) = {(1,3),(3,1),(9,1),

(3,5),(5,7)}

Adyacentes a 1: 3

Adyacentes a 3: 1, 5

M.C. Yalú Galicia Hdez. (FCC/BUAP)

a

b

d

c

Fundamentos

 Grado de un vértice (o nodo)

 En un grafo no dirigido

 Grado de un nodo u = nº de aristas que contienen a u

 En un grafo dirigido

 Grado de entrada de u = nº de arcos que llegan a u

 Grado de salida de u = nº de arcos que salen de u

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Grado entrada/salida para:

GRAFOS (parte 1)

Fundamentos: ciclos y

bucles

 Un ciclo es un camino simple

cerrado con u0=un,

compuesto al menos por tres

nodos

 Un ciclo es simple si todos sus

vértices y arcos son distintos

 Un arco que va desde un

vértice a sí mismo (u,u) se

denomina bucle o lazo

 Ejemplo

 C1 es un ciclo simple

 C2 es un ciclo no simple

M.C. Yalú Galicia Hdez. (FCC/BUAP)

C

1

U X

V

W

Z

Y

a

c

b

e

d

f

g

C h

2

Actividad Individual

 Obtener todos los

caminos de vértice 1 al 4

y del 4 a cualquier otro

vértice

 Determinar cual de ellos

es simple

 Hay cliclos? Cual?

 ¿Se trata de un grafo

conexo?

M.C. Yalú Galicia Hdez. (FCC/BUAP)

TAD GRAFO

 Composición:

:: = {} + {}

::= <> + [<>]

::= <> + <>

:: = {} +

{}

::= <> + [<>]

::= <> +

<> + <>

M.C. Yalú Galicia Hdez. (FCC/BUAP)

TAD GRAFO: Operaciones

Creación del grafo crearGrafo (grafo)

Inserción de vértices insertarVertice(grafo, vertice)

Eliminación de vértices borrarVertice(grafo,

referenciaVertice)

Inclusión de aristas insertarArista(grafo, vertice1,

vertice2)

Borrar aristas borrarArista(grafo,arista)

Recorrido del grafo recorrer(grafo,tipoRecorrido)

M.C. Yalú Galicia Hdez. (FCC/BUAP)

GRAFOS (parte 1)

TAD GRAFO: Operaciones

asignarInfo(referenciaVertice, valorInformacion)

Modificación de vertices

info(referenciaVertice)Informacion

grado(referenciaVertice)Entero

gradoEntrante(referenciaVertice)Entero

gradoSaliente(referenciaVertice)Entero

adyacentes(referenciaVertice){referenciaVertice}

incidentes{referenciaVertice){referenciaVertice}

esAdyacente(refenciaVertice1, referenciaVertice2)Boolean

Acceso a los vertices

asignarEtiqueta(referenciaArista, valorEtiqueta)

Modificación de aristas

vertices(referenciaArista)(refVertice, refVertice)

destino(referenciaArista)refVertice

origen(referenciaArista)refVertice

etiqueta((referenciaArista)etiqueta

Acceso a las aristas

Representación de GRAFOS

 Matriz de adyacencias

 Sea G = (V,A) un grafo de n nodos, suponemos que

los nodos V = {u1,...,un} están ordenados y podemos

representarlos por sus ordinales {1,2,...,n}.

 La representación de los arcos se hace con una

matriz A de nxn elementos aij definida:

1 si hay arco (ui,uj)

aij

0 si no hay arco (ui,uj)

 En resumen, la matriz de adyacencia a es un arreglo

de dos dimensiones que representa las conexiones

entre pares de vértices.

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Representación: matriz de

adyacencia

M.C. Yalú Galicia Hdez. (FCC/BUAP)

1

2

6

2

1

Actividad Individual

 Obtén la matriz de adyacencia para el siguiente

grafo.

M.C. Yalú Galicia Hdez. (FCC/BUAP)

e

b

a

c d

f

GRAFOS (parte 1)

Representación: listas de

adyacencia

 Ejemplo

M.C. Yalú Galicia Hdez. (FCC/BUAP)

2

5

7

2

3

1

Actividad Individual

 Obtener la lista de adyacencia para el

siguiente grafo.

M.C. Yalú Galicia Hdez. (FCC/BUAP)

g

b

a

c

d

i

e

f

j

h

Actividad individual

 Obtener la lista de adyacencia para el siguiente

grafo con aristas ponderadas.

M.C. Yalú Galicia Hdez. (FCC/BUAP)

¿Que hemos aprendido?

M.C. Yalú Galicia Hdez. (FCC/BUAP)

GRAFOS (parte 1)

Algoritmos de

búsqueda o

recorridos en grafos

Profundidad y anchura

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Recorridos en Grafos

 Muchas de las aplicaciones computacionales

naturalmente incluyen no solo un conjunto de

elementos sino un conjunto de conexiones

entre pares de esos elementos

 Las relaciones implicadas por esas conexiones

guían inmediatamente a un conjunto de

preguntas:

 ¿Hay alguna manera de ir de un elemento a otro

siguiendo las conexiones?

 ¿Cuántos otros elementos pueden ser alcanzados

desde un elemento dado?

 ¿Cual es la mejor manera de ir desde un

elemento a otro?

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Algoritmos de búsqueda o

recorridos en grafos

 Recorrer un grafo consiste en pasar

exactamente una vez por cada uno de los

vértices del grafo en busca de algún vértice

en particular.

 Existen varias formas de realizar este proceso

dependiendo del objetivo particular:

 Recorrido o búsqueda primero en profundidad

  • DFS (Depth-First Search)

 Recorrido o búsqueda primero en achura – BFS

(Breadth-First Search)

M.C. Yalú Galicia Hdez. (FCC/BUAP)

(^31) Recorridos: operaciones

auxiliares

 Marcar vértice como visitado

 Si los vértices están identificados por algún tipo

ordinal, emplear un conjunto que contenga los

identificadores de los vértices visitados

 Encontrar los vértices adyacentes

 Con matrices de adyacencia: recorrer la fila

correspondiente al vértice, buscando columnas igual

a 1

 Con listas de adyacencia: recorrer la lista

 Estructuras auxiliares

 TDA Pila en Profundidad

 TDA Cola en Anchura

M.C. Yalú Galicia Hdez. (FCC/BUAP)

GRAFOS (parte 1)

Recorrido primero en

profundidad

M.C. Yalú Galicia Hdez. (FCC/BUAP)

a b c e d f g h i j

a b c d e f g h i j

a b c d e f g h i j

 Solución

Actividad colaborativa

M.C. Yalú Galicia Hdez. (FCC/BUAP)

 En binas escribir el algoritmo Primero en

profundidad (DFS: Depth First Search)

 Tip: Pensar recursivamente

Recorridos

 Primero en anchura (BFS: Breadth First

Search)

 Visitar vértice inicial vi

 Visitar todos los vértices adyacentes a vi

 Al terminar, comenzar a visitar los adyacentes a

los adyacentes a vi

 ... proceder así hasta que no queden vértices por

visitar

M.C. Yalú Galicia Hdez. (FCC/BUAP)

(^39) Recorridos: Anchura

Inicio

marcar vi como visitado

meter vi en cola Q

mientras cola Q no vacía hacer

sacar v de cola Q

para cada vk adyacente a v hacer

si vk no visitado entonces

marcar vk visitado

meter vk en cola Q

fin_si

fin_para

fin_mientras

Fin

M.C. Yalú Galicia Hdez. (FCC/BUAP)

GRAFOS (parte 1)

Recorrido primero en

anchura

1

2

3

4

5

6

7

8

9

10

11

12

Recorrido primero en

anchura

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Actividad colaborativa

 En binas obtener la matriz de adyacencia y el

recorrido del grafo en anchura

g

b

a

c

d

i

e

f

j

h

Actividad colaborativa

 En equipos de 4, suponiendo que se cuenta con la

clase Grafo como se muestra.

 Implementar los recorridos en profundidad y

anchura

M.C. Yalú Galicia Hdez. (FCC/BUAP)

Grafo

  • M[][]: int
  • V[]: vertice

+Grafo()

+Grafo(n: int)

+agregarVertice(v: String)

+agregarArista(vo: String, vd:

String)

+verMatriz()

+BFS(vi: String) //anchura

+DFS(vi: String) //profundidad

Vertice

  • nombre: String
  • index: int
  • visitado: boolean

+Vertice(nombre: string)

+Vertice(nombre: string,

index)

+getIndex(nombre: string): int

+setVisitado(s: boolean)

+isVisitado(): boolean