SlideShare uma empresa Scribd logo
1 de 67
Baixar para ler offline
Grafos, algoritmos
fundamentales.
Autor: Bryan Aguilar
Docente: Ing. Ángel Vásquez
CAPÍTULO 16.
Programación 3: “Estructura de Archivos.”
1
Contenido:
1. Introducción.
2. Concepto de Grafo.
3. Ordenación topológica.
4. Implementación Java.
5. Matriz de Caminos: Algoritmo de
Warshall.
6. Implementación Java.
7. Caminos más cortos con un solo
origen: Algoritmo de Dijkstra.
8. Implementación Java.
9. Conclusiones
10. Referencias y enlace de códigos.
2
Introducción.
Existen numerosos problemas que se pueden modelar en términos de
grafos.
Por ejemplo: la planificación de las tareas que completan un proyecto,
encontrar las rutas de menor longitud entre dos puntos geográficos,
calcular el camino más rápido en un transporte, etc.
Se estudian en este capítulo el concepto de ordenación topológica, los
problemas del camino más corto, estos algoritmos han sido desarrollado
por grandes investigadores y en su honor se conocen por sus nombre es:
Dijkstra, Warshall, Prim, Kruscal, Ford-Fulkerson entre otros. 3
Grafos:
Los grafos son un conjunto de nodos y aristas conectadas entre sí. En
el ámbito de las ciencias de la computación es un tipo abstracto de
datos (TAD), que consiste en un conjunto de nodos (también llamados
vértices) y un conjunto de arcos (aristas) que establecen relaciones
entre los nodos.
Ejemplo:
4
Ordenación Topológica.
Es un sistema de ordenamiento de un grafo acíclico (no tiene ciclos).
Consiste en organizar de forma lineal/lista (ascendente/descendente),
una serie de vértices en desorden, primero se debe de empezar de un
"vértice padre" (sin predecesores), y después visitar a sus vecinos,
después de que haya visitado a todos sus vecinos, pasa a analizar otro
vértice, identifica sus vecinos, y así recursivamente, hasta que haya
visitado a todos los vértices.
“En pocas palabras no se visitará un vértice, hasta que todos sus
predecesores hayan sido visitados”.
5
Ejemplo: estructura de prerrequisito de 8 cursos.
T12
E11
C22
M21
R23 S32
S31 T41
Un arista cualquiera (r,s)
significa que el curso “r” debe
completarse antes de empezar
el curso s.
6
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
0
2
2
2
2
1
1
0
7
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
0
2
2
2
2
1
1
0
8
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
2
1
1
1
0
E11 - 9
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
2
1
1
1
E11 - 10
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
2
0
0
0
E11 - T12 - 11
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
2
0
0
0
E11 - T12 - 12
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
1
0
0
E11 - T12 - M21 - 13
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
1
0
0
E11 - T12 - M21 - 14
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
1
0
E11 - T12 - M21 - C22 - 15
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
2
1
0
E11 - T12 - M21 - C22 - 16
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
1
0
E11 - T12 - M21 - C22 - R23 17
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
2
1
0
E11 - T12 - M21 - C22 - R23 18
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
1
0
E11 - T12 - M21 - C22 - R23 - S31 - 19
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
1
0
E11 - T12 - M21 - C22 - R23 - S31 - 20
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
0
E11 - T12 - M21 - C22 - R23 - S31 - S32 - 21
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
0
E11 - T12 - M21 - C22 - R23 - S31 - S32 - 22
Encontrando el orden topológico.
T12
E11
C22
M21
R23 S32
S31 T41
E11 - T12 - M21 - C22 - R23 - S31 - S32 - T41 23
Ordenación Topológica.
Una ordenación topológica de estos cursos es cualquier secuencia
de cursos que cumple los requerimientos (prerrequisito). Entonces,
para un grafo dirigido acíclico no tiene por qué existir una única
ordenación topológica.
Ordenaciones topológicas:
E11 - T12 - M21 - C22 - R23 - S31 - S32 - T41
T12 - E11 - R23 - C22 - M21 - S31 - S32 - T41
24
Algoritmo de Ordenación Topológica.
★ Busca un vértice “V” que no contenga predecesores (Sin arcos de
entrada).
★ Este vértice “V” pasa a formar parte de la ordenación “T” (Cola).
★ Ya que el vértices sin predecesores, se añadió a “T”, este es eliminado del
grafo inicial (Todos los arcos que salen de “V” son eliminados). Y se
disminuye el grado de los vértices adyacentes.
★ Se repite el proceso.
★ Se toma otro vértices “W”, que no contenga arcos de entrada.
★ Se incorpora a la ordenación “T”. 25
Implementación. Algoritmo de Ordenación Topológica.
Representación de un grafo dirigido con una lista de adyacencia y una pila para la
ordenación de los elementos.
26
27
28
5
4
0
2 3
1
Ejecución. Algoritmo de Ordenación Topológica.
29
30
Complejidad de la ordenación topológica.
La complejidad de este algoritmo depende de la
representación del grafo.
★ Representación del grafo con listas de adyacencia,
es O(a+n), siendo “a” el número de arcos y “n” el
número de vértices.
★ Representación de un grafo con una matriz de
adyacencia, la complejidad es O(n2).
31
Matriz de Caminos: Algoritmo de Warshall.
★ Calcula la matriz de caminos P (también llamado cierre transitivo)
de un grafo G de n vértices, representado por su matriz de
adyacencia A.
★ Con frecuencia, se suele confundir este algoritmo con el de Floyd
Warshall (encuentra el camino mínimo de grafos dirigidos
ponderados).
★ El algoritmo de Warshall, trabaja sobre grafos dirigidos no
ponderados, y encuentra caminos entre un par de vértices.
32
Estrategia del algoritmo de Warshall.
★ Recibe una matriz de adyacencia de un grafo de “n” vértices y retorna una matriz
de caminos llamada “Cierre transitivo”.
★ El algoritmo consiste en definir a nivel lógico, una secuencia de matrices n-
cuadradas P0, P1, P2, P3 ... Pn; los elementos de cada una de las matrices Pk[i,j]
tienen el valor 0 si no hay camino y 1 si existe un camino del vértice i y al j.
★ A cada nodo del grafo, lo convierte en un “puente” para comunicar las aristas.
★ El nodo “puente” ayudará a encontrar caminos entre los vértices, e irá aumentando
los posibles caminos según se acaben los nodos.
★ La matriz P0 es la matriz de adyacencia y la matriz Pn es la matriz de caminos.
33
Ejemplo: matriz de caminos de un grafo.
a
d
c
b
Como el grafo no es ponderado,
colocamos un “1”, si hay un camino desde
un vértice a otro o un “0”, si no existe un
posible camino.
a b c d
a 0 1 0 0
b 0 0 0 1
c 0 0 0 0
d 1 0 1 0
34
Encontrando matriz de caminos. “M1”
a
d
c
b
a b c d
a 0 1 0 0
b 0 0 0 1
c 0 0 0 0
d 1 1 1 0
35
Encontrando matriz de caminos. “M2”
a
d
c
b
a b c d
a 0 1 0 1
b 0 0 0 1
c 0 0 0 0
d 1 1 1 1
Del proceso anterior.
36
Encontrando matriz de caminos. “M3”
a
d
c
b
a b c d
a 0 1 0 1
b 0 0 0 1
c 0 0 0 0
d 1 1 1 1
Del proceso anterior.
“c” no tiene conexión con ningún otro nodo,
Aún si lo eliminamos. Entonces M2 = M3.
Del
proceso
anterior.
37
Encontrando matriz de caminos. “M4”
a
d
c
b
a b c d
a 1 1 1 1
b 1 1 1 1
c 0 0 0 0
d 1 1 1 1
Del proceso anterior.
Del
proceso
anterior.
38
Matriz de caminos (matriz booleana).
a
d
c
b
a b c d
a 1 1 1 1
b 1 1 1 1
c 0 0 0 0
d 1 1 1 1
39
Implementación. Algoritmo de Warshall.
40
41
Función de Warshall. Establece relaciones entre vértices.
a b c d
a 0 1 0 0
b 0 0 0 1
c 0 0 0 0
d 1 0 1 0
41
Matriz de Adyacencia.
Complejidad del Algoritmo de Warshall.
★ La complejidad de este algoritmo es cúbica O(n3),
siendo n el número de vértices.
★ Lo que hace que el tiempo de ejecución crezca
rápidamente para grafos con, relativamente muchos
nodos.
42
Caminos más cortos con un solo origen:
Algoritmo de Dijkstra.
Uno de los problemas que se encuentran en la programación
y en la vida real, es encontrar el camino más corto entre dos
puntos (vértices). El algoritmo que se presenta a
continuación, tiene como requisito que el grafo a ser tratado
sea dirigido y que sus aristas sean valoradas (grafo
ponderado). De esta manera podremos encontrar la ruta
mínima para llegar de un vértice a otro.
43
Observación:
Este algoritmo encuentra el camino más corto desde un vértice al
resto de vértices de un grafo, es un algoritmo ávido (voraz). Además
debe cumplir que sus aristas no contengan pesos negativos.
Aplicación:
En el campo de la telemática, podemos resolver grafos con muchos
nodos, los cuales serían muy complicados de hacer sin dicho
algoritmo, encontrando así las rutas más cortas entre un origen y
todos los destinos en una red.
44
Ejemplo: camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
45
Camino más corto entre dos vértices (Etiquetado).
[ 8 , B](2)
Distancia acumulada
(Desde el inicio hasta
este nodo).
Desde que nodo procede.
Número de
iteraciones
realizadas.
46
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
47
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0 , -](0)
48
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1)
49
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1)
50
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1)
[ 4,C](2)
[ 5,C](2)
51
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1)
[ 4,C](2)
[ 5,C](2)
52
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1)
[ 4,C](2)
[ 5,C](2)
[ 3,B](3)
53
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1) [ 5,C](2)
[ 3,B](3)
54
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1) [ 5,C](2)
[ 3,B](3)
55
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1) [ 5,C](2)
[ 3,B](3)
[ 5,D](4)
56
Camino más corto entre dos vértices.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1) [ 5,C](2)
[ 3,B](3)
[ 5,D](4)
57
Camino más corto entre A y F.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1) [ 5,C](2)
[ 3,B](3)
[ 5,D](4)
Empezamos por el nodo “F”:
F
D
B
A
58
Camino más corto entre A y F.
A
D
B
C E
F
2
4
1
3
1
2
2
[ 0,-](0)
[ 2,A](1)
[ 1,A](1) [ 5,C](2)
[ 3,B](3)
[ 5,D](4)
Finalmente la ruta obtenida es:
A - B - D - F
La distancia obtenida es: 5
59
Implementación. Algoritmo de Dijkstra.
60
61
Algoritmo de Dijkstra.
62
Función que devuelve el costo mínimo.
63
Función que imprime los caminos a todos los vértices.
64
A
D
B
C E
F
2
4
1
3
1
2
2
Ejemplo de aplicación
desde el vértice A a
todos los vértices
(Caminos y Costos).
A partir de la matriz de adyacencia.
65
Conclusiones.
★ En el ordenamiento topológico se tiene relaciones de precedencia que se representan
con un grafo dirigido/acíclico, donde los vértices son tareas/prerrequisitos y la arista
representa que el inicio de la futura tarea depende de la finalización de la anterior.
★ El orden de un grafo con el método topológico implica obtener una planificación u
orden de prerrequisitos.
★ El algoritmo de Warshall devuelve una matriz de caminos, que indica todos los posibles
caminos de un vértice a otro (pasando por otros vértices), siendo un grafo dirigido.
★ El algoritmo de dijkstra es eficiente a la hora de encontrar un camino partiendo de un
nodo específico hacia cualquier nodo del grafo.
66
Bibliografía.
★ Luis Joyanes Aguilar, I. Z. (2008). Estructura de datos en Java.
España: MCGRAW - HILL/INTERAMERICANA DE ESPAÑA, S.A.U.
67
Link de los códigos implementados en Java.
★ https://github.com/UcuencaProgramacionIII/EjerciciosProgramacionC
apitulos16

Mais conteúdo relacionado

Semelhante a grafosalgoritmosfundamentales-170507070811.pdf

Semelhante a grafosalgoritmosfundamentales-170507070811.pdf (20)

Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
 
Ejercicios propuestos
Ejercicios propuestos Ejercicios propuestos
Ejercicios propuestos
 
Grafos
GrafosGrafos
Grafos
 
S03 - Planos de fase.pdf
S03 - Planos de fase.pdfS03 - Planos de fase.pdf
S03 - Planos de fase.pdf
 
Unidad iii
Unidad iiiUnidad iii
Unidad iii
 
Teoría de grafos
Teoría de grafosTeoría de grafos
Teoría de grafos
 
Matematicas discretas
Matematicas discretasMatematicas discretas
Matematicas discretas
 
IO 2(REDES).pdf
IO 2(REDES).pdfIO 2(REDES).pdf
IO 2(REDES).pdf
 
Algoritmos de Johnson en Python
Algoritmos de Johnson en PythonAlgoritmos de Johnson en Python
Algoritmos de Johnson en Python
 
Proyecto pibap
Proyecto pibapProyecto pibap
Proyecto pibap
 
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
 
Teoría de las redes
Teoría de las redesTeoría de las redes
Teoría de las redes
 
Unidad 3
Unidad  3Unidad  3
Unidad 3
 
Presentación_T3_JoséJaén (1).pptx
Presentación_T3_JoséJaén  (1).pptxPresentación_T3_JoséJaén  (1).pptx
Presentación_T3_JoséJaén (1).pptx
 
REDES.PPT
REDES.PPTREDES.PPT
REDES.PPT
 
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdfClaseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
 
Diapo teoria de grafos
Diapo teoria de grafosDiapo teoria de grafos
Diapo teoria de grafos
 
Rutamascorta1
Rutamascorta1Rutamascorta1
Rutamascorta1
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 

Último

Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinosDayanaCarolinaAP
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfTEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfXimenaFallaLecca1
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfannavarrom
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosMARGARITAMARIAFERNAN1
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesElianaCceresTorrico
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 

Último (20)

Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinos
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfTEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - Ejercicios
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 

grafosalgoritmosfundamentales-170507070811.pdf

  • 1. Grafos, algoritmos fundamentales. Autor: Bryan Aguilar Docente: Ing. Ángel Vásquez CAPÍTULO 16. Programación 3: “Estructura de Archivos.” 1
  • 2. Contenido: 1. Introducción. 2. Concepto de Grafo. 3. Ordenación topológica. 4. Implementación Java. 5. Matriz de Caminos: Algoritmo de Warshall. 6. Implementación Java. 7. Caminos más cortos con un solo origen: Algoritmo de Dijkstra. 8. Implementación Java. 9. Conclusiones 10. Referencias y enlace de códigos. 2
  • 3. Introducción. Existen numerosos problemas que se pueden modelar en términos de grafos. Por ejemplo: la planificación de las tareas que completan un proyecto, encontrar las rutas de menor longitud entre dos puntos geográficos, calcular el camino más rápido en un transporte, etc. Se estudian en este capítulo el concepto de ordenación topológica, los problemas del camino más corto, estos algoritmos han sido desarrollado por grandes investigadores y en su honor se conocen por sus nombre es: Dijkstra, Warshall, Prim, Kruscal, Ford-Fulkerson entre otros. 3
  • 4. Grafos: Los grafos son un conjunto de nodos y aristas conectadas entre sí. En el ámbito de las ciencias de la computación es un tipo abstracto de datos (TAD), que consiste en un conjunto de nodos (también llamados vértices) y un conjunto de arcos (aristas) que establecen relaciones entre los nodos. Ejemplo: 4
  • 5. Ordenación Topológica. Es un sistema de ordenamiento de un grafo acíclico (no tiene ciclos). Consiste en organizar de forma lineal/lista (ascendente/descendente), una serie de vértices en desorden, primero se debe de empezar de un "vértice padre" (sin predecesores), y después visitar a sus vecinos, después de que haya visitado a todos sus vecinos, pasa a analizar otro vértice, identifica sus vecinos, y así recursivamente, hasta que haya visitado a todos los vértices. “En pocas palabras no se visitará un vértice, hasta que todos sus predecesores hayan sido visitados”. 5
  • 6. Ejemplo: estructura de prerrequisito de 8 cursos. T12 E11 C22 M21 R23 S32 S31 T41 Un arista cualquiera (r,s) significa que el curso “r” debe completarse antes de empezar el curso s. 6
  • 7. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 0 2 2 2 2 1 1 0 7
  • 8. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 0 2 2 2 2 1 1 0 8
  • 9. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 2 1 1 1 0 E11 - 9
  • 10. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 2 1 1 1 E11 - 10
  • 11. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 2 0 0 0 E11 - T12 - 11
  • 12. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 2 0 0 0 E11 - T12 - 12
  • 13. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 1 0 0 E11 - T12 - M21 - 13
  • 14. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 1 0 0 E11 - T12 - M21 - 14
  • 15. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 1 0 E11 - T12 - M21 - C22 - 15
  • 16. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 2 1 0 E11 - T12 - M21 - C22 - 16
  • 17. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 1 0 E11 - T12 - M21 - C22 - R23 17
  • 18. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 2 1 0 E11 - T12 - M21 - C22 - R23 18
  • 19. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 1 0 E11 - T12 - M21 - C22 - R23 - S31 - 19
  • 20. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 1 0 E11 - T12 - M21 - C22 - R23 - S31 - 20
  • 21. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 0 E11 - T12 - M21 - C22 - R23 - S31 - S32 - 21
  • 22. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 0 E11 - T12 - M21 - C22 - R23 - S31 - S32 - 22
  • 23. Encontrando el orden topológico. T12 E11 C22 M21 R23 S32 S31 T41 E11 - T12 - M21 - C22 - R23 - S31 - S32 - T41 23
  • 24. Ordenación Topológica. Una ordenación topológica de estos cursos es cualquier secuencia de cursos que cumple los requerimientos (prerrequisito). Entonces, para un grafo dirigido acíclico no tiene por qué existir una única ordenación topológica. Ordenaciones topológicas: E11 - T12 - M21 - C22 - R23 - S31 - S32 - T41 T12 - E11 - R23 - C22 - M21 - S31 - S32 - T41 24
  • 25. Algoritmo de Ordenación Topológica. ★ Busca un vértice “V” que no contenga predecesores (Sin arcos de entrada). ★ Este vértice “V” pasa a formar parte de la ordenación “T” (Cola). ★ Ya que el vértices sin predecesores, se añadió a “T”, este es eliminado del grafo inicial (Todos los arcos que salen de “V” son eliminados). Y se disminuye el grado de los vértices adyacentes. ★ Se repite el proceso. ★ Se toma otro vértices “W”, que no contenga arcos de entrada. ★ Se incorpora a la ordenación “T”. 25
  • 26. Implementación. Algoritmo de Ordenación Topológica. Representación de un grafo dirigido con una lista de adyacencia y una pila para la ordenación de los elementos. 26
  • 27. 27
  • 28. 28
  • 29. 5 4 0 2 3 1 Ejecución. Algoritmo de Ordenación Topológica. 29
  • 30. 30
  • 31. Complejidad de la ordenación topológica. La complejidad de este algoritmo depende de la representación del grafo. ★ Representación del grafo con listas de adyacencia, es O(a+n), siendo “a” el número de arcos y “n” el número de vértices. ★ Representación de un grafo con una matriz de adyacencia, la complejidad es O(n2). 31
  • 32. Matriz de Caminos: Algoritmo de Warshall. ★ Calcula la matriz de caminos P (también llamado cierre transitivo) de un grafo G de n vértices, representado por su matriz de adyacencia A. ★ Con frecuencia, se suele confundir este algoritmo con el de Floyd Warshall (encuentra el camino mínimo de grafos dirigidos ponderados). ★ El algoritmo de Warshall, trabaja sobre grafos dirigidos no ponderados, y encuentra caminos entre un par de vértices. 32
  • 33. Estrategia del algoritmo de Warshall. ★ Recibe una matriz de adyacencia de un grafo de “n” vértices y retorna una matriz de caminos llamada “Cierre transitivo”. ★ El algoritmo consiste en definir a nivel lógico, una secuencia de matrices n- cuadradas P0, P1, P2, P3 ... Pn; los elementos de cada una de las matrices Pk[i,j] tienen el valor 0 si no hay camino y 1 si existe un camino del vértice i y al j. ★ A cada nodo del grafo, lo convierte en un “puente” para comunicar las aristas. ★ El nodo “puente” ayudará a encontrar caminos entre los vértices, e irá aumentando los posibles caminos según se acaben los nodos. ★ La matriz P0 es la matriz de adyacencia y la matriz Pn es la matriz de caminos. 33
  • 34. Ejemplo: matriz de caminos de un grafo. a d c b Como el grafo no es ponderado, colocamos un “1”, si hay un camino desde un vértice a otro o un “0”, si no existe un posible camino. a b c d a 0 1 0 0 b 0 0 0 1 c 0 0 0 0 d 1 0 1 0 34
  • 35. Encontrando matriz de caminos. “M1” a d c b a b c d a 0 1 0 0 b 0 0 0 1 c 0 0 0 0 d 1 1 1 0 35
  • 36. Encontrando matriz de caminos. “M2” a d c b a b c d a 0 1 0 1 b 0 0 0 1 c 0 0 0 0 d 1 1 1 1 Del proceso anterior. 36
  • 37. Encontrando matriz de caminos. “M3” a d c b a b c d a 0 1 0 1 b 0 0 0 1 c 0 0 0 0 d 1 1 1 1 Del proceso anterior. “c” no tiene conexión con ningún otro nodo, Aún si lo eliminamos. Entonces M2 = M3. Del proceso anterior. 37
  • 38. Encontrando matriz de caminos. “M4” a d c b a b c d a 1 1 1 1 b 1 1 1 1 c 0 0 0 0 d 1 1 1 1 Del proceso anterior. Del proceso anterior. 38
  • 39. Matriz de caminos (matriz booleana). a d c b a b c d a 1 1 1 1 b 1 1 1 1 c 0 0 0 0 d 1 1 1 1 39
  • 41. 41 Función de Warshall. Establece relaciones entre vértices. a b c d a 0 1 0 0 b 0 0 0 1 c 0 0 0 0 d 1 0 1 0 41 Matriz de Adyacencia.
  • 42. Complejidad del Algoritmo de Warshall. ★ La complejidad de este algoritmo es cúbica O(n3), siendo n el número de vértices. ★ Lo que hace que el tiempo de ejecución crezca rápidamente para grafos con, relativamente muchos nodos. 42
  • 43. Caminos más cortos con un solo origen: Algoritmo de Dijkstra. Uno de los problemas que se encuentran en la programación y en la vida real, es encontrar el camino más corto entre dos puntos (vértices). El algoritmo que se presenta a continuación, tiene como requisito que el grafo a ser tratado sea dirigido y que sus aristas sean valoradas (grafo ponderado). De esta manera podremos encontrar la ruta mínima para llegar de un vértice a otro. 43
  • 44. Observación: Este algoritmo encuentra el camino más corto desde un vértice al resto de vértices de un grafo, es un algoritmo ávido (voraz). Además debe cumplir que sus aristas no contengan pesos negativos. Aplicación: En el campo de la telemática, podemos resolver grafos con muchos nodos, los cuales serían muy complicados de hacer sin dicho algoritmo, encontrando así las rutas más cortas entre un origen y todos los destinos en una red. 44
  • 45. Ejemplo: camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 45
  • 46. Camino más corto entre dos vértices (Etiquetado). [ 8 , B](2) Distancia acumulada (Desde el inicio hasta este nodo). Desde que nodo procede. Número de iteraciones realizadas. 46
  • 47. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 47
  • 48. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0 , -](0) 48
  • 49. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) 49
  • 50. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) 50
  • 51. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 4,C](2) [ 5,C](2) 51
  • 52. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 4,C](2) [ 5,C](2) 52
  • 53. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 4,C](2) [ 5,C](2) [ 3,B](3) 53
  • 54. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 5,C](2) [ 3,B](3) 54
  • 55. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 5,C](2) [ 3,B](3) 55
  • 56. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 5,C](2) [ 3,B](3) [ 5,D](4) 56
  • 57. Camino más corto entre dos vértices. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 5,C](2) [ 3,B](3) [ 5,D](4) 57
  • 58. Camino más corto entre A y F. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 5,C](2) [ 3,B](3) [ 5,D](4) Empezamos por el nodo “F”: F D B A 58
  • 59. Camino más corto entre A y F. A D B C E F 2 4 1 3 1 2 2 [ 0,-](0) [ 2,A](1) [ 1,A](1) [ 5,C](2) [ 3,B](3) [ 5,D](4) Finalmente la ruta obtenida es: A - B - D - F La distancia obtenida es: 5 59
  • 61. 61
  • 63. Función que devuelve el costo mínimo. 63
  • 64. Función que imprime los caminos a todos los vértices. 64 A D B C E F 2 4 1 3 1 2 2 Ejemplo de aplicación desde el vértice A a todos los vértices (Caminos y Costos).
  • 65. A partir de la matriz de adyacencia. 65
  • 66. Conclusiones. ★ En el ordenamiento topológico se tiene relaciones de precedencia que se representan con un grafo dirigido/acíclico, donde los vértices son tareas/prerrequisitos y la arista representa que el inicio de la futura tarea depende de la finalización de la anterior. ★ El orden de un grafo con el método topológico implica obtener una planificación u orden de prerrequisitos. ★ El algoritmo de Warshall devuelve una matriz de caminos, que indica todos los posibles caminos de un vértice a otro (pasando por otros vértices), siendo un grafo dirigido. ★ El algoritmo de dijkstra es eficiente a la hora de encontrar un camino partiendo de un nodo específico hacia cualquier nodo del grafo. 66
  • 67. Bibliografía. ★ Luis Joyanes Aguilar, I. Z. (2008). Estructura de datos en Java. España: MCGRAW - HILL/INTERAMERICANA DE ESPAÑA, S.A.U. 67 Link de los códigos implementados en Java. ★ https://github.com/UcuencaProgramacionIII/EjerciciosProgramacionC apitulos16