MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados...
Transcript of MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados...
![Page 1: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/1.jpg)
MC-202 — Unidade 19Grafos
Rafael C. S. [email protected]
Universidade Estadual de Campinas
1º semestre/2017
![Page 2: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/2.jpg)
Redes Sociais
Como representar as relações de amizade em uma redesocial?
Ana
BetoCarlos
Daniel
Eduardo Felipe
Temos um conjunto de pessoas (Ana, Beto, Carlos, etc...)• Ligamos duas pessoas se elas se conhecem
2
![Page 3: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/3.jpg)
Redes Sociais
Como representar as relações de amizade em uma redesocial?
Ana
BetoCarlos
Daniel
Eduardo Felipe
Temos um conjunto de pessoas (Ana, Beto, Carlos, etc...)
• Ligamos duas pessoas se elas se conhecem
2
![Page 4: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/4.jpg)
Redes Sociais
Como representar as relações de amizade em uma redesocial?
Ana
BetoCarlos
Daniel
Eduardo Felipe
Temos um conjunto de pessoas (Ana, Beto, Carlos, etc...)• Ligamos duas pessoas se elas se conhecem
2
![Page 5: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/5.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices
– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas
– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 6: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/6.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices
– Ex: pessoas em uma rede social• Chamamos as conexões entre os objetos de arestas
– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 7: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/7.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas
– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 8: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/8.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas
– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 9: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/9.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 10: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/10.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 11: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/11.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente
• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 12: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/12.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e
• as arestas representadas por curvas ligando dois vértices
3
![Page 13: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/13.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 14: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/14.jpg)
GrafosUm Grafo é um conjunto de objetos ligados entre si
• Chamamos esses objetos de vértices– Ex: pessoas em uma rede social
• Chamamos as conexões entre os objetos de arestas– Ex: relação de amizade na rede social
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um grafo visualmente• com os vértices representados por pontos e• as arestas representadas por curvas ligando dois vértices
3
![Page 15: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/15.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}
• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 16: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/16.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)
• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}
• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 17: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/17.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 18: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/18.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}
• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 19: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/19.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 20: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/20.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}
– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 21: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/21.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v
– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 22: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/22.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E
– Ex:E =
{{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}
}
4
![Page 23: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/23.jpg)
Grafos
0
12
3
4 5
Matematicamente, um grafo G é um par ordenado (V, E)• V é o conjunto de vértices do grafo
– Ex: V = {0, 1, 2, 3, 4, 5}• E é o conjunto de arestas do grafo
– Representamos uma aresta ligando u, v ∈ V como {u, v}– Para toda aresta {u, v} em E, temos que u ̸= v– Existe no máximo uma aresta {u, v} em E– Ex:
E ={
{0, 1}, {0, 4}, {5, 3}, {1, 2}, {2, 5}, {4, 5}, {3, 2}, {1, 4}}
4
![Page 24: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/24.jpg)
Adjacência
0
12
3
4 5
O vértice 0 é vizinho do vértice 4• Dizemos que 0 e 4 são adjacentes• Os vértices 0, 1 e 5 formam a vizinhança do vértice 4
5
![Page 25: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/25.jpg)
Adjacência
0
12
3
4 5
O vértice 0 é vizinho do vértice 4
• Dizemos que 0 e 4 são adjacentes• Os vértices 0, 1 e 5 formam a vizinhança do vértice 4
5
![Page 26: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/26.jpg)
Adjacência
0
12
3
4 5
O vértice 0 é vizinho do vértice 4• Dizemos que 0 e 4 são adjacentes
• Os vértices 0, 1 e 5 formam a vizinhança do vértice 4
5
![Page 27: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/27.jpg)
Adjacência
0
12
3
4 5
O vértice 0 é vizinho do vértice 4• Dizemos que 0 e 4 são adjacentes• Os vértices 0, 1 e 5 formam a vizinhança do vértice 4
5
![Page 28: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/28.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 29: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/29.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices
• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 30: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/30.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1
• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 31: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/31.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 32: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/32.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos
• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 33: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/33.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 34: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/34.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 35: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/35.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 36: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/36.jpg)
Matriz de AdjacênciasVamos representar um grafo por uma matriz de adjacências
• Se o grafo tem n vértices• Os vértices serão numerado de 0 a n − 1• A matriz de adjacências é n × n
• adjacencia[u][v] = 1 - u e v são vizinhos• adjacencia[u][v] = 0 - u e v não são vizinhos
0
12
3
4 5
0 1 0 0 1 01 0 1 0 1 00 1 0 1 0 10 0 1 0 0 11 1 0 0 0 10 0 1 1 1 0
6
![Page 37: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/37.jpg)
TAD Grafo
1 typedef struct {2 int **adjacencia;3 int n;4 } Grafo;56 void inicia_grafo(Grafo *g, int n);78 void destroi_grafo(Grafo g);9
10 void insere_aresta(Grafo g, int u, int v);1112 void remove_aresta(Grafo g, int u, int v);1314 void tem_aresta(Grafo g, int u, int v);1516 void imprime_arestas(Grafo g);1718 ...
7
![Page 38: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/38.jpg)
Inicialização e Destruição
1 void inicia_grafo(Grafo *g, int n) {
2 int i, j;3 g->n = n;4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 39: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/39.jpg)
Inicialização e Destruição
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;
3 g->n = n;4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 40: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/40.jpg)
Inicialização e Destruição
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;3 g->n = n;
4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 41: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/41.jpg)
Inicialização e Destruição
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;3 g->n = n;4 g->adj = malloc(n * sizeof(int *));
5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 42: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/42.jpg)
Inicialização e Destruição
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;3 g->n = n;4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));
7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 43: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/43.jpg)
Inicialização e Destruição
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;3 g->n = n;4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 44: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/44.jpg)
Inicialização e Destruição
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;3 g->n = n;4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {
2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 45: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/45.jpg)
Inicialização e Destruição
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;3 g->n = n;4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);
5 free(g.adj);6 }
8
![Page 46: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/46.jpg)
Inicialização e Destruição
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 void inicia_grafo(Grafo *g, int n) {2 int i, j;3 g->n = n;4 g->adj = malloc(n * sizeof(int *));5 for (i = 0; i < n; i++)6 g->adj[i] = malloc(n * sizeof(int));7 for (i = 0; i < n; i++)8 for (j = 0; j < n; j++)9 g->adj[i][j] = 0;
10 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g->n; i++)4 free(g.adj[i]);5 free(g.adj);6 }
8
![Page 47: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/47.jpg)
Manipulando arestas
1 void insere_aresta(Grafo g, int u, int v) {2 g.adj[u][v] = 1;3 g.adj[v][u] = 1;4 }
1 void remove_aresta(Grafo g, int u, int v) {2 g.adj[u][v] = 0;3 g.adj[v][u] = 0;4 }
1 int tem_aresta(Grafo g, int u, int v) {2 return g.adj[u][v];3 }
9
![Page 48: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/48.jpg)
Manipulando arestas
1 void insere_aresta(Grafo g, int u, int v) {2 g.adj[u][v] = 1;3 g.adj[v][u] = 1;4 }
1 void remove_aresta(Grafo g, int u, int v) {2 g.adj[u][v] = 0;3 g.adj[v][u] = 0;4 }
1 int tem_aresta(Grafo g, int u, int v) {2 return g.adj[u][v];3 }
9
![Page 49: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/49.jpg)
Manipulando arestas
1 void insere_aresta(Grafo g, int u, int v) {2 g.adj[u][v] = 1;3 g.adj[v][u] = 1;4 }
1 void remove_aresta(Grafo g, int u, int v) {2 g.adj[u][v] = 0;3 g.adj[v][u] = 0;4 }
1 int tem_aresta(Grafo g, int u, int v) {2 return g.adj[u][v];3 }
9
![Page 50: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/50.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {
2 int n, m, i, u, v;3 scanf("%d %d", &n, &m);4 inicia_grafo(g, n);5 for (i = 0; i < m; i++) {6 scanf("%d %d", &u, &v);7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 51: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/51.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {2 int n, m, i, u, v;
3 scanf("%d %d", &n, &m);4 inicia_grafo(g, n);5 for (i = 0; i < m; i++) {6 scanf("%d %d", &u, &v);7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 52: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/52.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {2 int n, m, i, u, v;3 scanf("%d %d", &n, &m);
4 inicia_grafo(g, n);5 for (i = 0; i < m; i++) {6 scanf("%d %d", &u, &v);7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 53: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/53.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {2 int n, m, i, u, v;3 scanf("%d %d", &n, &m);4 inicia_grafo(g, n);
5 for (i = 0; i < m; i++) {6 scanf("%d %d", &u, &v);7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 54: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/54.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {2 int n, m, i, u, v;3 scanf("%d %d", &n, &m);4 inicia_grafo(g, n);5 for (i = 0; i < m; i++) {
6 scanf("%d %d", &u, &v);7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 55: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/55.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {2 int n, m, i, u, v;3 scanf("%d %d", &n, &m);4 inicia_grafo(g, n);5 for (i = 0; i < m; i++) {6 scanf("%d %d", &u, &v);
7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 56: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/56.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {2 int n, m, i, u, v;3 scanf("%d %d", &n, &m);4 inicia_grafo(g, n);5 for (i = 0; i < m; i++) {6 scanf("%d %d", &u, &v);7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 57: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/57.jpg)
Lendo e Imprimindo um Grafo
1 void le_grafo(Grafo *g) {2 int n, m, i, u, v;3 scanf("%d %d", &n, &m);4 inicia_grafo(g, n);5 for (i = 0; i < m; i++) {6 scanf("%d %d", &u, &v);7 insere_aresta(*g, u, v);8 }9 }
1 void imprime_arestas(Grafo g) {2 int u, v;3 for (u = 0; u < g.n; u++)4 for (v = u+1; v < g.n; v++)5 if (g.adj[u][v])6 printf("{%d,%d}\n", u, v);7 }
10
![Page 58: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/58.jpg)
Quem é o mais popular?O grau de um vértice é o seu número de vizinhos
0
12
3
4 5
1 int grau(Grafo g, int u) {2 int v, grau = 0;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v])5 grau++;6 }7 return grau;8 }
11
![Page 59: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/59.jpg)
Quem é o mais popular?O grau de um vértice é o seu número de vizinhos
0
12
3
4 5
1 int grau(Grafo g, int u) {2 int v, grau = 0;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v])5 grau++;6 }7 return grau;8 }
11
![Page 60: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/60.jpg)
Quem é o mais popular?O grau de um vértice é o seu número de vizinhos
0
12
3
4 5
1 int grau(Grafo g, int u) {2 int v, grau = 0;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v])5 grau++;6 }7 return grau;8 }
11
![Page 61: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/61.jpg)
Quem é o mais popular?
1 int mais_popular(Grafo g) {
2 int u, max, grau_max, grau_atual;3 max = 0;4 grau_max = grau(g, 0);5 for (u = 1; u < g.n; u++) {6 grau_atual = grau(g, u);7 if (grau_atual > grau_max) {8 grau_max = grau_atual;9 max = u;
10 }11 }12 return max;13 }
12
![Page 62: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/62.jpg)
Quem é o mais popular?
1 int mais_popular(Grafo g) {2 int u, max, grau_max, grau_atual;
3 max = 0;4 grau_max = grau(g, 0);5 for (u = 1; u < g.n; u++) {6 grau_atual = grau(g, u);7 if (grau_atual > grau_max) {8 grau_max = grau_atual;9 max = u;
10 }11 }12 return max;13 }
12
![Page 63: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/63.jpg)
Quem é o mais popular?
1 int mais_popular(Grafo g) {2 int u, max, grau_max, grau_atual;3 max = 0;4 grau_max = grau(g, 0);
5 for (u = 1; u < g.n; u++) {6 grau_atual = grau(g, u);7 if (grau_atual > grau_max) {8 grau_max = grau_atual;9 max = u;
10 }11 }12 return max;13 }
12
![Page 64: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/64.jpg)
Quem é o mais popular?
1 int mais_popular(Grafo g) {2 int u, max, grau_max, grau_atual;3 max = 0;4 grau_max = grau(g, 0);5 for (u = 1; u < g.n; u++) {
6 grau_atual = grau(g, u);7 if (grau_atual > grau_max) {8 grau_max = grau_atual;9 max = u;
10 }11 }12 return max;13 }
12
![Page 65: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/65.jpg)
Quem é o mais popular?
1 int mais_popular(Grafo g) {2 int u, max, grau_max, grau_atual;3 max = 0;4 grau_max = grau(g, 0);5 for (u = 1; u < g.n; u++) {6 grau_atual = grau(g, u);
7 if (grau_atual > grau_max) {8 grau_max = grau_atual;9 max = u;
10 }11 }12 return max;13 }
12
![Page 66: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/66.jpg)
Quem é o mais popular?
1 int mais_popular(Grafo g) {2 int u, max, grau_max, grau_atual;3 max = 0;4 grau_max = grau(g, 0);5 for (u = 1; u < g.n; u++) {6 grau_atual = grau(g, u);7 if (grau_atual > grau_max) {8 grau_max = grau_atual;9 max = u;
10 }11 }
12 return max;13 }
12
![Page 67: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/67.jpg)
Quem é o mais popular?
1 int mais_popular(Grafo g) {2 int u, max, grau_max, grau_atual;3 max = 0;4 grau_max = grau(g, 0);5 for (u = 1; u < g.n; u++) {6 grau_atual = grau(g, u);7 if (grau_atual > grau_max) {8 grau_max = grau_atual;9 max = u;
10 }11 }12 return max;13 }
12
![Page 68: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/68.jpg)
Indicando amigos
Queremos indicar novos amigos para Ana
Ana
BetoCarlos
Daniel
Eduardo Felipe
Quem são os amigos dos amigos da Ana?• Dentre esses quais não são ela mesma ou amigos dela?
13
![Page 69: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/69.jpg)
Indicando amigos
Queremos indicar novos amigos para Ana
Ana
BetoCarlos
Daniel
Eduardo Felipe
Quem são os amigos dos amigos da Ana?
• Dentre esses quais não são ela mesma ou amigos dela?
13
![Page 70: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/70.jpg)
Indicando amigos
Queremos indicar novos amigos para Ana
Ana
BetoCarlos
Daniel
Eduardo Felipe
Ana
BetoCarlos
Daniel
Eduardo Felipe
Quem são os amigos dos amigos da Ana?
• Dentre esses quais não são ela mesma ou amigos dela?
13
![Page 71: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/71.jpg)
Indicando amigos
Queremos indicar novos amigos para Ana
Ana
BetoCarlos
Daniel
Eduardo Felipe
Ana
BetoCarlos
Daniel
Eduardo Felipe
Quem são os amigos dos amigos da Ana?• Dentre esses quais não são ela mesma ou amigos dela?
13
![Page 72: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/72.jpg)
Indicando amigos
Queremos indicar novos amigos para Ana
Ana
BetoCarlos
Daniel
Eduardo Felipe
Ana
BetoCarlos
Daniel
Eduardo Felipe
Ana
BetoCarlos
Daniel
Eduardo Felipe
Quem são os amigos dos amigos da Ana?• Dentre esses quais não são ela mesma ou amigos dela?
13
![Page 73: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/73.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {
2 int v, w;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v]) {5 for (w = 0; w < g.n; w++) {6 if (g.adj[v][w] && w != u && !g.adj[u][w])7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 74: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/74.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {2 int v, w;3 for (v = 0; v < g.n; v++) {
4 if (g.adj[u][v]) {5 for (w = 0; w < g.n; w++) {6 if (g.adj[v][w] && w != u && !g.adj[u][w])7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 75: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/75.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {2 int v, w;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v]) {
5 for (w = 0; w < g.n; w++) {6 if (g.adj[v][w] && w != u && !g.adj[u][w])7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 76: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/76.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {2 int v, w;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v]) {5 for (w = 0; w < g.n; w++) {
6 if (g.adj[v][w] && w != u && !g.adj[u][w])7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 77: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/77.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {2 int v, w;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v]) {5 for (w = 0; w < g.n; w++) {6 if (g.adj[v][w]
&& w != u && !g.adj[u][w])7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 78: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/78.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {2 int v, w;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v]) {5 for (w = 0; w < g.n; w++) {6 if (g.adj[v][w] && w != u
&& !g.adj[u][w])7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 79: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/79.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {2 int v, w;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v]) {5 for (w = 0; w < g.n; w++) {6 if (g.adj[v][w] && w != u && !g.adj[u][w])
7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 80: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/80.jpg)
Indicando amigos
u
v
w
1 void imprime_recomendacoes(Grafo g, int u) {2 int v, w;3 for (v = 0; v < g.n; v++) {4 if (g.adj[u][v]) {5 for (w = 0; w < g.n; w++) {6 if (g.adj[v][w] && w != u && !g.adj[u][w])7 printf("%d\n", w);8 }9 }
10 }11 }
14
![Page 81: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/81.jpg)
Seguindo e sendo seguidoComo representar seguidores em redes sociais?
Ana
BetoCarlos
Daniel
Eduardo Felipe
• A Ana segue o Beto e o Eduardo• Ninguém segue a Ana• O Daniel é seguido pelo Carlos e pelo Felipe• O Eduardo segue o Beto que o segue de volta
15
![Page 82: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/82.jpg)
Seguindo e sendo seguidoComo representar seguidores em redes sociais?
Ana
BetoCarlos
Daniel
Eduardo Felipe
• A Ana segue o Beto e o Eduardo• Ninguém segue a Ana• O Daniel é seguido pelo Carlos e pelo Felipe• O Eduardo segue o Beto que o segue de volta
15
![Page 83: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/83.jpg)
Seguindo e sendo seguidoComo representar seguidores em redes sociais?
Ana
BetoCarlos
Daniel
Eduardo Felipe
• A Ana segue o Beto e o Eduardo
• Ninguém segue a Ana• O Daniel é seguido pelo Carlos e pelo Felipe• O Eduardo segue o Beto que o segue de volta
15
![Page 84: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/84.jpg)
Seguindo e sendo seguidoComo representar seguidores em redes sociais?
Ana
BetoCarlos
Daniel
Eduardo Felipe
• A Ana segue o Beto e o Eduardo• Ninguém segue a Ana
• O Daniel é seguido pelo Carlos e pelo Felipe• O Eduardo segue o Beto que o segue de volta
15
![Page 85: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/85.jpg)
Seguindo e sendo seguidoComo representar seguidores em redes sociais?
Ana
BetoCarlos
Daniel
Eduardo Felipe
• A Ana segue o Beto e o Eduardo• Ninguém segue a Ana• O Daniel é seguido pelo Carlos e pelo Felipe
• O Eduardo segue o Beto que o segue de volta
15
![Page 86: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/86.jpg)
Seguindo e sendo seguidoComo representar seguidores em redes sociais?
Ana
BetoCarlos
Daniel
Eduardo Felipe
• A Ana segue o Beto e o Eduardo• Ninguém segue a Ana• O Daniel é seguido pelo Carlos e pelo Felipe• O Eduardo segue o Beto que o segue de volta
15
![Page 87: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/87.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices
16
![Page 88: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/88.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices
• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices
16
![Page 89: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/89.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices
16
![Page 90: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/90.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices
16
![Page 91: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/91.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices
16
![Page 92: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/92.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices
16
![Page 93: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/93.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente
• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices
16
![Page 94: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/94.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e
• os arcos representadas por curvas com uma seta naponta ligando dois vértices
16
![Page 95: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/95.jpg)
Grafos dirigidosUm Grafo dirigido (ou Digrafo)
• Tem um conjunto de vértices• Conectados através de um conjunto de arcos
– arestas dirigidas, indicando início e fim
Ana
BetoCarlos
Daniel
Eduardo Felipe
0
12
3
4 5
Representamos um digrafo visualmente• com os vértices representados por pontos e• os arcos representadas por curvas com uma seta na
ponta ligando dois vértices16
![Page 96: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/96.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)
• V é o conjunto de vértices do grafo• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)
– u é a cauda ou origem de (u, v)– v é a cabeça ou destino de (u, v)
– Podemos ter laços: arcos da forma (u, u)– Existe no máximo um arco (u, v) em A
17
![Page 97: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/97.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)• V é o conjunto de vértices do grafo
• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)
– u é a cauda ou origem de (u, v)– v é a cabeça ou destino de (u, v)
– Podemos ter laços: arcos da forma (u, u)– Existe no máximo um arco (u, v) em A
17
![Page 98: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/98.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)• V é o conjunto de vértices do grafo• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)
– u é a cauda ou origem de (u, v)– v é a cabeça ou destino de (u, v)
– Podemos ter laços: arcos da forma (u, u)– Existe no máximo um arco (u, v) em A
17
![Page 99: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/99.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)• V é o conjunto de vértices do grafo• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)
– u é a cauda ou origem de (u, v)– v é a cabeça ou destino de (u, v)
– Podemos ter laços: arcos da forma (u, u)– Existe no máximo um arco (u, v) em A
17
![Page 100: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/100.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)• V é o conjunto de vértices do grafo• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)– u é a cauda ou origem de (u, v)
– v é a cabeça ou destino de (u, v)– Podemos ter laços: arcos da forma (u, u)– Existe no máximo um arco (u, v) em A
17
![Page 101: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/101.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)• V é o conjunto de vértices do grafo• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)– u é a cauda ou origem de (u, v)– v é a cabeça ou destino de (u, v)
– Podemos ter laços: arcos da forma (u, u)– Existe no máximo um arco (u, v) em A
17
![Page 102: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/102.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)• V é o conjunto de vértices do grafo• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)– u é a cauda ou origem de (u, v)– v é a cabeça ou destino de (u, v)
– Podemos ter laços: arcos da forma (u, u)
– Existe no máximo um arco (u, v) em A
17
![Page 103: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/103.jpg)
Grafos dirigidos
0
12
3
4 5
Matematicamente, um digrafo G é um par (V, A)• V é o conjunto de vértices do grafo• A é o conjunto de arcos do grafo
– Representamos um arco ligando u, v ∈ V como (u, v)– u é a cauda ou origem de (u, v)– v é a cabeça ou destino de (u, v)
– Podemos ter laços: arcos da forma (u, u)– Existe no máximo um arco (u, v) em A
17
![Page 104: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/104.jpg)
Grafos e digrafosPodemos ver um grafo como um digrafo
0
12
3
4 5
Basta considerar cada aresta como dois arcos
• É o que já estamos fazendo na matriz de adjacências• Ou seja, podemos usar uma matriz de adjacências para
representar um digrafo
– adjacencia[u][v] == 1: temos um arco de u para v– pode ser que adjacencia[u][v] != adjacencia[v][u]
18
![Page 105: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/105.jpg)
Grafos e digrafosPodemos ver um grafo como um digrafo
0
12
3
4 5
Basta considerar cada aresta como dois arcos
• É o que já estamos fazendo na matriz de adjacências• Ou seja, podemos usar uma matriz de adjacências para
representar um digrafo
– adjacencia[u][v] == 1: temos um arco de u para v– pode ser que adjacencia[u][v] != adjacencia[v][u]
18
![Page 106: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/106.jpg)
Grafos e digrafosPodemos ver um grafo como um digrafo
0
12
3
4 5
Basta considerar cada aresta como dois arcos
• É o que já estamos fazendo na matriz de adjacências• Ou seja, podemos usar uma matriz de adjacências para
representar um digrafo
– adjacencia[u][v] == 1: temos um arco de u para v– pode ser que adjacencia[u][v] != adjacencia[v][u]
18
![Page 107: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/107.jpg)
Grafos e digrafosPodemos ver um grafo como um digrafo
0
12
3
4 5
Basta considerar cada aresta como dois arcos• É o que já estamos fazendo na matriz de adjacências
• Ou seja, podemos usar uma matriz de adjacências pararepresentar um digrafo
– adjacencia[u][v] == 1: temos um arco de u para v– pode ser que adjacencia[u][v] != adjacencia[v][u]
18
![Page 108: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/108.jpg)
Grafos e digrafosPodemos ver um grafo como um digrafo
0
12
3
4 5
Basta considerar cada aresta como dois arcos• É o que já estamos fazendo na matriz de adjacências• Ou seja, podemos usar uma matriz de adjacências para
representar um digrafo
– adjacencia[u][v] == 1: temos um arco de u para v– pode ser que adjacencia[u][v] != adjacencia[v][u]
18
![Page 109: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/109.jpg)
Grafos e digrafosPodemos ver um grafo como um digrafo
0
12
3
4 5
Basta considerar cada aresta como dois arcos• É o que já estamos fazendo na matriz de adjacências• Ou seja, podemos usar uma matriz de adjacências para
representar um digrafo– adjacencia[u][v] == 1: temos um arco de u para v
– pode ser que adjacencia[u][v] != adjacencia[v][u]
18
![Page 110: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/110.jpg)
Grafos e digrafosPodemos ver um grafo como um digrafo
0
12
3
4 5
Basta considerar cada aresta como dois arcos• É o que já estamos fazendo na matriz de adjacências• Ou seja, podemos usar uma matriz de adjacências para
representar um digrafo– adjacencia[u][v] == 1: temos um arco de u para v– pode ser que adjacencia[u][v] != adjacencia[v][u]
18
![Page 111: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/111.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 112: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/112.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 113: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/113.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 114: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/114.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 115: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/115.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 116: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/116.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 117: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/117.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 118: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/118.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 119: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/119.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 120: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/120.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 121: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/121.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 122: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/122.jpg)
Número de arestas de um grafo
Quantas arestas pode ter um grafo com n vértices?
0
0
1
0
1 2
0
1
2
3
0
1
2 3
4
01
2
3
45
6
7
8
9
No máximo(
n
2
)= n(n − 1)
2= O(n2) arestas
19
![Page 123: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/123.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 124: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/124.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês
• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 125: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/125.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 126: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/126.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 127: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/127.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)
• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 128: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/128.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 129: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/129.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições
– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 130: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/130.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...
– Facebook coloca um limite de 5000 amigos
20
![Page 131: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/131.jpg)
Grafos esparsos
Um grafo tem no máximo n(n − 1)/2 arestas, mas pode terbem menos...
Facebook tem 1,86 bilhões de usuários ativos/mês• Uma matriz de adjacências teria 3,4596 · 1018 posições
– 432.450 terabytes (usando um bit por posição)
• Verificar se duas pessoas são amigas leva O(1)• Mas imprimir todos os amigos de uma pessoa leva O(n)
– Teríamos que percorrer 1,86 bilhões de posições– Um usuário comum tem bem menos amigos do que isso...– Facebook coloca um limite de 5000 amigos
20
![Page 132: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/132.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 133: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/133.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 134: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/134.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:
• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 135: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/135.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 136: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/136.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos
– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 137: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/137.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 138: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/138.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 139: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/139.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)
– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 140: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/140.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 141: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/141.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 142: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/142.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso
• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 143: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/143.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...
• É da mesma ordem de grandeza que n2...
21
![Page 144: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/144.jpg)
Grafos esparsosDizemos que um grafo é esparso se ele tem “poucas” arestas
• Bem menos do que n(n − 1)/2
Exemplos:• Facebook:
– Cada usuário tem no máximo 5000 amigos– O máximo de arestas é 9,3 · 1012
– Bem menos do que 3,4596 · 1018
• Grafos que tem no grau máximo d (constante)– O número de arestas é dn/2 = O(n)
• Grafos com O(n lg n) arestas
Não dizemos que um grafo com n(n − 1)/20 arestas é esparso• O número de arestas não é assintoticamente menor...• É da mesma ordem de grandeza que n2...
21
![Page 145: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/145.jpg)
Listas de AdjacênciaRepresentando um grafo por Listas de Adjacência:
• Temos uma lista ligada para cada vértice• A lista armazena quais são os vizinhos do vértice
0
12
3
4 5
1 4
0 2 4
1 3 5
2 5
0 1 5
2 3
v[0]
v[1]
v[2]
v[3]
v[4]
v[5]
22
![Page 146: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/146.jpg)
Listas de AdjacênciaRepresentando um grafo por Listas de Adjacência:
• Temos uma lista ligada para cada vértice
• A lista armazena quais são os vizinhos do vértice
0
12
3
4 5
1 4
0 2 4
1 3 5
2 5
0 1 5
2 3
v[0]
v[1]
v[2]
v[3]
v[4]
v[5]
22
![Page 147: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/147.jpg)
Listas de AdjacênciaRepresentando um grafo por Listas de Adjacência:
• Temos uma lista ligada para cada vértice• A lista armazena quais são os vizinhos do vértice
0
12
3
4 5
1 4
0 2 4
1 3 5
2 5
0 1 5
2 3
v[0]
v[1]
v[2]
v[3]
v[4]
v[5]
22
![Page 148: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/148.jpg)
Listas de AdjacênciaRepresentando um grafo por Listas de Adjacência:
• Temos uma lista ligada para cada vértice• A lista armazena quais são os vizinhos do vértice
0
12
3
4 5
1 4
0 2 4
1 3 5
2 5
0 1 5
2 3
v[0]
v[1]
v[2]
v[3]
v[4]
v[5]
22
![Page 149: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/149.jpg)
Listas de AdjacênciaRepresentando um grafo por Listas de Adjacência:
• Temos uma lista ligada para cada vértice• A lista armazena quais são os vizinhos do vértice
0
12
3
4 5
1 4
0 2 4
1 3 5
2 5
0 1 5
2 3
v[0]
v[1]
v[2]
v[3]
v[4]
v[5]
22
![Page 150: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/150.jpg)
TAD Grafo com Listas de Adjacência1 typedef struct No {2 int v;3 struct No *prox;4 } No;56 typedef struct {7 No **adjacencia;8 int n;9 } Grafo;
1011 void inicia_grafo(Grafo *g, int n);1213 void destroi_grafo(Grafo g);1415 void insere_aresta(Grafo g, int u, int v);1617 void remove_aresta(Grafo g, int u, int v);1819 void tem_aresta(Grafo g, int u, int v);2021 void imprime_arestas(Grafo g);2223 ...
23
![Page 151: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/151.jpg)
Inicialização e Destruição1 void inicia_grafo(Grafo *g, int n) {2 int i;3 g->n = n;4 g->adjacencia = malloc(n * sizeof(No *));5 for (i = 0; i < n; i++)6 g->adjacencia[i] = NULL;7 }
1 void libera_lista(No *lista) {2 if (lista != NULL) {3 libera_lista(lista->prox);4 free(lista);5 }6 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g.n; i++)4 libera_lista(g.adjacencia[i]);5 free(g.adjacencia);6 }
24
![Page 152: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/152.jpg)
Inicialização e Destruição1 void inicia_grafo(Grafo *g, int n) {2 int i;3 g->n = n;4 g->adjacencia = malloc(n * sizeof(No *));5 for (i = 0; i < n; i++)6 g->adjacencia[i] = NULL;7 }
1 void libera_lista(No *lista) {2 if (lista != NULL) {3 libera_lista(lista->prox);4 free(lista);5 }6 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g.n; i++)4 libera_lista(g.adjacencia[i]);5 free(g.adjacencia);6 }
24
![Page 153: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/153.jpg)
Inicialização e Destruição1 void inicia_grafo(Grafo *g, int n) {2 int i;3 g->n = n;4 g->adjacencia = malloc(n * sizeof(No *));5 for (i = 0; i < n; i++)6 g->adjacencia[i] = NULL;7 }
1 void libera_lista(No *lista) {2 if (lista != NULL) {3 libera_lista(lista->prox);4 free(lista);5 }6 }
1 void destroi_grafo(Grafo g) {2 int i;3 for (i = 0; i < g.n; i++)4 libera_lista(g.adjacencia[i]);5 free(g.adjacencia);6 }
24
![Page 154: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/154.jpg)
Inserindo uma aresta
1 No * insere_na_lista(No *lista, int v) {2 No *novo = malloc(sizeof(No));3 novo->v = v;4 novo->prox = lista;5 return novo;6 }
1 void insere_aresta(Grafo g, int u, int v) {2 g.adjacencia[v] = insere_na_lista(g.adjacencia[v], u);3 g.adjacencia[u] = insere_na_lista(g.adjacencia[u], v);4 }
25
![Page 155: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/155.jpg)
Inserindo uma aresta
1 No * insere_na_lista(No *lista, int v) {2 No *novo = malloc(sizeof(No));3 novo->v = v;4 novo->prox = lista;5 return novo;6 }
1 void insere_aresta(Grafo g, int u, int v) {2 g.adjacencia[v] = insere_na_lista(g.adjacencia[v], u);3 g.adjacencia[u] = insere_na_lista(g.adjacencia[u], v);4 }
25
![Page 156: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/156.jpg)
Inserindo uma aresta
1 No * insere_na_lista(No *lista, int v) {2 No *novo = malloc(sizeof(No));3 novo->v = v;4 novo->prox = lista;5 return novo;6 }
1 void insere_aresta(Grafo g, int u, int v) {2 g.adjacencia[v] = insere_na_lista(g.adjacencia[v], u);3 g.adjacencia[u] = insere_na_lista(g.adjacencia[u], v);4 }
25
![Page 157: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/157.jpg)
Removendo uma aresta
1 No * remove_da_lista(No *lista, int v) {2 No *proximo;3 if (lista == NULL)4 return NULL;5 else if (lista->v == v) {6 proximo = lista->prox;7 free(lista);8 return proximo;9 } else {
10 lista->prox = remove_da_lista(lista->prox, v);11 return lista;12 }13 }
1 void remove_aresta(Grafo g, int u, int v) {2 g.adjacencia[u] = remove_da_lista(g.adjacencia[u], v);3 g.adjacencia[v] = remove_da_lista(g.adjacencia[v], u);4 }
26
![Page 158: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/158.jpg)
Removendo uma aresta
1 No * remove_da_lista(No *lista, int v) {2 No *proximo;3 if (lista == NULL)4 return NULL;5 else if (lista->v == v) {6 proximo = lista->prox;7 free(lista);8 return proximo;9 } else {
10 lista->prox = remove_da_lista(lista->prox, v);11 return lista;12 }13 }
1 void remove_aresta(Grafo g, int u, int v) {2 g.adjacencia[u] = remove_da_lista(g.adjacencia[u], v);3 g.adjacencia[v] = remove_da_lista(g.adjacencia[v], u);4 }
26
![Page 159: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/159.jpg)
Removendo uma aresta
1 No * remove_da_lista(No *lista, int v) {2 No *proximo;3 if (lista == NULL)4 return NULL;5 else if (lista->v == v) {6 proximo = lista->prox;7 free(lista);8 return proximo;9 } else {
10 lista->prox = remove_da_lista(lista->prox, v);11 return lista;12 }13 }
1 void remove_aresta(Grafo g, int u, int v) {2 g.adjacencia[u] = remove_da_lista(g.adjacencia[u], v);3 g.adjacencia[v] = remove_da_lista(g.adjacencia[v], u);4 }
26
![Page 160: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/160.jpg)
Verificando se tem a aresta e imprimindo
1 int tem_aresta(Grafo g, int u, int v) {2 No *t;3 for (t = g.adjacencia[u]; t != NULL; t = t->prox) {4 if (t->v == v)5 return 1;6 }7 return 0;8 }
1 void imprime_arestas(Grafo g) {2 int u;3 No *t;4 for (u = 0; u < g.n; u++) {5 for (t = g.adjacencia[u]; t != NULL; t = t->prox)6 printf("{%d,%d}\n", u, t->v);7 }8 }
27
![Page 161: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/161.jpg)
Verificando se tem a aresta e imprimindo
1 int tem_aresta(Grafo g, int u, int v) {2 No *t;3 for (t = g.adjacencia[u]; t != NULL; t = t->prox) {4 if (t->v == v)5 return 1;6 }7 return 0;8 }
1 void imprime_arestas(Grafo g) {2 int u;3 No *t;4 for (u = 0; u < g.n; u++) {5 for (t = g.adjacencia[u]; t != NULL; t = t->prox)6 printf("{%d,%d}\n", u, t->v);7 }8 }
27
![Page 162: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/162.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 163: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/163.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade
• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 164: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/164.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 165: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/165.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 166: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/166.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo
• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 167: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/167.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo
• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 168: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/168.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo
• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 169: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/169.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo• Provou que tal passeio não é possível
• E fundou a Teoria dos Grafos
28
![Page 170: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/170.jpg)
O Problema das Pontes de KönigsbergKönigsberg (hoje Kaliningrado, Rússia) tinha 7 pontes
• Acreditava-se que era possível passear por toda a cidade• Atravessando cada ponte exatamente uma vez
A
B
C
D
Leonhard Euler, em 1736, modelou o problema como um grafo• Provou que tal passeio não é possível• E fundou a Teoria dos Grafos
28
![Page 171: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/171.jpg)
Multigrafos
A
B
C
D
A estrutura usada por Euler é o que chamamos de Multigrafo
• Podemos ter arestas paralelas (ou múltiplas)• Ao invés de um conjunto de arestas, temos um
multiconjunto de arestas• Pode ser representada por Listas de Adjacência
– Por Matriz de Adjacências é mais difícil
29
![Page 172: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/172.jpg)
Multigrafos
A
B
C
D
A estrutura usada por Euler é o que chamamos de Multigrafo• Podemos ter arestas paralelas (ou múltiplas)
• Ao invés de um conjunto de arestas, temos ummulticonjunto de arestas
• Pode ser representada por Listas de Adjacência
– Por Matriz de Adjacências é mais difícil
29
![Page 173: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/173.jpg)
Multigrafos
A
B
C
D
A estrutura usada por Euler é o que chamamos de Multigrafo• Podemos ter arestas paralelas (ou múltiplas)• Ao invés de um conjunto de arestas, temos um
multiconjunto de arestas
• Pode ser representada por Listas de Adjacência
– Por Matriz de Adjacências é mais difícil
29
![Page 174: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/174.jpg)
Multigrafos
A
B
C
D
A estrutura usada por Euler é o que chamamos de Multigrafo• Podemos ter arestas paralelas (ou múltiplas)• Ao invés de um conjunto de arestas, temos um
multiconjunto de arestas• Pode ser representada por Listas de Adjacência
– Por Matriz de Adjacências é mais difícil
29
![Page 175: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/175.jpg)
Multigrafos
A
B
C
D
A estrutura usada por Euler é o que chamamos de Multigrafo• Podemos ter arestas paralelas (ou múltiplas)• Ao invés de um conjunto de arestas, temos um
multiconjunto de arestas• Pode ser representada por Listas de Adjacência
– Por Matriz de Adjacências é mais difícil29
![Page 176: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/176.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 177: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/177.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)
• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 178: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/178.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 179: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/179.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 180: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/180.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 181: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/181.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos
• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 182: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/182.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 183: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/183.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?
• Depende das operações usadas e se o grafo é esparso
30
![Page 184: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/184.jpg)
Comparação Listas e MatrizesEspaço para o armazenamento:
• Matriz: O(|V |2)• Listas: O(|V | + |E|)
Tempo:
Operação Matriz ListasInserir O(1) O(1)Remover O(1) O(d(v))Aresta existe? O(1) O(d(v))Percorrer vizinhança O(|V |) O(d(v))
As duas permitem representar grafos, digrafos e multigrafos• mas multigrafos é mais fácil com Listas de Adjacência
Qual usar?• Depende das operações usadas e se o grafo é esparso
30
![Page 185: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/185.jpg)
Importância dos GrafosGrafos são amplamente usados na Computação e naMatemática para a modelagem de problemas:
• Redes Sociais: grafos são a forma de representar umarelação entre duas pessoas
• Mapas: podemos ver o mapa de uma cidade como umgrafo e achar o menor caminho entre dois pontos
• Páginas na Internet: links são arcos de uma página para aoutra - podemos querer ver qual é a página mais popular
• Redes de Computadores: a topologia de uma rede decomputadores é um grafo
• Circuitos Eletrônicos: podemos criar algoritmos para verse há curto-circuito por exemplo
• etc...
31
![Page 186: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/186.jpg)
Importância dos GrafosGrafos são amplamente usados na Computação e naMatemática para a modelagem de problemas:
• Redes Sociais: grafos são a forma de representar umarelação entre duas pessoas
• Mapas: podemos ver o mapa de uma cidade como umgrafo e achar o menor caminho entre dois pontos
• Páginas na Internet: links são arcos de uma página para aoutra - podemos querer ver qual é a página mais popular
• Redes de Computadores: a topologia de uma rede decomputadores é um grafo
• Circuitos Eletrônicos: podemos criar algoritmos para verse há curto-circuito por exemplo
• etc...
31
![Page 187: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/187.jpg)
Importância dos GrafosGrafos são amplamente usados na Computação e naMatemática para a modelagem de problemas:
• Redes Sociais: grafos são a forma de representar umarelação entre duas pessoas
• Mapas: podemos ver o mapa de uma cidade como umgrafo e achar o menor caminho entre dois pontos
• Páginas na Internet: links são arcos de uma página para aoutra - podemos querer ver qual é a página mais popular
• Redes de Computadores: a topologia de uma rede decomputadores é um grafo
• Circuitos Eletrônicos: podemos criar algoritmos para verse há curto-circuito por exemplo
• etc...
31
![Page 188: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/188.jpg)
Importância dos GrafosGrafos são amplamente usados na Computação e naMatemática para a modelagem de problemas:
• Redes Sociais: grafos são a forma de representar umarelação entre duas pessoas
• Mapas: podemos ver o mapa de uma cidade como umgrafo e achar o menor caminho entre dois pontos
• Páginas na Internet: links são arcos de uma página para aoutra - podemos querer ver qual é a página mais popular
• Redes de Computadores: a topologia de uma rede decomputadores é um grafo
• Circuitos Eletrônicos: podemos criar algoritmos para verse há curto-circuito por exemplo
• etc...
31
![Page 189: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/189.jpg)
Importância dos GrafosGrafos são amplamente usados na Computação e naMatemática para a modelagem de problemas:
• Redes Sociais: grafos são a forma de representar umarelação entre duas pessoas
• Mapas: podemos ver o mapa de uma cidade como umgrafo e achar o menor caminho entre dois pontos
• Páginas na Internet: links são arcos de uma página para aoutra - podemos querer ver qual é a página mais popular
• Redes de Computadores: a topologia de uma rede decomputadores é um grafo
• Circuitos Eletrônicos: podemos criar algoritmos para verse há curto-circuito por exemplo
• etc...
31
![Page 190: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/190.jpg)
Importância dos GrafosGrafos são amplamente usados na Computação e naMatemática para a modelagem de problemas:
• Redes Sociais: grafos são a forma de representar umarelação entre duas pessoas
• Mapas: podemos ver o mapa de uma cidade como umgrafo e achar o menor caminho entre dois pontos
• Páginas na Internet: links são arcos de uma página para aoutra - podemos querer ver qual é a página mais popular
• Redes de Computadores: a topologia de uma rede decomputadores é um grafo
• Circuitos Eletrônicos: podemos criar algoritmos para verse há curto-circuito por exemplo
• etc...
31
![Page 191: MC-202 — Unidade 19 Grafosrafael/cursos/1s2017/mc... · UmGrafoé um conjunto de objetos ligados entre si ... Matematicamente,um grafoG é um par ordenado(V,E) • V é o conjunto](https://reader033.fdocument.pub/reader033/viewer/2022042205/5ea6fc4670d47d74ce6bf8cc/html5/thumbnails/191.jpg)
Importância dos GrafosGrafos são amplamente usados na Computação e naMatemática para a modelagem de problemas:
• Redes Sociais: grafos são a forma de representar umarelação entre duas pessoas
• Mapas: podemos ver o mapa de uma cidade como umgrafo e achar o menor caminho entre dois pontos
• Páginas na Internet: links são arcos de uma página para aoutra - podemos querer ver qual é a página mais popular
• Redes de Computadores: a topologia de uma rede decomputadores é um grafo
• Circuitos Eletrônicos: podemos criar algoritmos para verse há curto-circuito por exemplo
• etc...31