SlideShare una empresa de Scribd logo
1 de 18
Graphs
ALGORITMOS Y ESTRUCTURAS DE DATOS

Oliver Martinez
N.E.200.90.5607
Graphs
Un graph tiene una estructura más general que la de un tree. Un tree es un
tipo de graph si lo podemos ver así.
Con un graph podemos representar cosas interesantes de nuestro mundo
como un Sistema de autopistas, un sistema de vuelos de ciudad a ciudad
como se conectan las computadora a un red, etc.
Los humanos tenemos la capacidad de entender un mapa y sus relaciones,
lamentablemente las computadoras no lo tiene. Tenemos que aprender a
ver un mapa como un graph y asi podríamos hacer que la computadora
hiciera cosas interesantes.
Graphs
Veamos un ejemplo de la información que un estudiante necesita para tener
un grado asociado, necesita saber que cursos debe tomar y el orde a seguir
para lograrlo.

Un graph nos ayudaría a representarlo. Veamos la imagen.
Graphs
Vocabulario y definiciones.


Vertex: también conocido como nodo y es la parte fundamental del
graph. También lo podemos encontrar con el nombre de “key”



Edge: es otra parte fundamental del graph. Este conecta dos vertices
mostrando que hay una relación entre ellos. Los edges pueden ser en un
sentido o en dos sentidos. Si todos los edges en un graph son solo de un
solo sentido se le conocerá como directed graph o digraph



Weight: el peso(weight) es el costo que tiene la conexión de un vértice a
otro. Por ejemplo en un graph tenemos los vertices que están conectados
y que representan dos ciudades, el peso sería la distancia que hay entre
las mismas.
Graphs
Con estas definiciones podemo representar un grahp.
G = (V,E)
G es reprentación de grahp, V es representación de los vertices y la E de los
edges (la conecxión de los vertices)
Graphs
Analizemos la siguiente imagen.
Tenemos 6 vertices del V0 al V5. Si tomamos
un ejemplo vemos que del V3 al V4 hay un 7
el 7 sería el peso. Podemos representar también
de la siguiente manera:
E={(v0,v1,5),(v1,v2,4),(v2,v3,9),(v3,v4,7),(v4,v0,1),
(v0,v5,2),(v5,v4,8),(v3,v5,3),(v5,v2,1)}
Graphs
Veamos dos definiciones más.


Path: es una secuencia de vertices que estan conectados entre sí. En
nuestro ejemplo anterior el path de V3 a V1 sería {V3,V4,V0,V1}. El peso del
path sería la suma de los edges {(v3,v4,7),(v4,v0,1),(v0,v1,5)}.



Cycle: es path que empieza y termina en el mismo vértice. Por ejemplo en
la figura que analizamos enteriormente el path (V5,V2,V3,V5) es un ciclo
ya que empieza en V5 y termina en V5. Un graph sin cilclos se le llama
acyclic graph. Un graph directo sin ciclos se le llama directed acyclic
graph o DAG.
Graphs
An Adjacency Matrix.
Una matríz es una forma facil de representar un graph.
Una matríz de dos dimensiones es una serie de filas y
columnas que representan los vertices. El valor que se
encuentra almacenado en la celda es la conexión que
se tiene entre esos dos vertices, así mismo representa el
peso.
Cuando dos vertices estan conectados por un edge lo
llamamos adyacente.
Veamos la siguiente imagen.
Una de las desventajas que podemos apreciar es que
encontraremos muchos espacios vacios, a este tipo de
matríz se le conoce como “sparse” o escaso.
Graphs
An Adjacency List.
Una forma más eficiente de presentar un graph
es una lista adyacente o de proximidad. En esta
forma de representación mantenemos un listado
de los vertices y cada vértice mantine un objero
con la relación y el peso que tiene con otro
vertices.
En la imagen vemos que el objeto de relación
con los vertices es utilizado como un diccionario
donde el vértice es el key y los valores son el
peso.
En la primera posición vemos que el id = V0 y la
relación es con V1 con peso de 5 y con V5 el
peso es 2.
Graphs
Veamos la implementación en Python.
Se crearán dos clases.
I.

Vertex Class: representará los vertices

II.

Graph Class: representará la lista de los vertices.

La clase Vertex utiliza un diccionario de nombre connectedTo para llevar el
seguimiento de los vertices que estan conectados, del peso y del edge.
También utiliza addNeighbor que añade una conección con otro vértice.
En la clase Graph se utiliza el addEdge que realiza la conección entre
vertices. getVertex para saber el nombre del vértice.
Graphs
Primeramente inicializaremos la instancia de la clase Graph que en este
ejemplo será g la instancia. Adicionalmente añadiremos los vertices al listado
con un loop For utilizando la función addVertex. Será 6 vertices del 0 al 5.
Graphs
Una vez que tenemos creado nuestro
listado de vertices agregaremos los
edges, las relaciones que tendrán
cada uno de los vertices agregados.
Para esto utilizaremos la función
addEdge donde nuestro primer valor
será el vértice, el segundo valor será el
Segundo vértice o el neighbor (el
vértice conectado al primero) y el
tercer valor será el peso que tendrá la
relación entre los dos vertices.
En la primera línea la conección es
entre el vértice 0 y el vértice 1 con un
peso de 5
Graphs
Finalmente mostraremos las
conecciones que realizamos. Para
esto crearemos un loop For que
correrá el número de edges que
hicimos. Dentro de este loop
utilizaremos otro donde cada vez que
pase por una edge creado nos
devuelva en un print la conección
creada utilizando la función getId.
Para devolver lo que deseamos
utilizaremos la función getConnections.
Vemos en el resultado los vertices que
hemos relacionado.
Graphs
Topological Sorting

El problema de hacer bischochos. En este problema presentaremos en un
graph. Los ingredientes son:


Un huevo



Una copa de mezcla de biscochos



Una cucharada de aceite



¾ de copa de leche
Graphs
Para hacer pancakes debe calentar
la plancha, mezclar todos los
ingredientes y una cuchara la
mezcla sobre una plancha caliente.
Cuando los pancakes comienzan a
burbujear que darles la vuelta y
dejar cocer hasta que estén
doradas por la parte inferior. Antes
de comer los pancakes usted va a
querer calentar un poco de syrup.
Vea la imagen donde se muestra en
un graph el proceso de hacerlo.
Graphs
Lo que debemos tener presente es que la clave está en saber que es lo que tenémos
que hacer primero. Como hemos visto en la imagen anterior lo primero que debemos
hacer es calentar la plancha y añadiendo los ingredientes de la mezcla para
panqueques. Para ayudarnos a decidir el orden preciso en que debemos hacer cada
uno de los pasos necesarios para hacer nuestros pancakes acudimos a un algoritmo
grafh llamado topological sort.
Topological sort toma un graph acíclico dirigido y produce una ordenación lineal de
todos sus vértices de tal manera que si el gráfico G contiene un borde (V, W) a
continuación, el vértice V viene antes que el vértice w en la ordenación.
Graphs

5

D

2
4

E

8

8

3
6

1

F
1

2

C

5
2

1
7

A

7

B
Graphs

from

to

cost

1

2

10

1

3

15

1

6

5

2

3
4
6
5
4

5

5

6

13

13

10

7

6

5

5

10

4

7

3

7

3

7

7

3

4

6
7

5
15

1

10

2

Más contenido relacionado

Similar a Graphs

Relación de equivalencia
Relación de equivalencia Relación de equivalencia
Relación de equivalencia jorgemogollon11
 
Presentación diagramas de dispersion
Presentación diagramas de dispersionPresentación diagramas de dispersion
Presentación diagramas de dispersionJorge Magallanes
 
Capítulo 1 3ra parte (vectores).pdf
Capítulo 1 3ra parte  (vectores).pdfCapítulo 1 3ra parte  (vectores).pdf
Capítulo 1 3ra parte (vectores).pdfFlorenciaArroyo3
 
Elementos de una función cuadrática
Elementos de una función cuadráticaElementos de una función cuadrática
Elementos de una función cuadráticaprofejmarisel
 
Longitud de arco freddy
Longitud de arco freddyLongitud de arco freddy
Longitud de arco freddyalpsoct
 
Números Reales
Números RealesNúmeros Reales
Números Realesbibliomate
 
Metodo de la secante en scilab
Metodo de la secante en scilabMetodo de la secante en scilab
Metodo de la secante en scilabTensor
 
teoria de grafos matematica discreta uni
teoria de grafos matematica discreta uniteoria de grafos matematica discreta uni
teoria de grafos matematica discreta uniaudreartola
 
Introducción a la representación de gráficas y funciones
Introducción a la representación de gráficas y funcionesIntroducción a la representación de gráficas y funciones
Introducción a la representación de gráficas y funcionesAngel Navarro
 
Activity 1 3 de moivre theorem
Activity 1 3 de moivre theoremActivity 1 3 de moivre theorem
Activity 1 3 de moivre theoremEdgar Mata
 
REPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORA
REPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORAREPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORA
REPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORADavid Hernandez
 
PPT-Física-II-medio-S4.pptx
PPT-Física-II-medio-S4.pptxPPT-Física-II-medio-S4.pptx
PPT-Física-II-medio-S4.pptxNildaRecalde
 
Ordenación de vectores en c++
Ordenación de vectores en c++Ordenación de vectores en c++
Ordenación de vectores en c++kjjkfhjsfhjsfh
 
Vectores en dos dimensiones gabriel cornejo 4to b
Vectores en dos dimensiones gabriel cornejo 4to bVectores en dos dimensiones gabriel cornejo 4to b
Vectores en dos dimensiones gabriel cornejo 4to bgabuxitopcornejo
 

Similar a Graphs (20)

Relaciones y Grafos
Relaciones y GrafosRelaciones y Grafos
Relaciones y Grafos
 
Relación de equivalencia
Relación de equivalencia Relación de equivalencia
Relación de equivalencia
 
Presentación diagramas de dispersion
Presentación diagramas de dispersionPresentación diagramas de dispersion
Presentación diagramas de dispersion
 
4.Grafos.pdf
4.Grafos.pdf4.Grafos.pdf
4.Grafos.pdf
 
Comprobaci n-del
Comprobaci n-delComprobaci n-del
Comprobaci n-del
 
Capítulo 1 3ra parte (vectores).pdf
Capítulo 1 3ra parte  (vectores).pdfCapítulo 1 3ra parte  (vectores).pdf
Capítulo 1 3ra parte (vectores).pdf
 
Elementos de una función cuadrática
Elementos de una función cuadráticaElementos de una función cuadrática
Elementos de una función cuadrática
 
espacios vectoriales
espacios vectoriales espacios vectoriales
espacios vectoriales
 
Longitud de arco freddy
Longitud de arco freddyLongitud de arco freddy
Longitud de arco freddy
 
Relaciones y Grafos
Relaciones y GrafosRelaciones y Grafos
Relaciones y Grafos
 
Números Reales
Números RealesNúmeros Reales
Números Reales
 
Metodo de la secante en scilab
Metodo de la secante en scilabMetodo de la secante en scilab
Metodo de la secante en scilab
 
teoria de grafos matematica discreta uni
teoria de grafos matematica discreta uniteoria de grafos matematica discreta uni
teoria de grafos matematica discreta uni
 
Introducción a la representación de gráficas y funciones
Introducción a la representación de gráficas y funcionesIntroducción a la representación de gráficas y funciones
Introducción a la representación de gráficas y funciones
 
Activity 1 3 de moivre theorem
Activity 1 3 de moivre theoremActivity 1 3 de moivre theorem
Activity 1 3 de moivre theorem
 
REPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORA
REPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORAREPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORA
REPRESENTACION DE RELACIONES Y DIGRAFOS EN LA COMPUTADORA
 
PPT-Física-II-medio-S4.pptx
PPT-Física-II-medio-S4.pptxPPT-Física-II-medio-S4.pptx
PPT-Física-II-medio-S4.pptx
 
Ordenación de vectores en c++
Ordenación de vectores en c++Ordenación de vectores en c++
Ordenación de vectores en c++
 
Grafos.ppt
 Grafos.ppt Grafos.ppt
Grafos.ppt
 
Vectores en dos dimensiones gabriel cornejo 4to b
Vectores en dos dimensiones gabriel cornejo 4to bVectores en dos dimensiones gabriel cornejo 4to b
Vectores en dos dimensiones gabriel cornejo 4to b
 

Más de olivermartz

Más de olivermartz (7)

Hashing
HashingHashing
Hashing
 
Trees
TreesTrees
Trees
 
Cola
ColaCola
Cola
 
Ordenar
OrdenarOrdenar
Ordenar
 
Números factoriales
Números factorialesNúmeros factoriales
Números factoriales
 
RSA
RSARSA
RSA
 
Tower of hanoi
Tower of hanoiTower of hanoi
Tower of hanoi
 

Graphs

  • 1. Graphs ALGORITMOS Y ESTRUCTURAS DE DATOS Oliver Martinez N.E.200.90.5607
  • 2. Graphs Un graph tiene una estructura más general que la de un tree. Un tree es un tipo de graph si lo podemos ver así. Con un graph podemos representar cosas interesantes de nuestro mundo como un Sistema de autopistas, un sistema de vuelos de ciudad a ciudad como se conectan las computadora a un red, etc. Los humanos tenemos la capacidad de entender un mapa y sus relaciones, lamentablemente las computadoras no lo tiene. Tenemos que aprender a ver un mapa como un graph y asi podríamos hacer que la computadora hiciera cosas interesantes.
  • 3. Graphs Veamos un ejemplo de la información que un estudiante necesita para tener un grado asociado, necesita saber que cursos debe tomar y el orde a seguir para lograrlo. Un graph nos ayudaría a representarlo. Veamos la imagen.
  • 4. Graphs Vocabulario y definiciones.  Vertex: también conocido como nodo y es la parte fundamental del graph. También lo podemos encontrar con el nombre de “key”  Edge: es otra parte fundamental del graph. Este conecta dos vertices mostrando que hay una relación entre ellos. Los edges pueden ser en un sentido o en dos sentidos. Si todos los edges en un graph son solo de un solo sentido se le conocerá como directed graph o digraph  Weight: el peso(weight) es el costo que tiene la conexión de un vértice a otro. Por ejemplo en un graph tenemos los vertices que están conectados y que representan dos ciudades, el peso sería la distancia que hay entre las mismas.
  • 5. Graphs Con estas definiciones podemo representar un grahp. G = (V,E) G es reprentación de grahp, V es representación de los vertices y la E de los edges (la conecxión de los vertices)
  • 6. Graphs Analizemos la siguiente imagen. Tenemos 6 vertices del V0 al V5. Si tomamos un ejemplo vemos que del V3 al V4 hay un 7 el 7 sería el peso. Podemos representar también de la siguiente manera: E={(v0,v1,5),(v1,v2,4),(v2,v3,9),(v3,v4,7),(v4,v0,1), (v0,v5,2),(v5,v4,8),(v3,v5,3),(v5,v2,1)}
  • 7. Graphs Veamos dos definiciones más.  Path: es una secuencia de vertices que estan conectados entre sí. En nuestro ejemplo anterior el path de V3 a V1 sería {V3,V4,V0,V1}. El peso del path sería la suma de los edges {(v3,v4,7),(v4,v0,1),(v0,v1,5)}.  Cycle: es path que empieza y termina en el mismo vértice. Por ejemplo en la figura que analizamos enteriormente el path (V5,V2,V3,V5) es un ciclo ya que empieza en V5 y termina en V5. Un graph sin cilclos se le llama acyclic graph. Un graph directo sin ciclos se le llama directed acyclic graph o DAG.
  • 8. Graphs An Adjacency Matrix. Una matríz es una forma facil de representar un graph. Una matríz de dos dimensiones es una serie de filas y columnas que representan los vertices. El valor que se encuentra almacenado en la celda es la conexión que se tiene entre esos dos vertices, así mismo representa el peso. Cuando dos vertices estan conectados por un edge lo llamamos adyacente. Veamos la siguiente imagen. Una de las desventajas que podemos apreciar es que encontraremos muchos espacios vacios, a este tipo de matríz se le conoce como “sparse” o escaso.
  • 9. Graphs An Adjacency List. Una forma más eficiente de presentar un graph es una lista adyacente o de proximidad. En esta forma de representación mantenemos un listado de los vertices y cada vértice mantine un objero con la relación y el peso que tiene con otro vertices. En la imagen vemos que el objeto de relación con los vertices es utilizado como un diccionario donde el vértice es el key y los valores son el peso. En la primera posición vemos que el id = V0 y la relación es con V1 con peso de 5 y con V5 el peso es 2.
  • 10. Graphs Veamos la implementación en Python. Se crearán dos clases. I. Vertex Class: representará los vertices II. Graph Class: representará la lista de los vertices. La clase Vertex utiliza un diccionario de nombre connectedTo para llevar el seguimiento de los vertices que estan conectados, del peso y del edge. También utiliza addNeighbor que añade una conección con otro vértice. En la clase Graph se utiliza el addEdge que realiza la conección entre vertices. getVertex para saber el nombre del vértice.
  • 11. Graphs Primeramente inicializaremos la instancia de la clase Graph que en este ejemplo será g la instancia. Adicionalmente añadiremos los vertices al listado con un loop For utilizando la función addVertex. Será 6 vertices del 0 al 5.
  • 12. Graphs Una vez que tenemos creado nuestro listado de vertices agregaremos los edges, las relaciones que tendrán cada uno de los vertices agregados. Para esto utilizaremos la función addEdge donde nuestro primer valor será el vértice, el segundo valor será el Segundo vértice o el neighbor (el vértice conectado al primero) y el tercer valor será el peso que tendrá la relación entre los dos vertices. En la primera línea la conección es entre el vértice 0 y el vértice 1 con un peso de 5
  • 13. Graphs Finalmente mostraremos las conecciones que realizamos. Para esto crearemos un loop For que correrá el número de edges que hicimos. Dentro de este loop utilizaremos otro donde cada vez que pase por una edge creado nos devuelva en un print la conección creada utilizando la función getId. Para devolver lo que deseamos utilizaremos la función getConnections. Vemos en el resultado los vertices que hemos relacionado.
  • 14. Graphs Topological Sorting El problema de hacer bischochos. En este problema presentaremos en un graph. Los ingredientes son:  Un huevo  Una copa de mezcla de biscochos  Una cucharada de aceite  ¾ de copa de leche
  • 15. Graphs Para hacer pancakes debe calentar la plancha, mezclar todos los ingredientes y una cuchara la mezcla sobre una plancha caliente. Cuando los pancakes comienzan a burbujear que darles la vuelta y dejar cocer hasta que estén doradas por la parte inferior. Antes de comer los pancakes usted va a querer calentar un poco de syrup. Vea la imagen donde se muestra en un graph el proceso de hacerlo.
  • 16. Graphs Lo que debemos tener presente es que la clave está en saber que es lo que tenémos que hacer primero. Como hemos visto en la imagen anterior lo primero que debemos hacer es calentar la plancha y añadiendo los ingredientes de la mezcla para panqueques. Para ayudarnos a decidir el orden preciso en que debemos hacer cada uno de los pasos necesarios para hacer nuestros pancakes acudimos a un algoritmo grafh llamado topological sort. Topological sort toma un graph acíclico dirigido y produce una ordenación lineal de todos sus vértices de tal manera que si el gráfico G contiene un borde (V, W) a continuación, el vértice V viene antes que el vértice w en la ordenación.