algoritmos em grafos -...
TRANSCRIPT
Grafos Representação Número de Erdõs
Algoritmos em Grafos
Letícia Rodrigues Bueno
UFABC
Grafos Representação Número de Erdõs
Motivação
• Objetivo: aprender a resolver problemas;
• Como: usando grafos para modelar problemas;
• Grafos: ferramenta fundamental de abstração;
• Abstraímos problema real (usando grafos) e solucionamosatravés de algoritmos;
Grafos Representação Número de Erdõs
Definição de Grafos
• Wikipedia (2012): “...conjunto de pontos (vértices) ligadospor retas (as arestas)”
• Abstração que permite codificar relacionamentos entrepares de objetos;
• Objetos: cidades, pessoas, países, empresas, etc;
• Relacionamentos: amizade, conectividade, idioma, etc;
Grafos Representação Número de Erdõs
Supervisão de pós-graduação
Grafos Representação Número de Erdõs
Supervisão de pós-graduação
RenataAndreia Felipe Jorge
Rodrigo Leticia
Grafos Representação Número de Erdõs
Vôos AéreosAzul Linhas Aéreas, retirado de: http://www.voeazul.com.br/
Grafos Representação Número de Erdõs
Vôos Aéreos
Webjet Linhas Aéreas, retirado de: http://www.webjet.com.br/
Grafos Representação Número de Erdõs
Vôos Aéreos
TAM Linhas Aéreas, retirado de: http://www.tam.com.br/
Grafos Representação Número de Erdõs
Número de Bacon
Fonte: http://oracleofbacon.org/
Grafos Representação Número de Erdõs
Número de Bacon
Fonte: http://oracleofbacon.org/
Grafos Representação Número de Erdõs
Representação Computacional: Lista de Adjacências
(a) G (b) Lista de Adjacências de G
Vantagem: espaço em memória Θ(n + m).Desvantagem: determinar se aresta está em G exigepercorrer lista de adjacências.
Grafos Representação Número de Erdõs
Representação Computacional: Matriz de Adjacências
(c) H (d) Matriz de Adjacências de H
Vantagem: determinar se aresta está em G exige O(1).Desvantagem: espaço em memória Θ(n2).
Grafos Representação Número de Erdõs
Representação Computacional: E esse grafo?
1112
13 1
2 4
7
35
6
14
1098
(e) G1
Grafos Representação Número de Erdõs
Problema 1: Número de Erdõs
• Paul Erdõs: famoso matemático hungáro;
• Trabalhou com centenas decolaboradores;
• Publicou mais de 1.400 artigos;
• Número de Erdõs é um tributo divertidocriado pelos amigos;
• Paul Erdõs tem número de Erdõs 0;
• Os colaboradores diretos tem número 1;
• Os colaboradores dos colaboradores temnúmero 2 e assim por diante;
Grafos Representação Número de Erdõs
Definição
• Dada uma lista de pessoas e as relações de colaboraçãoentre elas, qual é o número de Erdõs de cada pessoa?
Grafos Representação Número de Erdõs
Definição
• Dada uma lista de pessoas e as relações de colaboraçãoentre elas, qual é o número de Erdõs de cada pessoa?
• Este problema pode ser modelado através de um grafo:• As pessoas são os vértices;• As relações de colaboração são as arestas.
Grafos Representação Número de Erdõs
Exemplo
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
0
Grafos Representação Número de Erdõs
Busca em Largura (BFS - Breadth-First Search)
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
0
Grafos Representação Número de Erdõs
Busca em Largura (BFS - Breadth-First Search)
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
0
Erdos
Grafos Representação Número de Erdõs
Busca em Largura (BFS - Breadth-First Search)
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
1 1
1
1
1
0
Chvatal Lovasz Babai Hell Harary
Grafos Representação Número de Erdõs
Busca em Largura (BFS - Breadth-First Search)
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
1 1
1
1
1
2
2
2
22
0
Bondy Imrich Watkins Deng White
Grafos Representação Número de Erdõs
Busca em Largura (BFS - Breadth-First Search)
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
1 1
1
1
1
2
2
2
22
3
3
0
Murty Papadimitriou
Grafos Representação Número de Erdõs
Busca em Largura (BFS - Breadth-First Search)
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
1 1
1
1
1
2
2
2
22
3
3
4
0
Gates
Grafos Representação Número de Erdõs
Busca em Largura (BFS - Breadth-First Search)
Erdos
Hell
Papadimitriou
Gates
Deng
Harary
White
Murty
Bondy
Chvatal
Lovasz
Babai
Imrich
Watkins
Grafos Representação Número de Erdõs
Algoritmo BFS
1 bfs(G, s):2 para u em V(G) faça3 u.visitado = False4 u.d = ∞5 u.p = None6 s.visitado = True7 s.d = 08 Q = Fila()9 insere(Q, s)
10 enquanto tamanho(Q) > 0 faça11 u = remove(Q)12 para v em adj(u) faça13 se não v.visitado então14 v.d = u.d + 115 v.p = u16 v.visitado = True17 insere(Q, v)
Grafos Representação Número de Erdõs
Algoritmo BFS
1 bfs(G, s):2 para u em V(G) faça3 u.visitado = False4 u.d = ∞5 u.p = None6 s.visitado = True7 s.d = 08 Q = Fila()9 insere(Q, s)
10 enquanto tamanho(Q) > 0 faça11 u = remove(Q)12 para v em adj(u) faça13 se não v.visitado então14 v.d = u.d + 115 v.p = u16 v.visitado = True17 insere(Q, v)
Análise da complexidade:
Grafos Representação Número de Erdõs
Algoritmo BFS
1 bfs(G, s):2 para u em V(G) faça3 u.visitado = False4 u.d = ∞5 u.p = None6 s.visitado = True7 s.d = 08 Q = Fila()9 insere(Q, s)
10 enquanto tamanho(Q) > 0 faça11 u = remove(Q)12 para v em adj(u) faça13 se não v.visitado então14 v.d = u.d + 115 v.p = u16 v.visitado = True17 insere(Q, v)
Análise da complexidade:
• Cada vérticeadicionado uma vezna fila (linha 17): O(n)
Grafos Representação Número de Erdõs
Algoritmo BFS
1 bfs(G, s):2 para u em V(G) faça3 u.visitado = False4 u.d = ∞5 u.p = None6 s.visitado = True7 s.d = 08 Q = Fila()9 insere(Q, s)
10 enquanto tamanho(Q) > 0 faça11 u = remove(Q)12 para v em adj(u) faça13 se não v.visitado então14 v.d = u.d + 115 v.p = u16 v.visitado = True17 insere(Q, v)
Análise da complexidade:
• Cada vérticeadicionado uma vezna fila (linha 17): O(n)
• A lista de adjacênciade cada vérticepercorrida uma vez(linha 12): O(m)
Grafos Representação Número de Erdõs
Algoritmo BFS
1 bfs(G, s):2 para u em V(G) faça3 u.visitado = False4 u.d = ∞5 u.p = None6 s.visitado = True7 s.d = 08 Q = Fila()9 insere(Q, s)
10 enquanto tamanho(Q) > 0 faça11 u = remove(Q)12 para v em adj(u) faça13 se não v.visitado então14 v.d = u.d + 115 v.p = u16 v.visitado = True17 insere(Q, v)
Análise da complexidade:
• Cada vérticeadicionado uma vezna fila (linha 17): O(n)
• A lista de adjacênciade cada vérticepercorrida uma vez(linha 12): O(m)
• Complexidade total:O(n + m)
Grafos Representação Número de Erdõs
Exercícios
1. Considere G = (V ,E), n = |V |, m = |E | e grafosnão-orientados. Calcule a complexidade no pior caso de:
ProblemaMatriz Lista
Adjacências AdjacênciasEspaço em memóriaBuscar vértices adjacentesde um vértice vConferir adjacênciados vértices u e vVisitar todas as arestasCalcular o graude um vértice v
Grafos Representação Número de Erdõs
Bibliografia Utilizada
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C.Introduction to Algorithms, 3a edição, MIT Press, 2009.