SlideShare una empresa de Scribd logo
1 de 40
Un grafo es una estructura de datos no lineal que sirve para representar
relaciones arbitrarias (no necesariamente jerárquicas) entre objetos de
datos
Un grafo G= (V, R) compuesta de:
 Un conjunto V de vértices (nodos)
 Un conjunto R de ramas (arcos), conexiones entre los vértices de V
Ejemplo de grafo
V= {a, b, c, d, e, f}
R= {(a,d), (a,e), (a,f), (b,c),…, (e,a), (f,b)}
INTRODUCCIÓN
TERMINOLOGÍA
 Vértices: Son los objetos representados por
punto dentro del grafo
 Aristas: son las líneas que unen dos vértices
 Aristas Adyacentes: dos aristas son
adyacentes si convergen sobre el mismo
vértice
 Aristas Múltiples o Paralelas: dos aristas son
múltiples o paralelas si tienen los mismos
vértices en común o incidente sobre los
mismos vértices
 Lazo: es una arista cuyos extremos inciden
sobre el mismo vértice
TERMINOLOGÍA
 Arista Incidente : Una arista es incidente a
un vértice si ésta lo une a otro vértice.
 Vértice Aislado: Es un vértice de grado cero
 Vértice Pendiente: Es aquel grafo que contiene
sólo una arista, es decir tiene grado 1
 Cruce: Son intersecciones de las aristas en
puntos diferentes a los vértices
A B
a
La arista a, es
Incidente en los
Vértices A Y B .
4
1
2 3
b
a
c
41
2 3
b
a
c
d e
f
El grado o valencia de un vértice es el
número de aristas incidentes al vértice.
GRADO O VALENCIA
 Vecindad de un vértice
El grado del vértice x es el número de
vecinos que tiene
 Lema del apretón de manos
La suma de los grados de un grafo es igual al doble del número de
aristas
El Lema del apretón de manos también es cierto en los grafos dirigidos. Para
ello hay que distinguir para cada nodo entre grados de entrada y de salida.
Por lo tanto, el Lema se expresa del siguiente modo:
GRADO O VALENCIA
 Grafos dirigidos
Se distingue entre grado de entrada 𝑔−
(𝑥) ,
como el número de aristas que tiene al
vértice x como vértice final, y grado de
salida 𝑔+
(𝑥), como el número de aristas que
tiene al vértice x como vértice inicial, de
forma que:
 Matriz de adyacencias: se asocia
cada fila y cada columna a cada
nodo del grafo, siendo los
elementos de la matriz la
relación entre los mismos,
tomando los valores de 1 si
existe la arista y 0 en caso
contrario.
 Lista de adyacencias: se asocia
a cada nodo del grafo una lista
que contenga todos aquellos
nodos que sean adyacentes a él.
FORMAS DE REPRESENTACIÓN
Existen diferentes implementaciones del tipo grafo: con
una matriz de adyacencias (forma acotada) y con listas y
multilistas de adyacencia (no acotadas).
2. Grafo Completo
El grafo completo de orden
n, que se denota por 𝐾 𝑛 ,
es un grafo con n vértices,
donde cada vértice es
adyacente a todos los
demás.
1. Grafo Nulo
El grafo nulo de orden n,
que se denota por 𝑁 𝑛 , es
un grafo que tiene n
vértices y ninguna arista.
3. Grafo Regular
Un grafo es regular (de
grado d) si todos sus
vértices tienen el mismo
grado (d).
TIPOS DE GRAFOS
Grafo No
completo
TIPOS DE GRAFOS
4. Grafo Bipartito
Un grafo G = (V, E) es bipartito si su conjunto de vértices V admite una partición
en dos subconjuntos (disjuntos), 𝑉1 y 𝑉2 , de modo que cada arista de G sea
incidente con un vértice de 𝑉1 y con un vértice de 𝑉2 (no hay adyacencias entre
vértices de una misma parte). Si cada vértice de 𝑉1 es adyacente a todos los
vértices de 𝑉2 , el grafo G se denomina bipartito y completo.
( 𝐺 = 𝐾 𝑚, 𝑛 ) ; 𝑑 𝑜 𝑛𝑑 𝑒
𝑚 = 𝑉1 𝑦 𝑛 = 𝑉2
TIPOS DE GRAFOS (DIRECCIÓN)
1. Grafos no dirigidos
Un grafo en el cual todas las aristas son no dirigidas
se denominará "grafo no dirigido". El grafo no
dirigido es aquel que no tiene sentido su arista. Un
grafo no dirigido G representa elementos, y una
arista (v, w) representa una incompatibilidad entre
los elementos v y w.
2. Grafos dirigidos o Dígrafos
Un grafo dirigido o dígrafo es un tipo de grafo en el
cual el conjunto de los vértices tiene una dirección
definida1 , a diferencia del grafo generalizado, en el
cual la dirección puede estar especificada o no.
V = {C, D, E, F, H}
E= {(E,H), (H,E), (E,C), (C,D), (D,F)}
VARIANTES DEL CONCEPTO DE GRAFO (DÍGRAFO)
2. Multígrafo
Si en un ‘grafo’ se permite la
existencia de más de una arista entre
un mismo par de vértices (arista
múltiple), entonces se denomina
multígrafo
1. Grafo Simple
Es un grafo o dígrafo que no tiene
bucles y que no es multígrafo
Arcos
múltiples o
paralelos
VARIANTES DEL CONCEPTO DE GRAFO (DÍGRAFO)
3. Pseudografo
Si además se permite que un
elemento esté relacionado consigo
mismo (lazo), entonces se llama
pseudografo
4. Grafo Ponderado
Un grafo G cuyas aristas tienen
asociados valores reales, llamados
pesos, se denomina grafo ponderado.
Lazo o
Bucle
Valor
Asignado
 Exploración en anchura (BFS)
Breadth First Search (BFS): A partir del nodo origen, recorrer
por niveles de distancia a ese nodo.
1. Fijar nodo origen del recorrido (arbitrario)
EXPLORACIÓN (RECORRIDO) DE GRAFOS
 Exploración en anchura (BFS)
2. Acceder a todos los nodos que están a distancia 1, es decir,
directamente relacionados con el origen (existe un arco que
los une).
EXPLORACIÓN (RECORRIDO) DE GRAFOS
 Exploración en anchura (BFS)
3. Acceder a todos los nodos que están a distancia 2, es decir,
directamente relacionados con los que está a distancia 1
EXPLORACIÓN (RECORRIDO) DE GRAFOS
 Exploración en anchura (BFS)
El resultado del recorrido es una árbol, que incluye los nodos
visitados y los arcos utilizados para acceder a ellos.
EXPLORACIÓN (RECORRIDO) DE GRAFOS
 Exploración en profundidad (DFS)
Depth First Search (DFS): A partir del nodo origen, avanzar a
otro nodo no visitado y seguir el recorrido, de la misma manera,
a partir de él.
EXPLORACIÓN (RECORRIDO) DE GRAFOS
 Exploración en profundidad (DFS)
EXPLORACIÓN (RECORRIDO) DE GRAFOS
 Exploración en profundidad (DFS)
El resultado del recorrido es una árbol, que incluye los nodos
visitados y los arcos utilizados para acceder a ellos.
EXPLORACIÓN (RECORRIDO) DE GRAFOS
Algoritmos de búsqueda del camino mínimo
1. Algoritmo Breadth-first search
2. Algoritmo de Dijkstra
3. Algoritmo de Bellman-Ford
4. Algoritmo de Floyd-Warshall
ALGORITMOS DE BÚSQUEDA
Algoritmos de búsqueda del árbol de recubrimiento mínimo
1. Algoritmo de Prim
Los algoritmos de búsqueda en grafos nacen por la necesidad de crear un mecanismo
de navegación autónoma, bien sea de robots, coches, o personajes en un videojuego.
Un algoritmo de búsqueda tratará, de encontrar un camino optimo entre dos nodos
como por ejemplo un camino que minimice el coste de desplazamiento, o el número
de pasos a realizar.
La expansión de la búsqueda se realiza en forma de árbol. Partiendo del nodo inicial,
se extenderá la búsqueda a sus nodos vecinos, de cada uno de estos nodos vecinos, a
sus respectivos nodos vecinos, y así hasta que uno de los nodos a los que se expande
la búsqueda es el nodo objetivo.
1. Algoritmo Breadth-first search
 Objetivo:
 Ejemplo de uso:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
Encontrar el camino mínimo desde un nodo inicial a todos los
demás nodos de un grafo sin tener en cuenta los pesos de los
nodos
Saber el número de escalas
que hay que hacer desde un
aeropuerto para llegar a otro
1. Algoritmo Breadth-first search
 Pseudocódigo
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
método breadth_first_search(grafo, origen)
inicializar
crear cola Q
agregar origen a cola Q
mientras Q no esté vacia:
sacar elemento v de la cola Q
marcar como visitado v
para cada nodo adyacente w a v en el grafo:
si w no ha sido visitado y no está en la cola:
actualizar el contador de w (ahora es v+1)
actualizar el predecesor de w (ahora es v)
insertar w dentro de la cola Q:
1. Algoritmo Breadth-first search
 Ejemplo:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
2. Algoritmo de Dijkstra
El algoritmo de Dijkstra, también
llamado algoritmo de caminos mínimos, es
un algoritmo para la determinación del camino más
corto dado un vértice origen al resto de los vértices en
un grafo con pesos en cada arista. Su nombre se refiere
a Edsger Dijkstra, quien lo describió por primera vez en
1959.
La idea subyacente en este algoritmo consiste
en ir explorando todos los caminos más cortos que
parten del vértice origen y que llevan a todos los demás
vértices; cuando se obtiene el camino más corto desde
el vértice origen, al resto de vértices que componen el
grafo, el algoritmo se detiene. El algoritmo es una
especialización de la búsqueda de costo uniforme, y
como tal, no funciona en grafos con aristas de coste
negativo (al elegir siempre el nodo con distancia menor,
pueden quedar excluidos de la búsqueda nodos que en
próximas iteraciones bajarían el costo general del
camino al pasar por una arista con costo negativo).
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
2. Algoritmo de Dijkstra
 Objetivo:
 Ejemplo de uso:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
Encontrar el camino mínimo desde un nodo inicial a todos los
demás nodos de un grafo con pesos positivos
Averiguar la ruta más corta
entre dos poblaciones a
través de una red de
carreteras
2. Algoritmo de Dijkstra
 Pseudocódigo
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
método dijkstra(grafo, origen)
inicializar
crear cola de prioridades Q ordenada de menor a mayor peso
agregar origen a cola Q
mientras Q no esté vacia:
sacar elemento v de la cola Q
marcar como visitado v
para cada nodo adyacente w a v en el grafo:
si (peso de w) > (peso de v + peso entre v y w):
actualizar el peso de w (disminuye)
actualizar el predecesor de w (ahora es v)
si w no ha sido visitado:
si w está en la cola Q:
actualizar prioridad de w
y si w no está en la cola:
insertar w dentro de la cola Q:
2. Algoritmo de Dijkstra
 Ejemplo:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
3. Algoritmo de Bellman-Ford
El algoritmo de Bellman-Ford (algoritmo de Bell-End-Ford) genera el camino
más corto en un grafo dirigido ponderado (en el que el peso de alguna de
las aristas puede ser negativo). El algoritmo de Dijkstra resuelve este mismo
problema en un tiempo menor, pero requiere que los pesos de las aristas no sean
negativos, salvo que el grafo sea dirigido y sin ciclos. Por lo que el Algoritmo
Bellman-Ford normalmente se utiliza cuando hay aristas con peso negativo. Este
algoritmo fue desarrollado por Richard Bellman, Samuel End y Lester Ford.
Según Robert Sedgewick, “Los pesos negativos no son simplemente una
curiosidad matemática; […] surgen de una forma natural en la reducción a problemas
de caminos más cortos”, y son un ejemplo de una reducción del problema del camino
hamiltoniano que es NP-completo hasta el problema de caminos más cortos con pesos
generales. Si un grafo contiene un ciclo de coste total negativo entonces este grafo
no tiene solución. El algoritmo es capaz de detectar este caso.
Si el grafo contiene un ciclo de coste negativo, el algoritmo lo detectará,
pero no encontrará el camino más corto que no repite ningún vértice. La complejidad
de este problema es al menos la del problema del camino más largo de complejidad
NP-Completo.
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
3. Algoritmo de Bellman-Ford
 Objetivo:
 Ejemplo de uso:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
Encontrar el camino mínimo desde un nodo inicial a todos los
demás nodos de un grafo con pesos positivos y negativos
Protocolos de
encaminamiento de
información
3. Algoritmo de Bellman-Ford
 Pseudocódigo
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
método bellman_ford(grafo, origen)
inicializar
crear cola Q
agregar origen a cola Q
mientras Q no esté vacia:
sacar elemento v de la cola Q
si hay bucle negativo
“bucle negativo”
y si no, para cada nodo adyacente w a v en el grafo:
si (peso de w) > (peso de v + peso entre v y w):
actualizar el peso de w (disminuye)
actualizar el predecesor de w (ahora es v)
si w no está en la cola:
insertar w dentro de la cola Q:
3. Algoritmo de Bellman-Ford
 Ejemplo:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
4. Algoritmo de Floyd-Warshall
 Objetivo:
 Ejemplo de uso:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
Encontrar el camino mínimo entre todos los pares de nodos de
un grafo
Averiguar la ruta más
corta entre TODAS las
poblaciones a través
de una red de
carreteras
4. Algoritmo de Floyd-Warshall
 Pseudocódigo
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
método floyd-warshall(grafo)
M[i, j] := ∞ ∀i != j
M[i, j] := p(i, j) ∀(i, j) ∈ en el grafo
M[i, i] := 0 ∀i
for k := 1 to n do
for i := 1 to n do
for j := 1 to n do
si M[i, j] > M[i, k] + M[k, j]
M[i, j] = M[i, k] + M[k, j]
for i := 1 to n do
si M[i, i] < 0
“bucle negativo”
4. Algoritmo de Floyd-Warshall
 Ejemplo:
ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
ALGORITMOS DE BÚSQUEDA DEL ÁRBOL DE
RECUBRIMIENTO MÍNIMO
1. Algoritmo de Prim
 Objetivo:
 Ejemplo de uso:
Encontrar el árbol de recubrimiento mínimo en un grafo conexo,
no dirigido
Trazar la mínima
cantidad de cable
posible para cubrir las
necesidades de una
nueva urbanización
Un grafo es conexo si cada
par de vértices está
conectado por un camino
1. Algoritmo de Prim
 Pseudocódigo
ALGORITMOS DE BÚSQUEDA DEL ÁRBOL DE
RECUBRIMIENTO MÍNIMO
método prim(grafo, origen)
1- marcar un nodo dentro del grafo, el cual será el nodo de partida
2- seleccionar la arista de menor valor que salga del nodo marcado
3- marcar el nodo al que llega la arista seleccionada en el paso
previo
4- repetir los pasos 2 y 3 de tal modo que se vayan obteniendo
aristas entre nodos marcados y otros que no lo están
5- el algoritmo termina cuando están todos los nodos marcados
1. Algoritmo de Prim
 Ejemplo:
ALGORITMOS DE BÚSQUEDA DEL ÁRBOL DE
RECUBRIMIENTO MÍNIMO

Más contenido relacionado

La actualidad más candente

Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamientodeff000001
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Algoritmos de kruskal y prim
Algoritmos de kruskal y primAlgoritmos de kruskal y prim
Algoritmos de kruskal y primfher969
 
Grafos eulerianos y hamiltonianos
Grafos eulerianos y hamiltonianosGrafos eulerianos y hamiltonianos
Grafos eulerianos y hamiltonianosAron Boza
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOSOsirysRock
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCristopher Morales Ruiz
 
Lista de adyacencia
Lista de adyacenciaLista de adyacencia
Lista de adyacenciaFrank Doria
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directatavo_3315_
 
Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.nayis2010
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafosTERE FERNÁNDEZ
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoLutzo Guzmán
 

La actualidad más candente (20)

Grafo bipartito
Grafo bipartitoGrafo bipartito
Grafo bipartito
 
Grafos
GrafosGrafos
Grafos
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Algoritmos de kruskal y prim
Algoritmos de kruskal y primAlgoritmos de kruskal y prim
Algoritmos de kruskal y prim
 
Algoritmo de Dijkstra
Algoritmo de DijkstraAlgoritmo de Dijkstra
Algoritmo de Dijkstra
 
Grafos eulerianos y hamiltonianos
Grafos eulerianos y hamiltonianosGrafos eulerianos y hamiltonianos
Grafos eulerianos y hamiltonianos
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOS
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
 
332 presentacion grafos
332 presentacion grafos332 presentacion grafos
332 presentacion grafos
 
Lista de adyacencia
Lista de adyacenciaLista de adyacencia
Lista de adyacencia
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Arboles multicamino
Arboles  multicaminoArboles  multicamino
Arboles multicamino
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
 
Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafos
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 

Similar a Grafos

Trabajo estructura de_datos2
Trabajo estructura de_datos2Trabajo estructura de_datos2
Trabajo estructura de_datos2vicmz
 
Trabajo estructura de_datos_subir
Trabajo estructura de_datos_subirTrabajo estructura de_datos_subir
Trabajo estructura de_datos_subirvicmz
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datosvictormagana
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datosvicmz
 
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3matediscretas
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafosozilricardo
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafosozilricardo
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]ozilricardo
 
Teoría de Grafos en sage
 Teoría de Grafos en sage Teoría de Grafos en sage
Teoría de Grafos en sagekennethmath
 
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...BasterLyEsupian
 
Grafoscuestionario
GrafoscuestionarioGrafoscuestionario
GrafoscuestionarioUTCH
 
Fundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de EducagratisFundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de EducagratisEducagratis
 

Similar a Grafos (20)

Grafos
GrafosGrafos
Grafos
 
Teoría de grafos
Teoría de grafosTeoría de grafos
Teoría de grafos
 
Grafos y caminos
Grafos y caminosGrafos y caminos
Grafos y caminos
 
Trabajo estructura de_datos2
Trabajo estructura de_datos2Trabajo estructura de_datos2
Trabajo estructura de_datos2
 
Trabajo estructura de_datos_subir
Trabajo estructura de_datos_subirTrabajo estructura de_datos_subir
Trabajo estructura de_datos_subir
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datos
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datos
 
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
 
Grafos
GrafosGrafos
Grafos
 
19 Grafos 1
19 Grafos 119 Grafos 1
19 Grafos 1
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]
 
Teoría de Grafos en sage
 Teoría de Grafos en sage Teoría de Grafos en sage
Teoría de Grafos en sage
 
Grafos en sage
Grafos en sageGrafos en sage
Grafos en sage
 
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
 
Grafoscuestionario
GrafoscuestionarioGrafoscuestionario
Grafoscuestionario
 
Fundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de EducagratisFundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de Educagratis
 

Más de Jesus Palomino

Redes neuronales artificiales
Redes neuronales artificialesRedes neuronales artificiales
Redes neuronales artificialesJesus Palomino
 
Sistema operativo-de-red
Sistema operativo-de-redSistema operativo-de-red
Sistema operativo-de-redJesus Palomino
 
Nos conocosca-los-contendientes
Nos conocosca-los-contendientesNos conocosca-los-contendientes
Nos conocosca-los-contendientesJesus Palomino
 
El camino al paraiso del ancho de banda
El camino al paraiso del ancho de bandaEl camino al paraiso del ancho de banda
El camino al paraiso del ancho de bandaJesus Palomino
 
China (El gigante Asiatico)
China (El gigante Asiatico)China (El gigante Asiatico)
China (El gigante Asiatico)Jesus Palomino
 
Fuentes de generacionl
Fuentes de generacionlFuentes de generacionl
Fuentes de generacionlJesus Palomino
 
Circuitos ca (corriente alterna)
Circuitos ca (corriente alterna)Circuitos ca (corriente alterna)
Circuitos ca (corriente alterna)Jesus Palomino
 
Operadores diferenciales en coodenadas esféricas
Operadores diferenciales en coodenadas esféricasOperadores diferenciales en coodenadas esféricas
Operadores diferenciales en coodenadas esféricasJesus Palomino
 

Más de Jesus Palomino (15)

Osi tpc-modelos
Osi tpc-modelosOsi tpc-modelos
Osi tpc-modelos
 
Redes neuronales artificiales
Redes neuronales artificialesRedes neuronales artificiales
Redes neuronales artificiales
 
Sistema operativo-de-red
Sistema operativo-de-redSistema operativo-de-red
Sistema operativo-de-red
 
Nos conocosca-los-contendientes
Nos conocosca-los-contendientesNos conocosca-los-contendientes
Nos conocosca-los-contendientes
 
El camino al paraiso del ancho de banda
El camino al paraiso del ancho de bandaEl camino al paraiso del ancho de banda
El camino al paraiso del ancho de banda
 
China (El gigante Asiatico)
China (El gigante Asiatico)China (El gigante Asiatico)
China (El gigante Asiatico)
 
maquinas electricas
maquinas electricasmaquinas electricas
maquinas electricas
 
Transformadores
TransformadoresTransformadores
Transformadores
 
Fuentes de generacionl
Fuentes de generacionlFuentes de generacionl
Fuentes de generacionl
 
codigos Html y css
codigos Html y csscodigos Html y css
codigos Html y css
 
Circuitos ca (corriente alterna)
Circuitos ca (corriente alterna)Circuitos ca (corriente alterna)
Circuitos ca (corriente alterna)
 
Inductancia
InductanciaInductancia
Inductancia
 
Operadores diferenciales en coodenadas esféricas
Operadores diferenciales en coodenadas esféricasOperadores diferenciales en coodenadas esféricas
Operadores diferenciales en coodenadas esféricas
 
Independencia
IndependenciaIndependencia
Independencia
 
Cibernetica
CiberneticaCibernetica
Cibernetica
 

Grafos

  • 1.
  • 2. Un grafo es una estructura de datos no lineal que sirve para representar relaciones arbitrarias (no necesariamente jerárquicas) entre objetos de datos Un grafo G= (V, R) compuesta de:  Un conjunto V de vértices (nodos)  Un conjunto R de ramas (arcos), conexiones entre los vértices de V Ejemplo de grafo V= {a, b, c, d, e, f} R= {(a,d), (a,e), (a,f), (b,c),…, (e,a), (f,b)} INTRODUCCIÓN
  • 3. TERMINOLOGÍA  Vértices: Son los objetos representados por punto dentro del grafo  Aristas: son las líneas que unen dos vértices  Aristas Adyacentes: dos aristas son adyacentes si convergen sobre el mismo vértice  Aristas Múltiples o Paralelas: dos aristas son múltiples o paralelas si tienen los mismos vértices en común o incidente sobre los mismos vértices  Lazo: es una arista cuyos extremos inciden sobre el mismo vértice
  • 4. TERMINOLOGÍA  Arista Incidente : Una arista es incidente a un vértice si ésta lo une a otro vértice.  Vértice Aislado: Es un vértice de grado cero  Vértice Pendiente: Es aquel grafo que contiene sólo una arista, es decir tiene grado 1  Cruce: Son intersecciones de las aristas en puntos diferentes a los vértices A B a La arista a, es Incidente en los Vértices A Y B . 4 1 2 3 b a c 41 2 3 b a c d e f
  • 5. El grado o valencia de un vértice es el número de aristas incidentes al vértice. GRADO O VALENCIA  Vecindad de un vértice El grado del vértice x es el número de vecinos que tiene  Lema del apretón de manos La suma de los grados de un grafo es igual al doble del número de aristas
  • 6. El Lema del apretón de manos también es cierto en los grafos dirigidos. Para ello hay que distinguir para cada nodo entre grados de entrada y de salida. Por lo tanto, el Lema se expresa del siguiente modo: GRADO O VALENCIA  Grafos dirigidos Se distingue entre grado de entrada 𝑔− (𝑥) , como el número de aristas que tiene al vértice x como vértice final, y grado de salida 𝑔+ (𝑥), como el número de aristas que tiene al vértice x como vértice inicial, de forma que:
  • 7.  Matriz de adyacencias: se asocia cada fila y cada columna a cada nodo del grafo, siendo los elementos de la matriz la relación entre los mismos, tomando los valores de 1 si existe la arista y 0 en caso contrario.  Lista de adyacencias: se asocia a cada nodo del grafo una lista que contenga todos aquellos nodos que sean adyacentes a él. FORMAS DE REPRESENTACIÓN Existen diferentes implementaciones del tipo grafo: con una matriz de adyacencias (forma acotada) y con listas y multilistas de adyacencia (no acotadas).
  • 8.
  • 9. 2. Grafo Completo El grafo completo de orden n, que se denota por 𝐾 𝑛 , es un grafo con n vértices, donde cada vértice es adyacente a todos los demás. 1. Grafo Nulo El grafo nulo de orden n, que se denota por 𝑁 𝑛 , es un grafo que tiene n vértices y ninguna arista. 3. Grafo Regular Un grafo es regular (de grado d) si todos sus vértices tienen el mismo grado (d). TIPOS DE GRAFOS Grafo No completo
  • 10. TIPOS DE GRAFOS 4. Grafo Bipartito Un grafo G = (V, E) es bipartito si su conjunto de vértices V admite una partición en dos subconjuntos (disjuntos), 𝑉1 y 𝑉2 , de modo que cada arista de G sea incidente con un vértice de 𝑉1 y con un vértice de 𝑉2 (no hay adyacencias entre vértices de una misma parte). Si cada vértice de 𝑉1 es adyacente a todos los vértices de 𝑉2 , el grafo G se denomina bipartito y completo. ( 𝐺 = 𝐾 𝑚, 𝑛 ) ; 𝑑 𝑜 𝑛𝑑 𝑒 𝑚 = 𝑉1 𝑦 𝑛 = 𝑉2
  • 11. TIPOS DE GRAFOS (DIRECCIÓN) 1. Grafos no dirigidos Un grafo en el cual todas las aristas son no dirigidas se denominará "grafo no dirigido". El grafo no dirigido es aquel que no tiene sentido su arista. Un grafo no dirigido G representa elementos, y una arista (v, w) representa una incompatibilidad entre los elementos v y w. 2. Grafos dirigidos o Dígrafos Un grafo dirigido o dígrafo es un tipo de grafo en el cual el conjunto de los vértices tiene una dirección definida1 , a diferencia del grafo generalizado, en el cual la dirección puede estar especificada o no. V = {C, D, E, F, H} E= {(E,H), (H,E), (E,C), (C,D), (D,F)}
  • 12. VARIANTES DEL CONCEPTO DE GRAFO (DÍGRAFO) 2. Multígrafo Si en un ‘grafo’ se permite la existencia de más de una arista entre un mismo par de vértices (arista múltiple), entonces se denomina multígrafo 1. Grafo Simple Es un grafo o dígrafo que no tiene bucles y que no es multígrafo Arcos múltiples o paralelos
  • 13. VARIANTES DEL CONCEPTO DE GRAFO (DÍGRAFO) 3. Pseudografo Si además se permite que un elemento esté relacionado consigo mismo (lazo), entonces se llama pseudografo 4. Grafo Ponderado Un grafo G cuyas aristas tienen asociados valores reales, llamados pesos, se denomina grafo ponderado. Lazo o Bucle Valor Asignado
  • 14.
  • 15.  Exploración en anchura (BFS) Breadth First Search (BFS): A partir del nodo origen, recorrer por niveles de distancia a ese nodo. 1. Fijar nodo origen del recorrido (arbitrario) EXPLORACIÓN (RECORRIDO) DE GRAFOS
  • 16.  Exploración en anchura (BFS) 2. Acceder a todos los nodos que están a distancia 1, es decir, directamente relacionados con el origen (existe un arco que los une). EXPLORACIÓN (RECORRIDO) DE GRAFOS
  • 17.  Exploración en anchura (BFS) 3. Acceder a todos los nodos que están a distancia 2, es decir, directamente relacionados con los que está a distancia 1 EXPLORACIÓN (RECORRIDO) DE GRAFOS
  • 18.  Exploración en anchura (BFS) El resultado del recorrido es una árbol, que incluye los nodos visitados y los arcos utilizados para acceder a ellos. EXPLORACIÓN (RECORRIDO) DE GRAFOS
  • 19.  Exploración en profundidad (DFS) Depth First Search (DFS): A partir del nodo origen, avanzar a otro nodo no visitado y seguir el recorrido, de la misma manera, a partir de él. EXPLORACIÓN (RECORRIDO) DE GRAFOS
  • 20.  Exploración en profundidad (DFS) EXPLORACIÓN (RECORRIDO) DE GRAFOS
  • 21.  Exploración en profundidad (DFS) El resultado del recorrido es una árbol, que incluye los nodos visitados y los arcos utilizados para acceder a ellos. EXPLORACIÓN (RECORRIDO) DE GRAFOS
  • 22.
  • 23. Algoritmos de búsqueda del camino mínimo 1. Algoritmo Breadth-first search 2. Algoritmo de Dijkstra 3. Algoritmo de Bellman-Ford 4. Algoritmo de Floyd-Warshall ALGORITMOS DE BÚSQUEDA Algoritmos de búsqueda del árbol de recubrimiento mínimo 1. Algoritmo de Prim Los algoritmos de búsqueda en grafos nacen por la necesidad de crear un mecanismo de navegación autónoma, bien sea de robots, coches, o personajes en un videojuego. Un algoritmo de búsqueda tratará, de encontrar un camino optimo entre dos nodos como por ejemplo un camino que minimice el coste de desplazamiento, o el número de pasos a realizar. La expansión de la búsqueda se realiza en forma de árbol. Partiendo del nodo inicial, se extenderá la búsqueda a sus nodos vecinos, de cada uno de estos nodos vecinos, a sus respectivos nodos vecinos, y así hasta que uno de los nodos a los que se expande la búsqueda es el nodo objetivo.
  • 24. 1. Algoritmo Breadth-first search  Objetivo:  Ejemplo de uso: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO Encontrar el camino mínimo desde un nodo inicial a todos los demás nodos de un grafo sin tener en cuenta los pesos de los nodos Saber el número de escalas que hay que hacer desde un aeropuerto para llegar a otro
  • 25. 1. Algoritmo Breadth-first search  Pseudocódigo ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO método breadth_first_search(grafo, origen) inicializar crear cola Q agregar origen a cola Q mientras Q no esté vacia: sacar elemento v de la cola Q marcar como visitado v para cada nodo adyacente w a v en el grafo: si w no ha sido visitado y no está en la cola: actualizar el contador de w (ahora es v+1) actualizar el predecesor de w (ahora es v) insertar w dentro de la cola Q:
  • 26. 1. Algoritmo Breadth-first search  Ejemplo: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
  • 27. 2. Algoritmo de Dijkstra El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos, es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de los vértices en un grafo con pesos en cada arista. Su nombre se refiere a Edsger Dijkstra, quien lo describió por primera vez en 1959. La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo se detiene. El algoritmo es una especialización de la búsqueda de costo uniforme, y como tal, no funciona en grafos con aristas de coste negativo (al elegir siempre el nodo con distancia menor, pueden quedar excluidos de la búsqueda nodos que en próximas iteraciones bajarían el costo general del camino al pasar por una arista con costo negativo). ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
  • 28. 2. Algoritmo de Dijkstra  Objetivo:  Ejemplo de uso: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO Encontrar el camino mínimo desde un nodo inicial a todos los demás nodos de un grafo con pesos positivos Averiguar la ruta más corta entre dos poblaciones a través de una red de carreteras
  • 29. 2. Algoritmo de Dijkstra  Pseudocódigo ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO método dijkstra(grafo, origen) inicializar crear cola de prioridades Q ordenada de menor a mayor peso agregar origen a cola Q mientras Q no esté vacia: sacar elemento v de la cola Q marcar como visitado v para cada nodo adyacente w a v en el grafo: si (peso de w) > (peso de v + peso entre v y w): actualizar el peso de w (disminuye) actualizar el predecesor de w (ahora es v) si w no ha sido visitado: si w está en la cola Q: actualizar prioridad de w y si w no está en la cola: insertar w dentro de la cola Q:
  • 30. 2. Algoritmo de Dijkstra  Ejemplo: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
  • 31. 3. Algoritmo de Bellman-Ford El algoritmo de Bellman-Ford (algoritmo de Bell-End-Ford) genera el camino más corto en un grafo dirigido ponderado (en el que el peso de alguna de las aristas puede ser negativo). El algoritmo de Dijkstra resuelve este mismo problema en un tiempo menor, pero requiere que los pesos de las aristas no sean negativos, salvo que el grafo sea dirigido y sin ciclos. Por lo que el Algoritmo Bellman-Ford normalmente se utiliza cuando hay aristas con peso negativo. Este algoritmo fue desarrollado por Richard Bellman, Samuel End y Lester Ford. Según Robert Sedgewick, “Los pesos negativos no son simplemente una curiosidad matemática; […] surgen de una forma natural en la reducción a problemas de caminos más cortos”, y son un ejemplo de una reducción del problema del camino hamiltoniano que es NP-completo hasta el problema de caminos más cortos con pesos generales. Si un grafo contiene un ciclo de coste total negativo entonces este grafo no tiene solución. El algoritmo es capaz de detectar este caso. Si el grafo contiene un ciclo de coste negativo, el algoritmo lo detectará, pero no encontrará el camino más corto que no repite ningún vértice. La complejidad de este problema es al menos la del problema del camino más largo de complejidad NP-Completo. ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
  • 32. 3. Algoritmo de Bellman-Ford  Objetivo:  Ejemplo de uso: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO Encontrar el camino mínimo desde un nodo inicial a todos los demás nodos de un grafo con pesos positivos y negativos Protocolos de encaminamiento de información
  • 33. 3. Algoritmo de Bellman-Ford  Pseudocódigo ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO método bellman_ford(grafo, origen) inicializar crear cola Q agregar origen a cola Q mientras Q no esté vacia: sacar elemento v de la cola Q si hay bucle negativo “bucle negativo” y si no, para cada nodo adyacente w a v en el grafo: si (peso de w) > (peso de v + peso entre v y w): actualizar el peso de w (disminuye) actualizar el predecesor de w (ahora es v) si w no está en la cola: insertar w dentro de la cola Q:
  • 34. 3. Algoritmo de Bellman-Ford  Ejemplo: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
  • 35. 4. Algoritmo de Floyd-Warshall  Objetivo:  Ejemplo de uso: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO Encontrar el camino mínimo entre todos los pares de nodos de un grafo Averiguar la ruta más corta entre TODAS las poblaciones a través de una red de carreteras
  • 36. 4. Algoritmo de Floyd-Warshall  Pseudocódigo ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO método floyd-warshall(grafo) M[i, j] := ∞ ∀i != j M[i, j] := p(i, j) ∀(i, j) ∈ en el grafo M[i, i] := 0 ∀i for k := 1 to n do for i := 1 to n do for j := 1 to n do si M[i, j] > M[i, k] + M[k, j] M[i, j] = M[i, k] + M[k, j] for i := 1 to n do si M[i, i] < 0 “bucle negativo”
  • 37. 4. Algoritmo de Floyd-Warshall  Ejemplo: ALGORITMOS DE BÚSQUEDA DEL CAMINO MÍNIMO
  • 38. ALGORITMOS DE BÚSQUEDA DEL ÁRBOL DE RECUBRIMIENTO MÍNIMO 1. Algoritmo de Prim  Objetivo:  Ejemplo de uso: Encontrar el árbol de recubrimiento mínimo en un grafo conexo, no dirigido Trazar la mínima cantidad de cable posible para cubrir las necesidades de una nueva urbanización Un grafo es conexo si cada par de vértices está conectado por un camino
  • 39. 1. Algoritmo de Prim  Pseudocódigo ALGORITMOS DE BÚSQUEDA DEL ÁRBOL DE RECUBRIMIENTO MÍNIMO método prim(grafo, origen) 1- marcar un nodo dentro del grafo, el cual será el nodo de partida 2- seleccionar la arista de menor valor que salga del nodo marcado 3- marcar el nodo al que llega la arista seleccionada en el paso previo 4- repetir los pasos 2 y 3 de tal modo que se vayan obteniendo aristas entre nodos marcados y otros que no lo están 5- el algoritmo termina cuando están todos los nodos marcados
  • 40. 1. Algoritmo de Prim  Ejemplo: ALGORITMOS DE BÚSQUEDA DEL ÁRBOL DE RECUBRIMIENTO MÍNIMO