Algoritmos em Grafos Buscas em Grafos Prof. André Renato 1º Semestre/2012.
Algoritmos e Estruturas de Dados II Grafos conceitos...
Transcript of Algoritmos e Estruturas de Dados II Grafos conceitos...
![Page 1: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/1.jpg)
Algoritmos e Estruturas de Dados II
Grafos – conceitos gerais
Thiago A. S. Pardo
Profa. M. Cristina
Material de aula da Profa.
Josiane M. Bueno
![Page 2: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/2.jpg)
2
Grafos - Motivação
Grafos: conceito introduzido por Euler, em 1736
– Problema da Ponte de Könisberg
Modelos matemáticos para resolver problemas
práticos do dia a dia
Muito usados para modelar problemas em
computação -> ênfase em aspectos
computacionais
![Page 3: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/3.jpg)
3
![Page 4: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/4.jpg)
4
Grafos - Motivação
Não é exatamente um problema de Ciência
da Computação...
Mas a Teoria dos Grafos permite que ele
seja resolvido automaticamente, usando o
computador como ferramenta
![Page 5: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/5.jpg)
5
Exemplos de estruturas que podem ser representadas como grafos
Circuitos elétricos
Redes de distribuição
Relações de parentesco entre pessoas
Rede de estradas entre cidades
Outros?
![Page 6: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/6.jpg)
6
Exemplo
![Page 7: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/7.jpg)
7
Exemplo
C
B
E
G
D
F
A
![Page 8: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/8.jpg)
8
Grafos
Definição
Grafo é modelo matemático que representa relações entre objetos. Um grafo G = (V,E)consiste de um conjunto de vértices V, ligados por um conjunto de arestas ou arcos E.
Representação :
V(G) = {v1,v2,v3,v4,v5,v6,v7}
E(G) = {(v1, v2); (v1,v5); (v2,v5); (v3,v4); (v5,v7)}
v1
v2
v3
v5
v6
v4
v7
![Page 9: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/9.jpg)
9
Grafos
Definição
A ordem de um grafo G é dada pela cardinalidade
do conjunto de vértices V(G), ou seja, pelo
número de vértices de G.
O número de arestas de um grafo é dado por
E(G). Assim, para o grafo do exemplo anterior:
E(G) = 5
V(G) = 7
![Page 10: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/10.jpg)
10
Grafos
Multigrafo
Quando um grafo possui mais de uma aresta
interligando os mesmos dois vértices diz-se que
este grafo possui arestas múltiplas (ou arestas
paralelas).
Um grafo simples não possui arestas múltiplas.
Caso contrário, trata-se de um multigrafo ou grafo
múltiplo. Por exemplo:
E = {(x,y); (y,x)}
V = {x, y}
V = 2 e E = 2x
y
Arestas múltiplas
![Page 11: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/11.jpg)
11
Grafos
Hipergrafo
Um grafo é chamado de hipergrafo quando
há arestas que conectam mais de 2 vértices
![Page 12: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/12.jpg)
12
Grafos
Grafo Trivial e Grafo Vazio
Um grafo é dito trivial se for de ordem 0 ou 1.
Por exemplo:
v1E =
V = {v1}
V = 1 e E = 0
Um grafo vazio G=(, ) pode ser
representado somente por G = .
![Page 13: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/13.jpg)
13
Grafos
Laço
Se houver uma aresta e do grafo G que
possui o mesmo vértice como extremos, ou
seja, e=(x,x), então é dito que este grafo
possui um laço.
Exemplo:
v1
E = {(v1, v1)}
V =
{v1}
V = 1 e E = 1
laço
![Page 14: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/14.jpg)
14
Grafos
Vértices Adjacentes
Diz-se que os vértices x e y são adjacentes
(ou vizinhos) quando estes forem os
extremos de uma mesma aresta e=(x,y).
Assim:
v3 é adjacente a v4
v5 NÃO é adjacente a v4
v4 é adjacente a v3
![Page 15: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/15.jpg)
15
Grafos
Arestas Adjacentes
Diz-se que duas arestas são adjacentes (ou
vizinhas) quando estas possuírem um
mesmo extremo, ou vértice.
Assim:
(v1,v2) é adjacente a (v2,v5)
(v1,v2) NÃO é adjacente a (v3,v4)
A aresta e =(v3,v4) é dita incidente a v3 e a v4
![Page 16: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/16.jpg)
16
Grafos
Grafo Completo
Um grafo é completo se todos os seus
vértices forem adjacentes. Um grafo
completo Kn possui n(n-1)/2 arestas.
Exemplo:
v1
v2 v3
v5
v4E = {(v1, v2),(v1, v3),(v1, v4),(v1, v5),
(v2, v3),(v2, v4),(v2, v5),
(v3, v4),(v3, v5),(v4, v5)}
V = {v1,v2,v3,v4,v5}
V = 5 e E = 5(5-1)/2 = 10 Grafo K5
![Page 17: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/17.jpg)
17
Grafos
Grafos Completos
![Page 18: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/18.jpg)
18
Grafos
Grafos Completos
Um grafo completo Kn possui n(n-1)/2
arestas
– Por quê?
![Page 19: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/19.jpg)
19
Grafos
Exercícios de Fixação
Qual a ordem e o número de arestas de cada grafo?
Quais dos grafos acima são completos?
Quais dos grafos acima são simples?
No grafo (a), quais vértices são adjacentes a v3? E quais
arestas são adjacentes a (v3,v5)?
(a) (b) (c)
![Page 20: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/20.jpg)
20
Grafos
Aplicações
v4
![Page 21: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/21.jpg)
21
Grafos
Aplicações
João
Paulo
Maria
Joana
Antonia
Rede de Relacionamentos (relação “Conhecer”):
Lili
Raimundo
![Page 22: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/22.jpg)
22
Grafos
Aplicações
Rede de
Relacionamentos
(relação “amizade”):
Quem possui mais amigos?
E menos amigos?
José
Dirceu
Lula D.Marisa
Genoíno
ACM
![Page 23: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/23.jpg)
23
Grafos
Aplicações
José
Dirceu
Lula D.Marisa
Genoíno
ACM
Grafo sem laço
José
Dirceu
Lula D.Marisa
Genoíno
ACM
Grafo com laço
![Page 24: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/24.jpg)
24
Grafos
Aplicações
Cada vértice é uma tarefa de um grande projeto. Há uma aresta de x a y se x é pré-requisito de y, ou seja, se x deve estar pronta antes que y possa começar.
Cada vértice é uma página na teia WWW. Cada aresta é um link que leva de uma página a outra (Há cerca de 2 milhões de vértices e 5 milhões de arcos).
Outros: Redes de computadores, rotas de vôos, redes de telefonia etc
![Page 25: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/25.jpg)
25
Grafos
Aplicações
“João amava Teresa que amava Raimundo que amava
Maria que amava Joaquim que amava Lili que não
amava ninguém...” (Carlos Drummond de Andrade)
João
TeresaJoaquim
Raimundo
MariaLili
![Page 26: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/26.jpg)
26
Grafos
Aplicações
O Grafo ´sou fã de…´
Fã-3
Elvis
Presley
Fã-1
Fã-2
Não-Fã
![Page 27: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/27.jpg)
27
Grafos
Aplicações
Internet
![Page 28: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/28.jpg)
28
Grafos
Aplicações
É possível conectar os 3 serviços às 3
casas sem haver cruzamento de tubulação?
água luz telefone
![Page 29: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/29.jpg)
29
Grafos
Aplicações
Quantas cores são necessárias para colorir o mapa do Brasil,
sendo que estados adjacentes não podem ter a mesma cor?
![Page 30: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/30.jpg)
30
Grafos
Aplicações
De forma a reduzir seus custos operacionais, uma empresa
de transporte de cargas deseja oferecer aos motoristas de
sua frota um mecanismo que os auxilie a selecionar o melhor
caminho (o de menor distância) entre quaisquer duas
cidades por ela servidas, de forma a que sejam minimizados
os custos de transporte
![Page 31: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/31.jpg)
31
Grafos
Aplicações
De forma a reduzir seus custos operacionais, uma empresa
de transporte de cargas deseja oferecer aos motoristas de
sua frota um mecanismo que os auxilie a selecionar o melhor
caminho (o de menor distância) entre quaisquer duas
cidades por ela servidas, de forma a que sejam minimizados
os custos de transporte
![Page 32: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/32.jpg)
32
Grafos
Orientados
Um grafo orientado (ou dígrafo) D = (V,E)
consiste de um conjunto V (vértices) e de
um conjunto de E (arestas) de pares
ordenados de vértices distintos.
Representação :
V(G) = {v1,v2,v3,v4}
E(G) = {(v1, v2); (v3,v1); (v2,v3); (v3,v4); (v4,v3)}
v1
v2
v4v3
![Page 33: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/33.jpg)
33
Grafos
Orientados
Em um grafo orientado, cada aresta e = (x,
y) possui uma única direção de x para y.
Diz-se que (x, y) é divergente de x e
convergente a y. Assim:
(v3,v1) é divergente de v3
(v3,v1) é convergente a v1
![Page 34: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/34.jpg)
34
Grafos
Orientados
Em grafos orientados, em (x,y) tem-se que
y é adjacente a x, mas não oposto.
Se o grafo é orientado ou não, x e y são
“vizinhos”
(v3,v1) v1 é adjacente a v3
(v3,v1) v1 e v3 são vizinhos
![Page 35: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/35.jpg)
35
Grafos
Grau
O Grau d(v) de um vértice v corresponde ao
número de vértices adjacentes a v (ou ao
número de arestas incidentes a v).
Exemplo:
d(v1) = d(v2) = 2
d(v6) = 0
d(v3) = d(v4) = d(v7) = 1
d(v5) = 3
![Page 36: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/36.jpg)
36
Grafos
Grau
din(v3) = 2 e dout(v3) = 2
din(v1) = din(v2) = din(v4) = 1
dout(v1) = dout(v2) = dout(v4) = 1
Em um grafo orientado:
– O Grau de Saída dout(v) de um vértice v
corresponde ao número de arestas divergentes
(que saem) de v.
– O Grau de Entrada din(v) de um vértice v
corresponde ao número de arestas
convergentes (que chegam) a v.
![Page 37: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/37.jpg)
37
Grafos
Grau
Um vértice com grau de saída nulo, ou seja, dout(v) = 0, é chamado de sumidouro (ou sorvedouro)
Um vértice com grau de entrada nulo, ou seja, din(v) = 0, é chamado de fonte
Diz-se que um grafo é regular se todos os seus vértices tiverem o mesmo grau
![Page 38: Algoritmos e Estruturas de Dados II Grafos conceitos geraiswiki.icmc.usp.br/images/1/1f/Grafosconceitosgerais1a.pdf · Algoritmos e Estruturas de Dados II Grafos –conceitos gerais](https://reader034.fdocumentos.tips/reader034/viewer/2022051917/6009cd4ec5404e3500551502/html5/thumbnails/38.jpg)
38
Grafos
Exercício de Fixação
O grafo (a) é regular? Por quê?
Existe alguma fonte ou sumidouro no grafo
(b)?
(a) (b)