grafos - tc arg · ejemplo: redes sociales en facebook, dos usuarios, pueden o no ser amigos. esta...
TRANSCRIPT
![Page 1: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/1.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafos
Luis Santiago Re1
1Universidad Tecnologica Nacional - FRSF
Training Camp 2020
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 2: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/2.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 3: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/3.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 4: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/4.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Definicion
Grafo [Wikipedia]
Un grafo es un conjunto de objetos llamados vertices o nodos,unidos por enlaces llamados aristas o arcos.
Figure: Grafo dirigido Figure: Grafo no dirigido
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 5: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/5.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Definicion
Grafo [Wikipedia]
Un grafo es un conjunto de objetos llamados vertices o nodos,unidos por enlaces llamados aristas o arcos.
Figure: Grafo dirigido Figure: Grafo no dirigido
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 6: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/6.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Ejemplos
Ejemplo: redes sociales
En Facebook, dos usuarios, pueden o no ser amigos. Estarelacion es mutua, es decir que puede pensarse como un grafono dirigido, en donde cada usuario es un nodo y cadarelacion de amistad es una arista.
En Instagram, un usuario puede seguir a otro, sin necesidadque ese otro usuario lo siga a uno. Es decir que puedepensarse como un grafo dirigido, en donde cada usuario esun nodo y cada relacion seguidor-seguido es una arista.
En general, dada cualquier situacion en la que tenemos pares decosas relacionadas, probablemente sirve verla como un grafo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 7: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/7.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Representacion
Matriz de adyacencia
La matriz de adyacencia es una matriz de n × n donde n es lacantidad de nodos del grafo, que en la posicion (i , j) tiene un 1 (otrue) si hay una arista entre los nodos i y j , o 0 (o false) en casocontrario. Uso de memoria: O(n2)
A B C D
A 0 1 1 1B 1 0 1 0C 1 1 0 0D 1 0 0 0
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 8: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/8.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Representacion
Matriz de adyacencia
La matriz de adyacencia es una matriz de n × n donde n es lacantidad de nodos del grafo, que en la posicion (i , j) tiene un 1 (otrue) si hay una arista entre los nodos i y j , o 0 (o false) en casocontrario. Uso de memoria: O(n2)
A B C D
A 0 1 1 1B 1 0 1 0C 1 1 0 0D 1 0 0 0
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 9: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/9.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Implementacion matriz de adyacencia
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 int n,m;
6 cin>>n>>m;
7 int graph[n][n] = { 0 };
8 for(int i=0;i<m;i++){
9 int a,b;
10 cin>>a>>b;
11 graph[a][b] = 1;
12 graph[b][a] = 1;
13 }
14 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 10: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/10.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Representacion
Listas de adyacencia
La lista de adyacencia es un vector de vectores de enteros, que enel i-esimo vector tiene el numero j si hay una arista entre los nodosi y j . Uso de memoria: O(m), donde m es la cantidad de aristas.
A : {B,C,D}B : {A,C}C : {A,B}D : {A}
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 11: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/11.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Representacion
Listas de adyacencia
La lista de adyacencia es un vector de vectores de enteros, que enel i-esimo vector tiene el numero j si hay una arista entre los nodosi y j . Uso de memoria: O(m), donde m es la cantidad de aristas.
A : {B,C,D}B : {A,C}C : {A,B}D : {A}
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 12: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/12.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Implementaciones lista de adyacencia
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 vector<int> graph[10000];
6 // voy a tener n<=10000
7 int n,m;
8
9 int main(){
10 cin>>n>>m;
11 for(int i=0;i<m;i++){
12 int a,b;
13 cin>>a>>b;
14 graph[a].push_back(b);
15 graph[b].push_back(a);
16 }
17 }
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 vector<vector<int > > graph;
6 int n,m;
7
8 int main(){
9 cin>>n>>m;
10 graph.resize(n);
11 for(int i=0;i<m;i++){
12 int a,b;
13 cin>>a>>b;
14 graph[a].push_back(b);
15 graph[b].push_back(a);
16 }
17 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 13: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/13.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Implementaciones lista de adyacencia
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 vector<int> graph[10000];
6 // voy a tener n<=10000
7 int n,m;
8
9 int main(){
10 cin>>n>>m;
11 for(int i=0;i<m;i++){
12 int a,b;
13 cin>>a>>b;
14 graph[a].push_back(b);
15 graph[b].push_back(a);
16 }
17 }
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 vector<vector<int > > graph;
6 int n,m;
7
8 int main(){
9 cin>>n>>m;
10 graph.resize(n);
11 for(int i=0;i<m;i++){
12 int a,b;
13 cin>>a>>b;
14 graph[a].push_back(b);
15 graph[b].push_back(a);
16 }
17 }Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 14: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/14.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 15: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/15.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Algunas definiciones
Definiciones: vecino y grado
Dada una arista que conecta dos vertices u y v , decimos que u esvecino de v (y que v es vecino de u). Ademas, a la cantidad devecinos de u se le llama el grado de u.
Definicion: distancia
Definimos la distancia de u a v como el menor n tal que hay uncamino de largo n de u a v .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 16: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/16.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 17: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/17.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
BFS (siglas de breadth-first-search o ”busqueda en anchura”) esun algoritmo para recorrer grafos, que a su vez sirve para calcularla distancia mınima desde un nodo v a cada uno de los otros.
Inicialmente se procesa v , que tiene distancia a sı mismo 0,por lo que seteamos dv = 0. Ademas es el unico a distancia 0.
Los vecinos de v tienen sı o sı distancia 1, por lo queseteamos dy = 1 para todo y vecino de v . Ademas, estos sonlos unicos a distancia 1.
Ahora tomamos los nodos a distancia 1, y para cada uno nosfijamos en sus vecinos cuya distancia aun no calculamos.Estos son los nodos a distancia 2.
Ası sucesivamente, para saber cuales son los nodos a distanciak + 1, tomamos los vecinos de los nodos a distancia k que nohayan sido visitados aun.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 18: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/18.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 19: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/19.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 20: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/20.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 21: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/21.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 22: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/22.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 23: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/23.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 24: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/24.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Implementacion
1 vector<int> bfs(vector<vector<int>>& graph , int v) {
2 vector<int> d(graph.size(), -1);
3 queue<int> q;
4 d[v] = 0;
5 q.push(v);
6 while(!q.empty()) { // mientras haya nodos por procesar
7 int x = q.front();
8 q.pop();
9 for(int y: graph[x]) { // para cada y vecino de x
10 if(d[y] == -1) { // si y no fue encolado aun
11 d[y] = d[x] + 1;
12 q.push(y);
13 }
14 }
15 } // d contiene las distancias desde v
16 return d; // (o -1 para los nodos inalcanzables)
17 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 25: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/25.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
BFS
Analisis
Cada nodo lo procesamos una sola vez, porque cuando loagregamos a la queue, tambien inicializamos su distancia, porlo que no volvera a ser agregado.
Como cada nodo es procesado una sola vez, entonces cadaarista es procesada una sola vez (o una vez en cada sentidopara no-dirigidos).
Entonces, la complejidad de BFS es O(m), donde m es lacantidad de aristas.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 26: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/26.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 27: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/27.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Otra manera de recorrer un grafo es con DFS (depth-first-search o”busqueda en profundidad”). Funciona ası:
Arrancamos de cierto nodo y lo marcamos como visitado.
Luego, evaluamos sus vecinos de a uno, y cada vez queencontramos uno que no este marcado como visitado,seguimos procesando a partir de el. Este procedimiento esrecursivo, por lo que se puede implementar ası.
Cuando no quedan vecinos por visitar salgo para atras (vuelvoen la recursion).
Cuando no se conoce el maximo del stack de recursion queusa nuestro juez, no es mala idea implementar el DFS connuestro propio stack aunque sea mas codigo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 28: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/28.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 29: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/29.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 30: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/30.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 31: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/31.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 32: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/32.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 33: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/33.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 34: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/34.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 35: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/35.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 36: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/36.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 37: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/37.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 38: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/38.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 39: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/39.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 40: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/40.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 41: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/41.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 42: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/42.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 43: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/43.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 44: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/44.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 45: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/45.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 46: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/46.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 47: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/47.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 48: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/48.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 49: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/49.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 50: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/50.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Ejemplo
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 51: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/51.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Implementacion iterativa
1 void DFS(int node) {
2 stack<int> s;
3 s.push(node);
4 while(s.size()) { // mientras haya nodos por procesar
5 int x = s.top();
6 visitado[x] = true;
7 s.pop();
8 for(int y: graph[x]) { // para cada y vecino de x
9 if(!visitado[y]) { // si y no fue visitado
10 s.push(y);
11 }
12 }
13 }
14 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 52: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/52.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Implementacion recursiva
1 void DFS(int node) {
2 visitado[node] = true;
3 for(int y: graph[node]) { // para cada y vecino de node
4 if(!visitado[y]) { // si y no fue visitado
5 DFS(y);
6 }
7 }
8 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 53: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/53.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DFS
Analisis
Un analisis similar al que hicimos para BFS concluye que DFStambien es O(m).
BFS y DFS son similares: ambos procesan todos los nodosalcanzables desde cierto nodo, pero lo hacen en distinto orden.
Muchos problemas salen con ambas tecnicas, por lo quepodemos usar la que nos quede mas comodo.
Algunos problemas solo se resuelven con una de ellas:
BFS: distancias mınimas.DFS: algunos problemas que tienen que ver con la estructuradel grafo, como por ejemplo encontrar puentes y puntos dearticulacion.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 54: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/54.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 55: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/55.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 56: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/56.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Definicion: conexion
Decimos que dos vertices u y v estan conectados si hay uncamino (secuencia de aristas con vertice en comun) que los une.
Para todo grafo no-dirigido, podemos particionar el conjuntode nodos en varios subconjuntos, tales que dos nodos estanconectados si y solo si pertenecen al mismo subconjunto.
Estos subconjuntos se denominan componentes conexas delgrafo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 57: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/57.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Ejemplo
Las componentes conexas son {1, 4} y {0, 2, 3, 5}
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 58: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/58.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Problema
Problema: Rumor
Vova necesita expandir un rumor sobre los N habitantes de unaciudad. Hay M pares de habitantes que son amigos, y si unhabitante empieza a divulgar un rumor, sus amigos tambien lo vana divulgar, y los amigos de sus amigos tambien, y asısucesivamente. Sin embargo ninguno de ellos es amigo de Vova, sino que cada uno le pide cierta cantidad de monedas para empezara divulgar su rumor. Formalmente, el i-esimo habitante le pide cimonedas. Cual es la mınima cantidad de monedas que tiene quegastar Vova?
Link: https://codeforces.com/problemset/problem/893/C
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 59: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/59.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Solucion
Enunciado resumido
Dado un grafo no dirigido, donde cada nodo tiene peso, encontrarel nodo con menor peso de cada componente conexa.
1 // aca declarar variables globales necesarias
2 int dfs(int nodo) {
3 used[nodo] = true;
4 int ret = v[nodo];
5 for(int y: graph[node]) if(!used[y]) ret = min(ret, dfs(y));
6 return ret;
7 }
8 int main() {
9 // aca declarar variables necesarias y leer datos
10 for(int i = 0; i < n; i++) if(!used[i]) ans += dfs(i);
11 cout << ans << "\n";
12 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 60: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/60.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Solucion
Enunciado resumido
Dado un grafo no dirigido, donde cada nodo tiene peso, encontrarel nodo con menor peso de cada componente conexa.
1 // aca declarar variables globales necesarias
2 int dfs(int nodo) {
3 used[nodo] = true;
4 int ret = v[nodo];
5 for(int y: graph[node]) if(!used[y]) ret = min(ret, dfs(y));
6 return ret;
7 }
8 int main() {
9 // aca declarar variables necesarias y leer datos
10 for(int i = 0; i < n; i++) if(!used[i]) ans += dfs(i);
11 cout << ans << "\n";
12 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 61: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/61.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Floodfill
Se puede usar la matriz como grafo implıcito
Problema
Dado un tablero donde un 0 representa el color negro y un 1 elcolor blanco. Contar la cantidad de componentes blancas, ycuantas celdas tiene cada una.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 62: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/62.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Floodfill
Se puede usar la matriz como grafo implıcito
Problema
Dado un tablero donde un 0 representa el color negro y un 1 elcolor blanco. Contar la cantidad de componentes blancas, ycuantas celdas tiene cada una.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 63: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/63.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Floodfill
Se puede usar la matriz como grafo implıcito
Problema
Dado un tablero donde un 0 representa el color negro y un 1 elcolor blanco. Contar la cantidad de componentes blancas, ycuantas celdas tiene cada una.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 64: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/64.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
Floodfill
Se puede usar la matriz como grafo implıcito
Problema
Dado un tablero donde un 0 representa el color negro y un 1 elcolor blanco. Contar la cantidad de componentes blancas, ycuantas celdas tiene cada una.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 65: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/65.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Componentes conexas
DFS en tablero
1 int n, m; // dimensiones del tablero
2 int dr[4] = {0,0,1,-1}, dc[4] = {1,-1,0,0}; // para implementar
movimientos
3 vector<vector<int>> table, used;
4
5 int floodfill(int r,int c) {
6 if(r < 0 || c < 0 || r >= n || c >= m || used[r][c] || table[r
][c] == 0)
7 return;
8 used[r][c] = true;
9 int ret = 1;
10 for(int i = 0; i < 4; i++) ret += floodfill(r + dr[i], c + dc[
i]);
11 return ret;
12 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 66: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/66.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 67: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/67.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Definicion: Bipartito
Un grafo se dice bipartito si le podemos pintar los vertices usandodos colores, de forma que toda arista conecte a dos vertices dedistinto color.
Un grafo es bipartito si y solo si no tiene ciclosimpares.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 68: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/68.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Definicion: Bipartito
Un grafo se dice bipartito si le podemos pintar los vertices usandodos colores, de forma que toda arista conecte a dos vertices dedistinto color. Un grafo es bipartito si y solo si no tiene ciclosimpares.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 69: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/69.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Definicion: Bipartito
Un grafo se dice bipartito si le podemos pintar los vertices usandodos colores, de forma que toda arista conecte a dos vertices dedistinto color. Un grafo es bipartito si y solo si no tiene ciclosimpares.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 70: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/70.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Definicion: Bipartito
Un grafo se dice bipartito si le podemos pintar los vertices usandodos colores, de forma que toda arista conecte a dos vertices dedistinto color. Un grafo es bipartito si y solo si no tiene ciclosimpares.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 71: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/71.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Definicion: Bipartito
Un grafo se dice bipartito si le podemos pintar los vertices usandodos colores, de forma que toda arista conecte a dos vertices dedistinto color. Un grafo es bipartito si y solo si no tiene ciclosimpares.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 72: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/72.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Definicion: Bipartito
Un grafo se dice bipartito si le podemos pintar los vertices usandodos colores, de forma que toda arista conecte a dos vertices dedistinto color. Un grafo es bipartito si y solo si no tiene ciclosimpares.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 73: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/73.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Problema
Problema: See World
En un acuario hay N orcas, y solamente tiene 2 tanques donde lasorcas pueden vivir. Cada orca habla algun idioma, y un par deorcas pueden hablar entre si, si ambas hablan el mismo idioma.Ademas, si dos orcas que no pueden comunicarse viven en elmismo tanque, se van a pelear. ¿Es posible dividir las orcas en lostanques para que no se peleen?
Link: https://www.urionlinejudge.com.br/judge/en/
problems/view/1955
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 74: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/74.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Solucion
Enunciado resumido
Dado un grafo no dirigido, determinar si se puede dividir los nodosen dos grupos, tal que exista una arista entre todo par de nodosdel mismo grupo.
Parece un problema difıcil, donde hay que probar sobre lossubconjuntos. N <= 103
Otro grafo
Si pensamos el grafo que es el complemento del definido arriba¿A que se traduce el enunciado? A verificar que este grafo seabipartito
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 75: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/75.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Solucion
Enunciado resumido
Dado un grafo no dirigido, determinar si se puede dividir los nodosen dos grupos, tal que exista una arista entre todo par de nodosdel mismo grupo.
Parece un problema difıcil, donde hay que probar sobre lossubconjuntos.
N <= 103
Otro grafo
Si pensamos el grafo que es el complemento del definido arriba¿A que se traduce el enunciado? A verificar que este grafo seabipartito
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 76: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/76.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Solucion
Enunciado resumido
Dado un grafo no dirigido, determinar si se puede dividir los nodosen dos grupos, tal que exista una arista entre todo par de nodosdel mismo grupo.
Parece un problema difıcil, donde hay que probar sobre lossubconjuntos. N <= 103
Otro grafo
Si pensamos el grafo que es el complemento del definido arriba¿A que se traduce el enunciado? A verificar que este grafo seabipartito
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 77: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/77.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Solucion
Enunciado resumido
Dado un grafo no dirigido, determinar si se puede dividir los nodosen dos grupos, tal que exista una arista entre todo par de nodosdel mismo grupo.
Parece un problema difıcil, donde hay que probar sobre lossubconjuntos. N <= 103
Otro grafo
Si pensamos el grafo que es el complemento del definido arriba¿A que se traduce el enunciado?
A verificar que este grafo seabipartito
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 78: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/78.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Solucion
Enunciado resumido
Dado un grafo no dirigido, determinar si se puede dividir los nodosen dos grupos, tal que exista una arista entre todo par de nodosdel mismo grupo.
Parece un problema difıcil, donde hay que probar sobre lossubconjuntos. N <= 103
Otro grafo
Si pensamos el grafo que es el complemento del definido arriba¿A que se traduce el enunciado? A verificar que este grafo seabipartito
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 79: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/79.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Grafo bipartito
Solucion
1 // aca declarar variables globales necesarias
2 bool dfs(int node, int clr) {
3 color[node] = clr;
4 for(int i = 0; i < n; i++) if(matAdy[node][i] == 1) {
5 if(color[i] == color[node]) return false;
6 if(color[i] == -1 && !dfs(i, 1-clr)) return
false;
7 }
8 return true;
9 }
10 int main() {
11 // aca declarar variables necesarias y leer datos
12 bool ok = true;
13 forn(i,n) if(color[i] == -1 && !dfs(i,0)) ok = false;
14 // aca mostrar la respuesta como pide el problema
15 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 80: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/80.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DAG - Orden topologico
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 81: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/81.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DAG - Orden topologico
Definicion: orden topologico
Dado un grafo dirigido, un orden topologico es un ordenamientode los nodos de modo que para cada arista x → y , x viene antesque y en el orden.
Este grafo tiene dos ordenestopologicos:
a,b,c,d,e
a,c,b,d,e
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 82: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/82.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DAG - Orden topologico
Definicion: orden topologico
Dado un grafo dirigido, un orden topologico es un ordenamientode los nodos de modo que para cada arista x → y , x viene antesque y en el orden.
Este grafo tiene dos ordenestopologicos:
a,b,c,d,e
a,c,b,d,e
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 83: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/83.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DAG - Orden topologico
No todo grafo tiene orden topologico.
Concretamente, un grafo tiene orden topologico si y solo si notiene ciclo (camino desde algun nodo a sı mismo). A estosgrafos se los llama DAG (directed-acyclic-graph o ”grafodirigido sin ciclos”).
Si el grafo no tiene ciclo, podemos encontrar el ordentopologico de la siguiente forma:
Obtenemos el grado de entrada de cada nodo y metemos losde grado 0 en una cola.Mientras que la cola no este vacıa, tomamos el nodo del frentey ”lo eliminamos” del grafo, actualizando el grado de entradade sus vecinos y metiendo a la cola los que pasen a tener grado0.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 84: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/84.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
DAG - Orden topologico
Implementacion
1 vector<int> topSort(vector<vector<int>> g, vector<int> inGrade)
2 {
3 int n = inGrade.size();
4 vector<int> topSorted;
5 queue<int> q;
6 for(int i = 0; i < n; i++) if(inGrade[i] == 0) q.push(i);
7 while(!q.empty()) {
8 int node = q.front(); q.pop();
9 topSorted.push_back(node);
10 for(int y : g[node]) if(--inGrade[y] == 0) q.push(y);
11 }
12 //Si hay ciclos retornar un vector vacio
13 if(topSorted.size() < n) topSorted.clear();
14 return topSorted;
15 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 85: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/85.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 86: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/86.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Ejes con peso
Hasta ahora en los grafos que vimos la distancia entre dosnodos vecinos siempre fue 1.
Un grafo ponderado es un grafo en el cual los ejes tienenpeso. Los pesos de los ejes pueden ser numeros en N, Z, R,etc.
Los grafos ponderados se pueden representar con lista deadyacencia, guardando ademas del nodo destino, el peso de laarista (usando un par).
La distancia entre dos nodos v y w es el menor d tal queexisten v = v0, v1, . . . , vn = w tales que si pi es el peso del eje
que une vi y vi+1 entonces d =n−1∑i=0
pi .
BFS no sirve para camino mınimo en grafos ponderados
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 87: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/87.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Ejes con peso
Hasta ahora en los grafos que vimos la distancia entre dosnodos vecinos siempre fue 1.
Un grafo ponderado es un grafo en el cual los ejes tienenpeso. Los pesos de los ejes pueden ser numeros en N, Z, R,etc.
Los grafos ponderados se pueden representar con lista deadyacencia, guardando ademas del nodo destino, el peso de laarista (usando un par).
La distancia entre dos nodos v y w es el menor d tal queexisten v = v0, v1, . . . , vn = w tales que si pi es el peso del eje
que une vi y vi+1 entonces d =n−1∑i=0
pi .
BFS no sirve para camino mınimo en grafos ponderados
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 88: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/88.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Ejes con peso
Hasta ahora en los grafos que vimos la distancia entre dosnodos vecinos siempre fue 1.
Un grafo ponderado es un grafo en el cual los ejes tienenpeso. Los pesos de los ejes pueden ser numeros en N, Z, R,etc.
Los grafos ponderados se pueden representar con lista deadyacencia, guardando ademas del nodo destino, el peso de laarista (usando un par).
La distancia entre dos nodos v y w es el menor d tal queexisten v = v0, v1, . . . , vn = w tales que si pi es el peso del eje
que une vi y vi+1 entonces d =n−1∑i=0
pi .
BFS no sirve para camino mınimo en grafos ponderados
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 89: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/89.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Ejes con peso
Hasta ahora en los grafos que vimos la distancia entre dosnodos vecinos siempre fue 1.
Un grafo ponderado es un grafo en el cual los ejes tienenpeso. Los pesos de los ejes pueden ser numeros en N, Z, R,etc.
Los grafos ponderados se pueden representar con lista deadyacencia, guardando ademas del nodo destino, el peso de laarista (usando un par).
La distancia entre dos nodos v y w es el menor d tal queexisten v = v0, v1, . . . , vn = w tales que si pi es el peso del eje
que une vi y vi+1 entonces d =n−1∑i=0
pi .
BFS no sirve para camino mınimo en grafos ponderados
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 90: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/90.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Ejes con peso
Hasta ahora en los grafos que vimos la distancia entre dosnodos vecinos siempre fue 1.
Un grafo ponderado es un grafo en el cual los ejes tienenpeso. Los pesos de los ejes pueden ser numeros en N, Z, R,etc.
Los grafos ponderados se pueden representar con lista deadyacencia, guardando ademas del nodo destino, el peso de laarista (usando un par).
La distancia entre dos nodos v y w es el menor d tal queexisten v = v0, v1, . . . , vn = w tales que si pi es el peso del eje
que une vi y vi+1 entonces d =n−1∑i=0
pi .
BFS no sirve para camino mınimo en grafos ponderadosLuis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 91: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/91.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 92: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/92.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Dado un nodo (v), el algoritmo de Dijkstra calcula la distanciamınima a todos los demas nodos en un grafo ponderado (sinaristas negativas). Funciona ası:
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Vamos procesando los nodos uno por uno: En cada pasoelegimos el nodo x que esta a menor distancia de v (entre losque no procesamos).
Para cada vecino y de x , actualizamos su distancia, en casode que el camino que pasa por x justo antes de ir a y tengamenor costo que dy (es decir si dx + c < dy , donde c es elpeso de la arista (x , y)).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 93: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/93.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Dado un nodo (v), el algoritmo de Dijkstra calcula la distanciamınima a todos los demas nodos en un grafo ponderado (sinaristas negativas). Funciona ası:
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Vamos procesando los nodos uno por uno: En cada pasoelegimos el nodo x que esta a menor distancia de v (entre losque no procesamos).
Para cada vecino y de x , actualizamos su distancia, en casode que el camino que pasa por x justo antes de ir a y tengamenor costo que dy (es decir si dx + c < dy , donde c es elpeso de la arista (x , y)).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 94: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/94.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Dado un nodo (v), el algoritmo de Dijkstra calcula la distanciamınima a todos los demas nodos en un grafo ponderado (sinaristas negativas). Funciona ası:
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Vamos procesando los nodos uno por uno: En cada pasoelegimos el nodo x que esta a menor distancia de v (entre losque no procesamos).
Para cada vecino y de x , actualizamos su distancia, en casode que el camino que pasa por x justo antes de ir a y tengamenor costo que dy (es decir si dx + c < dy , donde c es elpeso de la arista (x , y)).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 95: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/95.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Dado un nodo (v), el algoritmo de Dijkstra calcula la distanciamınima a todos los demas nodos en un grafo ponderado (sinaristas negativas). Funciona ası:
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Vamos procesando los nodos uno por uno: En cada pasoelegimos el nodo x que esta a menor distancia de v (entre losque no procesamos).
Para cada vecino y de x , actualizamos su distancia, en casode que el camino que pasa por x justo antes de ir a y tengamenor costo que dy (es decir si dx + c < dy , donde c es elpeso de la arista (x , y)).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 96: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/96.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
0
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 97: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/97.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
0
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 98: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/98.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
0
5
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 99: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/99.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
0
5
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 100: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/100.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
0
5
7
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 101: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/101.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
14
15
0
5
7
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 102: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/102.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
14
15
0
5
7
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 103: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/103.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
14
15
22
0
5
7
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 104: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/104.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
14
15
22
0
5
7
11
14
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 105: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/105.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
14
15
22
0
5
7
11
14
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 106: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/106.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
14
15
22
0
5
7
11
14
15
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 107: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/107.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Ejemplo
0
∞ ∞
∞ ∞
∞ ∞
7
85
9
7
515
6
8
9
11
5
7
20
11
14
15
22
0
5
7
11
14
15
22
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 108: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/108.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Analisis
La complejidad es O(|V |2) porque en cada uno de los |V |pasos tenemos que buscar el nodo que esta a menordistancia, y cada arista se considera una sola vez.
Se puede implementar en O(|E |log(|E |)), usando una cola deprioridad para elegir el nodo a menor distancia (suele sernecesario usar esta version en las competencias).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 109: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/109.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Analisis
La complejidad es O(|V |2) porque en cada uno de los |V |pasos tenemos que buscar el nodo que esta a menordistancia, y cada arista se considera una sola vez.
Se puede implementar en O(|E |log(|E |)), usando una cola deprioridad para elegir el nodo a menor distancia (suele sernecesario usar esta version en las competencias).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 110: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/110.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Pesos negativos
Dijkstra no funciona si algunas aristas tienen pesos negativos,porque cuando procesamos un nodo, no podemos estarseguros de que su distancia es efectivamente la quecalculamos hasta ese punto.
Ademas, cuando hay pesos negativos, puede que la distanciaentre algun par de nodos sea −∞, en caso de que exista algunciclo negativo.
Para grafos con pesos negativos conviene usar el algoritmo deBellman-Ford (que calcula la distancia de un nodo a todoslos otros, como Dijkstra) o el algoritmo de Floyd-Warshall(que calcula la distancia entre todos los pares de nodos).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 111: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/111.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Dijkstra
Pesos negativos
Dijkstra no funciona si algunas aristas tienen pesos negativos,porque cuando procesamos un nodo, no podemos estarseguros de que su distancia es efectivamente la quecalculamos hasta ese punto.
Ademas, cuando hay pesos negativos, puede que la distanciaentre algun par de nodos sea −∞, en caso de que exista algunciclo negativo.
Para grafos con pesos negativos conviene usar el algoritmo deBellman-Ford (que calcula la distancia de un nodo a todoslos otros, como Dijkstra) o el algoritmo de Floyd-Warshall(que calcula la distancia entre todos los pares de nodos).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 112: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/112.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Bellman-Ford
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 113: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/113.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Bellman-Ford
Dado un nodo (v), el algoritmo de Bellman-Ford calcula ladistancia mınima a todos los demas nodos en un grafo ponderado,incluso si hay aristas negativas. Funciona ası:
Asumimos que no hay ciclos negativos.
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Iteramos n-1 veces, en cada iteracion intentamos relajar ladistancia a los nodos usando todas las aristas.
Se puede demostrar que luego de la i-esima iteracion, ya sehan encontrado todos los caminos mınimos que usan i omenos aristas.
Hacemos 1 iteracion mas, si la distancia a algun nododisminuye, el grafo contiene un ciclo negativo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 114: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/114.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Bellman-Ford
Dado un nodo (v), el algoritmo de Bellman-Ford calcula ladistancia mınima a todos los demas nodos en un grafo ponderado,incluso si hay aristas negativas. Funciona ası:
Asumimos que no hay ciclos negativos.
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Iteramos n-1 veces, en cada iteracion intentamos relajar ladistancia a los nodos usando todas las aristas.
Se puede demostrar que luego de la i-esima iteracion, ya sehan encontrado todos los caminos mınimos que usan i omenos aristas.
Hacemos 1 iteracion mas, si la distancia a algun nododisminuye, el grafo contiene un ciclo negativo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 115: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/115.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Bellman-Ford
Dado un nodo (v), el algoritmo de Bellman-Ford calcula ladistancia mınima a todos los demas nodos en un grafo ponderado,incluso si hay aristas negativas. Funciona ası:
Asumimos que no hay ciclos negativos.
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Iteramos n-1 veces, en cada iteracion intentamos relajar ladistancia a los nodos usando todas las aristas.
Se puede demostrar que luego de la i-esima iteracion, ya sehan encontrado todos los caminos mınimos que usan i omenos aristas.
Hacemos 1 iteracion mas, si la distancia a algun nododisminuye, el grafo contiene un ciclo negativo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 116: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/116.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Bellman-Ford
Dado un nodo (v), el algoritmo de Bellman-Ford calcula ladistancia mınima a todos los demas nodos en un grafo ponderado,incluso si hay aristas negativas. Funciona ası:
Asumimos que no hay ciclos negativos.
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Iteramos n-1 veces, en cada iteracion intentamos relajar ladistancia a los nodos usando todas las aristas.
Se puede demostrar que luego de la i-esima iteracion, ya sehan encontrado todos los caminos mınimos que usan i omenos aristas.
Hacemos 1 iteracion mas, si la distancia a algun nododisminuye, el grafo contiene un ciclo negativo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 117: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/117.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Bellman-Ford
Dado un nodo (v), el algoritmo de Bellman-Ford calcula ladistancia mınima a todos los demas nodos en un grafo ponderado,incluso si hay aristas negativas. Funciona ası:
Asumimos que no hay ciclos negativos.
v tiene distancia a sı mismo 0, por lo que seteamos dv = 0.Para los demas nodos seteamos inicialmente su distancia a ∞(es decir, un valor suficientemente grande).
Iteramos n-1 veces, en cada iteracion intentamos relajar ladistancia a los nodos usando todas las aristas.
Se puede demostrar que luego de la i-esima iteracion, ya sehan encontrado todos los caminos mınimos que usan i omenos aristas.
Hacemos 1 iteracion mas, si la distancia a algun nododisminuye, el grafo contiene un ciclo negativo.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 118: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/118.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Bellman-Ford
Implementacion
1 struct edge{
2 int a, b, cost;
3 };
4 vector<int> bellmanFord(int n, int m, vector<edge> &e){
5 vector<int> d (n, INF);
6 d[v] = 0;
7 for (int i=0; i<n-1; ++i)
8 for (int j=0; j<m; ++j)
9 if (d[e[j].a] < INF)
10 d[e[j].b] = min (d[e[j].b], d[e[j].a] + e[j].
cost);
11 return d;
12 }
La complejidad es claramente O(n ∗m).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 119: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/119.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Floyd-Warshall
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 120: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/120.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Floyd-Warshall
El algoritmo de Floyd calcula las distancia entre cada par denodos, lo hace usando programacion dinamica.
Inicialmente, dx ,y (distancia de x a y) es el peso de la aristade x a y si esta existe, ∞ si no existe, o 0 si x = y .
Procesamos los nodos uno por uno, y mantenemos comoinvariante que las distancias son las mınimas que se puedenlograr pasando solo por los nodos que procesamos.
Cuando procesamos el nodo k , para cada par de nodos i , jactualizamos su distancia como el mınimo entre lo que yahabıa antes y la distancia si pasamos por k (es decir,di ,k + dk,j).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 121: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/121.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Floyd-Warshall
El algoritmo de Floyd calcula las distancia entre cada par denodos, lo hace usando programacion dinamica.
Inicialmente, dx ,y (distancia de x a y) es el peso de la aristade x a y si esta existe, ∞ si no existe, o 0 si x = y .
Procesamos los nodos uno por uno, y mantenemos comoinvariante que las distancias son las mınimas que se puedenlograr pasando solo por los nodos que procesamos.
Cuando procesamos el nodo k , para cada par de nodos i , jactualizamos su distancia como el mınimo entre lo que yahabıa antes y la distancia si pasamos por k (es decir,di ,k + dk,j).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 122: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/122.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Floyd-Warshall
El algoritmo de Floyd calcula las distancia entre cada par denodos, lo hace usando programacion dinamica.
Inicialmente, dx ,y (distancia de x a y) es el peso de la aristade x a y si esta existe, ∞ si no existe, o 0 si x = y .
Procesamos los nodos uno por uno, y mantenemos comoinvariante que las distancias son las mınimas que se puedenlograr pasando solo por los nodos que procesamos.
Cuando procesamos el nodo k , para cada par de nodos i , jactualizamos su distancia como el mınimo entre lo que yahabıa antes y la distancia si pasamos por k (es decir,di ,k + dk,j).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 123: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/123.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Floyd-Warshall
El algoritmo de Floyd calcula las distancia entre cada par denodos, lo hace usando programacion dinamica.
Inicialmente, dx ,y (distancia de x a y) es el peso de la aristade x a y si esta existe, ∞ si no existe, o 0 si x = y .
Procesamos los nodos uno por uno, y mantenemos comoinvariante que las distancias son las mınimas que se puedenlograr pasando solo por los nodos que procesamos.
Cuando procesamos el nodo k , para cada par de nodos i , jactualizamos su distancia como el mınimo entre lo que yahabıa antes y la distancia si pasamos por k (es decir,di ,k + dk,j).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 124: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/124.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Floyd-Warshall
Implementacion
1 void floyd(vector<vector<int> > &d){
2 // d -> matriz inicial de distancias (como se explico en diapo
anterior)
3 for(int k=0;k<n;k++)
4 for(int i=0;i<n;i++)
5 for(int j=0;j<n;j++)
6 d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
7 }
La complejidad es claramente O(n3).
En el caso de pesos negativos, podemos saber si x esta en unciclo negativo, fijandonos si ocurre dx ,x < 0.
La distancia de x a y es −∞ si hay un nodo z que esta en unciclo negativo y podemos ir de x a z y de z a y .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 125: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/125.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 126: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/126.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Un problema de grafos
Problema: Ahorrando Gasolina
Javier quiere viajar desde la ciudad A a la ciudad B. En total hayN ciudades y M rutas doble mano que conectan un par deciudades. El tanque del auto de Javier puede almacenar hasta Clitros de gasolina. Al comenzar el recorrido Javier lleno el tanque.Para recorrer una ruta que conecta dos ciudades (i , j) debemosgastar Wij litros de gasolina.Ademas, en cada ciudad podemos cargar el tanque al precio de Di
pesos por litro. ¿Cual es la menor cantidad de dinero que debemosgastar para llegar de A a B? ¿Y de A a cada una de las otrasciudades?
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 127: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/127.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Al buscar la solucion, necesitamos saber en que ciudadestamos, pero tambien cuanta gasolina nos queda.
Podemos definir un grafo donde cada nodo esta compuestopor este par de valores y trabajar sobre este. A estos nodos losllamaremos estados.
¿Cuales son nuestras posibles transiciones (aristas) si actualmenteestamos en la ciudad i con l litros de gasolina en el tanque? ¿Quedecisiones podemos tomar?
Podemos movernos a otra ciudad (si es que nos da la gasolina
en el tanque): (i , l)0→ (j , l −Wij).
Podemos cargar un litro de gasolina en la ciudad actual (si el
tanque no esta lleno): (i , l)Ci→ (i , l + 1)
Luego, el problema se reduce a encontrar un camino mınimo de(A,C ) a algun nodo de la forma (B, l) para algun l .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 128: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/128.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Al buscar la solucion, necesitamos saber en que ciudadestamos, pero tambien cuanta gasolina nos queda.
Podemos definir un grafo donde cada nodo esta compuestopor este par de valores y trabajar sobre este. A estos nodos losllamaremos estados.
¿Cuales son nuestras posibles transiciones (aristas) si actualmenteestamos en la ciudad i con l litros de gasolina en el tanque? ¿Quedecisiones podemos tomar?
Podemos movernos a otra ciudad (si es que nos da la gasolina
en el tanque): (i , l)0→ (j , l −Wij).
Podemos cargar un litro de gasolina en la ciudad actual (si el
tanque no esta lleno): (i , l)Ci→ (i , l + 1)
Luego, el problema se reduce a encontrar un camino mınimo de(A,C ) a algun nodo de la forma (B, l) para algun l .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 129: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/129.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Al buscar la solucion, necesitamos saber en que ciudadestamos, pero tambien cuanta gasolina nos queda.
Podemos definir un grafo donde cada nodo esta compuestopor este par de valores y trabajar sobre este. A estos nodos losllamaremos estados.
¿Cuales son nuestras posibles transiciones (aristas) si actualmenteestamos en la ciudad i con l litros de gasolina en el tanque? ¿Quedecisiones podemos tomar?
Podemos movernos a otra ciudad (si es que nos da la gasolina
en el tanque): (i , l)0→ (j , l −Wij).
Podemos cargar un litro de gasolina en la ciudad actual (si el
tanque no esta lleno): (i , l)Ci→ (i , l + 1)
Luego, el problema se reduce a encontrar un camino mınimo de(A,C ) a algun nodo de la forma (B, l) para algun l .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 130: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/130.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Al buscar la solucion, necesitamos saber en que ciudadestamos, pero tambien cuanta gasolina nos queda.
Podemos definir un grafo donde cada nodo esta compuestopor este par de valores y trabajar sobre este. A estos nodos losllamaremos estados.
¿Cuales son nuestras posibles transiciones (aristas) si actualmenteestamos en la ciudad i con l litros de gasolina en el tanque? ¿Quedecisiones podemos tomar?
Podemos movernos a otra ciudad (si es que nos da la gasolina
en el tanque):
(i , l)0→ (j , l −Wij).
Podemos cargar un litro de gasolina en la ciudad actual (si el
tanque no esta lleno): (i , l)Ci→ (i , l + 1)
Luego, el problema se reduce a encontrar un camino mınimo de(A,C ) a algun nodo de la forma (B, l) para algun l .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 131: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/131.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Al buscar la solucion, necesitamos saber en que ciudadestamos, pero tambien cuanta gasolina nos queda.
Podemos definir un grafo donde cada nodo esta compuestopor este par de valores y trabajar sobre este. A estos nodos losllamaremos estados.
¿Cuales son nuestras posibles transiciones (aristas) si actualmenteestamos en la ciudad i con l litros de gasolina en el tanque? ¿Quedecisiones podemos tomar?
Podemos movernos a otra ciudad (si es que nos da la gasolina
en el tanque): (i , l)0→ (j , l −Wij).
Podemos cargar un litro de gasolina en la ciudad actual (si el
tanque no esta lleno):
(i , l)Ci→ (i , l + 1)
Luego, el problema se reduce a encontrar un camino mınimo de(A,C ) a algun nodo de la forma (B, l) para algun l .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 132: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/132.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Al buscar la solucion, necesitamos saber en que ciudadestamos, pero tambien cuanta gasolina nos queda.
Podemos definir un grafo donde cada nodo esta compuestopor este par de valores y trabajar sobre este. A estos nodos losllamaremos estados.
¿Cuales son nuestras posibles transiciones (aristas) si actualmenteestamos en la ciudad i con l litros de gasolina en el tanque? ¿Quedecisiones podemos tomar?
Podemos movernos a otra ciudad (si es que nos da la gasolina
en el tanque): (i , l)0→ (j , l −Wij).
Podemos cargar un litro de gasolina en la ciudad actual (si el
tanque no esta lleno): (i , l)Ci→ (i , l + 1)
Luego, el problema se reduce a encontrar un camino mınimo de(A,C ) a algun nodo de la forma (B, l) para algun l .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 133: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/133.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Al buscar la solucion, necesitamos saber en que ciudadestamos, pero tambien cuanta gasolina nos queda.
Podemos definir un grafo donde cada nodo esta compuestopor este par de valores y trabajar sobre este. A estos nodos losllamaremos estados.
¿Cuales son nuestras posibles transiciones (aristas) si actualmenteestamos en la ciudad i con l litros de gasolina en el tanque? ¿Quedecisiones podemos tomar?
Podemos movernos a otra ciudad (si es que nos da la gasolina
en el tanque): (i , l)0→ (j , l −Wij).
Podemos cargar un litro de gasolina en la ciudad actual (si el
tanque no esta lleno): (i , l)Ci→ (i , l + 1)
Luego, el problema se reduce a encontrar un camino mınimo de(A,C ) a algun nodo de la forma (B, l) para algun l .
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 134: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/134.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Para muchos problemas puede ser util tratar de modelar un grafo,de tal forma que lo que pide el problema se transforme en una”consulta” sobre ese grafo. La forma de hacer este modelado sueleser con un vertice por cada estado posible distinto que puedehaber en el problema y una arista por cada transicion posibleentre dos estados.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 135: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/135.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 136: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/136.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Arboles
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 137: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/137.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Arboles
Un arbol es un grafo conexo sin ciclos.
Una particularidad de los arboles es que siempre |E | = |V |− 1.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 138: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/138.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Union-find
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 139: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/139.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Union-find
Union-find es una estructura de datos que mantiene lascomponentes conexas de un grafo. Soporta las siguientes dosoperaciones:
find(x): Devuelve un id de la componente conexa en la queesta el nodo x . Se puede usar para ver si dos nodos estan enla misma componente chequeando find(x) == find(y).
union(x , y): Agrega una arista entre los nodos x e y . Es decir,junta las componentes de x y de y en la misma componente.
Ambas operaciones se pueden realizar de manera muy eficiente(practicamente O(1)).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 140: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/140.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Union-find
Union-find es una estructura de datos que mantiene lascomponentes conexas de un grafo. Soporta las siguientes dosoperaciones:
find(x): Devuelve un id de la componente conexa en la queesta el nodo x . Se puede usar para ver si dos nodos estan enla misma componente chequeando find(x) == find(y).
union(x , y): Agrega una arista entre los nodos x e y . Es decir,junta las componentes de x y de y en la misma componente.
Ambas operaciones se pueden realizar de manera muy eficiente(practicamente O(1)).
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 141: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/141.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
1 Coceptos basicos
2 Recorrer un grafoBFSDFS
3 Mas definicionesComponentes conexasGrafo bipartitoDAG - Orden topologico
4 Camino mınimoDijkstraBellman-FordFloyd-Warshall
5 Modelado6 Arbol generador mınimo
ArbolesUnion-findKruskal
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 142: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/142.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Definicion: arbol generador mınimo
Dado un grafo conexo G , un arbol generador de G es un arbol quetiene todos los nodos de G y cuyas aristas tambien son aristas deG .Si las aristas de G tienen pesos, un “arbol generador mınimo” deG es uno que cumple que la suma de sus aristas es lo mas chicaposible.
Figure: Arbol generador mınimo (ejemplo)Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 143: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/143.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
El algoritmo de Kruskal calcula el arbol generador mınimo comosigue:
Mantengo un union-find con las componentes conexasdeterminadas por las aristas que agregue al arbol.
Armo un arreglo con todas las aristas. Las ordeno por pesode menor a mayor.
Recorro cada arista: Si los nodos que conecta estan en lamisma componente, entonces no hago nada. Si estan endistintas, agrego la arista al arbol y hago union de los dosnodos en el union-find.
La complejidad es lineal, excepto en la parte de ordenar lasaristas. Entonces en total es O(|E |log(|E |))
Para Kruskal, no hace falta representar el grafo como lista deadyacencia, sino simplemente como un arreglo con las aristas.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 144: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/144.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
El algoritmo de Kruskal calcula el arbol generador mınimo comosigue:
Mantengo un union-find con las componentes conexasdeterminadas por las aristas que agregue al arbol.
Armo un arreglo con todas las aristas. Las ordeno por pesode menor a mayor.
Recorro cada arista: Si los nodos que conecta estan en lamisma componente, entonces no hago nada. Si estan endistintas, agrego la arista al arbol y hago union de los dosnodos en el union-find.
La complejidad es lineal, excepto en la parte de ordenar lasaristas. Entonces en total es O(|E |log(|E |))
Para Kruskal, no hace falta representar el grafo como lista deadyacencia, sino simplemente como un arreglo con las aristas.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 145: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/145.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
El algoritmo de Kruskal calcula el arbol generador mınimo comosigue:
Mantengo un union-find con las componentes conexasdeterminadas por las aristas que agregue al arbol.
Armo un arreglo con todas las aristas. Las ordeno por pesode menor a mayor.
Recorro cada arista: Si los nodos que conecta estan en lamisma componente, entonces no hago nada. Si estan endistintas, agrego la arista al arbol y hago union de los dosnodos en el union-find.
La complejidad es lineal, excepto en la parte de ordenar lasaristas. Entonces en total es O(|E |log(|E |))
Para Kruskal, no hace falta representar el grafo como lista deadyacencia, sino simplemente como un arreglo con las aristas.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 146: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/146.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
El algoritmo de Kruskal calcula el arbol generador mınimo comosigue:
Mantengo un union-find con las componentes conexasdeterminadas por las aristas que agregue al arbol.
Armo un arreglo con todas las aristas. Las ordeno por pesode menor a mayor.
Recorro cada arista: Si los nodos que conecta estan en lamisma componente, entonces no hago nada. Si estan endistintas, agrego la arista al arbol y hago union de los dosnodos en el union-find.
La complejidad es lineal, excepto en la parte de ordenar lasaristas. Entonces en total es O(|E |log(|E |))
Para Kruskal, no hace falta representar el grafo como lista deadyacencia, sino simplemente como un arreglo con las aristas.
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 147: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/147.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 148: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/148.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 149: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/149.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 150: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/150.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 151: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/151.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 152: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/152.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 153: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/153.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 154: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/154.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 155: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/155.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 156: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/156.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Ejemplo
0
1 2
3 4
5 6
7
85
9
7
515
6
8
9
11
Luis Santiago Re Universidad Tecnologica Nacional
Grafos
![Page 157: Grafos - TC ARG · Ejemplo: redes sociales En Facebook, dos usuarios, pueden o no ser amigos. Esta relaci on es mutua, es decir que puede pensarse como un grafo ... Floyd-Warshall](https://reader037.vdocuments.site/reader037/viewer/2022090516/60431f3d0cb8b202352757d6/html5/thumbnails/157.jpg)
Coceptos basicos Recorrer un grafo Mas definiciones Camino mınimo Modelado Arbol generador mınimo
Kruskal
Implementacion
1 int kruskal(vector<pair<int, pair<int, int>>> edges, int n) {
2 //edges: lista de aristas en la forma {peso, {nodo1, nodo2}}
3 sort(edges.begin(),edges.end()); // ordena por peso
4 init_uf(n);
5 int u = 0, res = 0;
6 for(auto p: edges){
7 int c = p.first, x = p.second.first, y = p.second.second;
8 x = find(x); y = find(y);
9 if(x == y) continue // los nodos ya estan conectados
10 res += c;
11 u++;
12 join(x,y);
13 if(u == n - 1) // completamos el arbol?
14 return res;
15 }
16 return -1; // si llegamos hasta aca entonces no es conexo
17 }
Luis Santiago Re Universidad Tecnologica Nacional
Grafos