dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfd grafos,...

81
Dgrafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Upload: others

Post on 10-Mar-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Dıgrafos, arestas com pesos e menor caminho

Marcelo K. Albertini

25 de fevereiro de 2014

Page 2: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Grafo direcionado ou Dıgrafo

Conjunto de vertices conectados por arestas direcionadas.

1

2 3

4 5

Em dıgrafo existe grau de saıda e de grau de entrada: grau desaıda de 5 e 2 e grau de entrada de 5 e 1.

2/3

Page 3: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Aplicacoes de dıgrafos

dıgrafo vertice aresta direcionadatransportes cruzamentos ruas de mao-unica

web paginas web linkscadeia alimentar especies predador-presaescalonamento tarefa restricao de precedencia

financas banco transacaocelulares pessoa ligacao

DST pessoa infeccaojogos posicao tabuleiro movimento

literatura cientıfica artigo cientıfico citacaocoletor de lixo objeto ponteiro

3/3

Page 4: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

API de Dıgrafos

API similar a de Grafos

public class DigrafoDigrafo(int V) criar dıgrafo vazio com

V verticesDigrafo(InputStream in) criar dıgrafo a partir de

entradasvoid novaAresta(int v, int w) criar aresta

Iterable<Integer> adj(int v) vertices adjacentes a vint V() numero de verticesint E() numero de arestas

Digrafo reverter() digrafo com arestas re-versas

4/3

Page 5: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Problemas de dıgrafos

I Caminho. Existe um caminho direcionadode s para t?

I Menor caminho. Qual e o menor caminhodirecionado de s a t?

I Ordenacao topologica. E possıvelorganizar o dıgrafo de tal forma quenenhuma aresta aponta para baixo?

I Conectividade forte. Existe um caminhodirecionado entre todos os pares devertices?

I Cerco transitivo. Para quais vertices v e w

existe um caminho de v para w?

I PageRank. Qual e a importancia de umapagina web?

1

2

3

4

5/3

Page 6: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Representacao de um dıgrafo com listas de adjacencias

1

2

3

4

1 — 1 → 4 → 2 →

2 — 3 → 2 →

3 — 2 →

4 — 4 → 3 →

Implementacao muito similar aoGrafo, porem ao inserir aresta,so define o sentido pedido e naoos dois.

6/3

Page 7: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Problema: alcancabilidade

ProblemaEncontrar todos os vertices alcancaveis a partir de s.

Solucao

Busca em profundidade em dıgrafos. O codigo e igual ao utilizadoem grafos.

7/3

Page 8: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Problema: alcancabilidade

ProblemaEncontrar todos os vertices alcancaveis a partir de s.

Solucao

Busca em profundidade em dıgrafos. O codigo e igual ao utilizadoem grafos.

7/3

Page 9: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Aplicacao de alcancabilidade

Aplicacao

Analise do fluxo de controle de programas para verificacao de bugs.

I Codigo e representado por dıgrafoI Vertice: bloco de instrucoes sem desviosI Aresta: desvio do fluxo de operacoes (if, for, while,

func~ao, ...)

I E possıvel detectarI Regioes mortas - nunca alcancaveisI Loops infinitos - nunca e possıvel sair

8/3

Page 10: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Coletor de lixo

Cada estrutura de dados e um dıgrafo

I Vertice = objeto (struct)

I Aresta = referencia (ponteiro)

I Pontos de partidaI objetos diretamente acessaveis ao programa (exemplo: pilha)

I Objetos alcancaveisI indiretamente alcancaveis por referencias

I Objetos nao alcancaveis podem ser liberados

9/3

Page 11: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Algoritmo marcar-limpar

I Marcar-limpar (McCarthy, 1960)I Marcar todos os objetos alcancaveisI Limpar objetos nao marcados (lixo)

I Custo do algoritmoI 1 bit extra de marcacao por objetoI memoria temporariamente usada pela busca em profundidade

10/3

Page 12: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Problema do menor caminho

I Routeamento em mapas

I Navegacao de robos

I Planejamento de trafico urbano

I Planejamento de atividades em uma empresa

I Algoritmos de protocolos de roteamento

I Redimensionamento inteligente de imagens

E necessario

I Representar pesos em arestas no dıgrafoI Caminhar no dıgrafo e atualizar distancia

I ordem topologicaI algoritmo de Dijkstra

11/3

Page 13: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

API: Arestas com pesos

class Aresta implementsComparable<Aresta>

Aresta(int v, int w, double peso) criar aresta v-w compeso

int de() vertice origem daaresta

int para() vertice destino daaresta

double peso() peso associadoint compareTo(Aresta a) compara pesos

12/3

Page 14: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

API de Dıgrafos com pesos

public class DigrafoComPesoDigrafoComPeso(int V) criar dıgrafo vazio com

V verticesvoid novaAresta(Aresta a) criar aresta

Iterable<Aresta> adj(int v) vertices adjacentes a v

13/3

Page 15: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Representacao de um dıgrafo com listas de adjacenciascom pesos

1

2

3

4

0.10.3

0.2

1.3

1.72.3 2.6

3.1

1 — 1|0.2 → 4|0.1 → 2|0.3 →

2 — 3|1.7 → 2|1.3 →

3 — 2|2.3 →

4 — 4|3.1 → 3|2.6 →

Implementacao muito similar aoDıgrafo, porem ao inserir aresta,deve-se criar uma aresta com peso

antes.

14/3

Page 16: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

I Problema da precedenciaI Dado um cronograma, quais tarefas posso fazer antes?I Dados disciplinas e pre-requisitos, qual ordem de disciplinas

posso fazer?

0

2

1

5

4

3

6

0

2

15

4

3

6

15/3

Page 17: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

Problema

I Temos um grafo direcionado sem ciclos

I Objetivo: Redesenhar grafo, tal que todas as arestas apontampara o mesmo sentido.

Solucao

I Usar busca em profundidade.I Retornar vertices em pos-ordem reversa

I Pos-ordem ocorre apos usar cada vertice

16/3

Page 18: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

1 c l a s s OrdemTopologica {2 b o o l e a n [ ] marcado ;3 Stack<I n t e g e r > posOrdemRev ; // ordem t o p o l o g i c a45 p u b l i c OrdemTopologica ( D i g r a f o G) {6 posOrdemRev = new Stack<I n t e g e r >() ;7 marcado = new b o o l e a n [ G . V( ) ] ;8 f o r ( i n t v = 0 ; v < G . V( ) ; v++)9 i f ( ! marcado [ v ] ) d f s (G, V) ;

10 }1112 v o i d d f s ( D i g r a f o G, nt v ) { // busca em p r o f u n d i d a d e13 marcado [ v ] = t r u e ;14 f o r ( i n t w : G . a d j ( v ) )15 i f ( ! marcado [w ] ) d f s (G, w) ;16 posOrdemRev . push ( v ) ; // poe no topo da p i l h a17 }1819 p u b l i c I t e r a b l e <I n t e g e r > ordem ( ) {20 r e t u r n posOrdemRev ;21 }22 }

17/3

Page 19: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Um grafo direcionado semciclos.

0 → 50 → 20 → 13 → 63 → 53 → 45 → 46 → 46 → 03 → 21 → 4

18/3

Page 20: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {}

Acao

visita 0; avaliar 1; avaliar 2; e avaliar 5

19/3

Page 21: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {}

Acao

visita 0; avaliar 1; avaliar 2; e avaliar 5

20/3

Page 22: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {}

Acao

visita 1; avaliar 4;

21/3

Page 23: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {}

Acao

visita 1; avaliar 4;

22/3

Page 24: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {}

Acao

I visita 4;

I Nao ha adjacentes para avaliar

23/3

Page 25: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {}

Acao

I visita 4;

I Nao ha adjacentes para avaliar23/3

Page 26: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4}

Acao

I Nao ha adjacentes para avaliar

I Adicionar no caminho em pos-ordem24/3

Page 27: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4}

Acao

I vertice 4 terminou

I volta na recursao25/3

Page 28: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1}

Acao

I vertice 1 terminou, poe na pilha

26/3

Page 29: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1}

Acao

I vertice 1 terminou, poe na pilha

I volta na recursao27/3

Page 30: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1}

Acao

I visita 0; avaliar 1; avaliar 2; e avaliar 5

28/3

Page 31: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1}

Acao

I visita 0; avaliar 1; avaliar 2; e avaliar 5

29/3

Page 32: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1}

Acao

I visita 2;

30/3

Page 33: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2}

Acao

I visita 2;

I Terminou o 2. Empilha.31/3

Page 34: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2}

Acao

I Retorna na recursao.

32/3

Page 35: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2}

Acao

I visita 0; avaliar 1; avaliar 2; e avaliar 5

33/3

Page 36: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2}

Acao

I visita 0; avaliar 1; avaliar 2; e avaliar 5

34/3

Page 37: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2}

Acao

I visita 5; avaliar 2

35/3

Page 38: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2}

Acao

I visita 5; avaliar 2

I 2 ja esta marcado

36/3

Page 39: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2}

Acao

I visita 5; avaliar 2

I 2 ja esta marcado36/3

Page 40: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5}

Acao

I 2 ja esta marcado.

I Retorna recursao. Terminou o 5. Empilha.37/3

Page 41: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5}

Acao

I Terminou o 5. Retorna recursao.

38/3

Page 42: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I Terminou o 0. Empilha.

39/3

Page 43: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I Terminou a pos-ordem a partir de 0

I Ainda temos vertices nao marcados.40/3

Page 44: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I Procurar proximo nao marcado: 3

I visita 3; avaliar 2; avaliar 4; avaliar 5; e avaliar 6.41/3

Page 45: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 3; avaliar 2; avaliar 4; avaliar 5; e avaliar 6.

I 2 esta marcado.

42/3

Page 46: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 3; avaliar 2; avaliar 4; avaliar 5; e avaliar 6.

I 2 esta marcado.42/3

Page 47: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 3; avaliar 2;avaliar 4; avaliar 5; e avaliar 6.

I 4 esta marcado.43/3

Page 48: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 3; avaliar 2; avaliar 4; avaliar 5; e avaliar 6.

I 5 esta marcado.44/3

Page 49: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 3; avaliar 2; avaliar 4; avaliar 5; e avaliar 6.

I vertice 6 nao esta marcado.

45/3

Page 50: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 3; avaliar 2; avaliar 4; avaliar 5; e avaliar 6.

I vertice 6 nao esta marcado.45/3

Page 51: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 6; avaliar 0; e avaliar 4.

46/3

Page 52: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 6; avaliar 0; e avaliar 4.

I vertice 0 esta marcado.

47/3

Page 53: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 6; avaliar 0; e avaliar 4.

I vertice 0 esta marcado.47/3

Page 54: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 6; avaliar 0; e avaliar 4.

I vertice 4 esta marcado.

48/3

Page 55: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0}

Acao

I visita 6; avaliar 0; e avaliar 4.

I vertice 4 esta marcado.48/3

Page 56: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0, 6}

Acao

I visita 6; avaliar 0; e avaliar 4.

I Terminou o 6. Empilha.49/3

Page 57: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0, 6}

Acao

I Terminou o 6.

I Retorna na recursao.50/3

Page 58: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Ordenacao topologica

0

2 5 1

43

6

Pos-ordem - pilha

I {4, 1, 2, 5, 0, 6, 3}

Acao

I Terminou o 3. Empilha.

I Retorna nas recursoes e fim do algoritmo.51/3

Page 59: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Menor caminho em dıgrafos com pesos

Existem diferentes modalidades

I Uma origem, todos os destinos

I Uma origem, um destino

I Todos os pares

Queremos o custo e o caminho.

52/3

Page 60: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

1 c l a s s MenorCaminho {//em d ı g r a f o a c ı c l i c o c / p e s o s2 d o u b l e [ ] d i s t P a r a ; A r e s t a [ ] a r e s t a P a r a ;34 p u b l i c MenorCaminho ( D i g r a f o G, i n t or igem ) {5 a r e s t a P a r a = new A r e s t a [ G . V( ) ] ;6 d i s t P a r a = new d o u b l e [ G . V( ) ] ;78 f o r ( i n t v = 0 ; v < G . V( ) ; v++)9 d i s t P a r a [ v ] = Double . POSITIVE INFINITY ;

10 d i s t P a r a [ or igem ] = 0 . 0 ;1112 OrdemTopologica topo = new OrdemTopologica (G) ;13 f o r ( i n t v : topo . ordem ( ) )14 f o r ( A r e s t a a : G . a d j ( v ) ) e x p a n d i r ( a ) ;15 }1617 v o i d e x p a n d i r ( A r e s t a a ) {18 i n t v = a . de ( ) , w = a . para ( ) ;19 i f ( d i s t P a r a [w] > d i s t P a r a [ v ] + a . peso ( ) ) {20 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;21 a r e s t a P a r a [w] = a ;22 }23 }24 } 53/3

Page 61: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Menor caminho

0

2 5 1

43

6

0.1

0.30.6

1.43.3

3.2

3.7

3.5

4.2

0.6

4.6

Pos-ordem topologica -pilha

I {4, 1, 2, 5, 0, 6, 3}

distPara arestaPara0 inf1 inf2 inf3 inf4 inf5 inf6 inf

I Origem e o vertice 654/3

Page 62: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

1.43.3

3.2

3.7

3.5

4.2

0.6

4.6

Ordem topologica - pilha

I {4, 1, 2, 5, 0, 6, 3}

distPara arestaPara0 inf1 inf2 inf3 inf4 inf5 inf6 0

I Origem e o vertice 6

I Distancia a origem e 0

55/3

Page 63: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

1.43.3

3.2

3.7

3.5

4.2

0.6

4.6

I Pegar da pilha um vertice: 3

I Expandir arestas de 3 para 2, 4, 5, 6

Ordem topologica - pilha

I {4, 1, 2, 5, 0, 6, 3}

distPara arestaPara0 inf1 inf2 inf3 inf4 inf5 inf6 0

56/3

Page 64: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

1.43.3

3.2

3.7

3.5

4.2

0.6

4.6

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1, 2, 5, 0, 6, 3}

distPara arestaPara0 inf1 inf

w 2 infv 3 infw 4 infw 5 infw 6 0

I Expandir arestas de3 para 2, 4, 5, 6

I Tabela nao ealterada.

57/3

Page 65: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

3.33.2

3.7

3.5

0.1

0.30.6

1.4

4.2

0.6

4.6

I Pegar da pilha um vertice: 6

I Expandir arestas de 6 para 0 e 4

Ordem topologica - pilha

I {4, 1, 2, 5, 0, 6}

distPara arestaPara0 inf1 inf2 inf3 inf4 inf5 inf6 0

58/3

Page 66: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

3.33.2

3.7

3.5

0.1

0.30.6

1.4

4.2

0.6

4.6

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1, 2, 5, 0, 6}

distPara arestaParaw 0 inf

1 inf2 inf3 inf

w 4 inf5 inf

v 6 0

I Expandir de 6 para 0e 4

59/3

Page 67: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

3.33.2

3.7

3.5

0.1

0.30.6

1.4

4.2

0.6

4.6

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1, 2, 5, 0, 6}

distPara arestaParaw 0 0.6 6

1 inf2 inf3 inf

w 4 inf5 inf

v 6 0

I Expandir de 6 para 0e 4

60/3

Page 68: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

3.33.2

3.7

3.5

0.1

0.30.6

1.4

4.2

0.6

4.6

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1, 2, 5, 0, 6}

distPara arestaParaw 0 0.6 6

1 inf2 inf3 inf

w 4 4.6 65 inf

v 6 0

I Expandir de 6 para 0e 4

61/3

Page 69: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

3.33.2

3.7

3.5

0.6

4.6

0.1

0.30.6

1.4

4.2

I Pegar da pilha um vertice: 0

I Expandir arestas de 0 para 1, 2 e 5

Ordem topologica - pilha

I {4, 1, 2, 5, 0}

distPara arestaPara0 0.6 61 inf2 inf3 inf4 4.6 65 inf6 0

62/3

Page 70: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

3.33.2

3.7

3.5

0.6

4.6

0.1

0.30.6

1.4

4.2

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1, 2, 5, 0}

distPara arestaParav 0 0.6 6w 1 0.6 + 0.1 0w 2 0.6 + 0.3 0

3 inf4 4.6 6

w 5 0.6 + 0.6 06 0

I Expandir de 0 para 1,2 e 5

63/3

Page 71: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

3.33.2

3.7

3.5

0.6

4.6

0.1

0.30.6

1.4

4.2

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1, 2, 5, 0}

distPara arestaPara0 0.6 61 0.7 02 0.9 03 inf4 4.6 65 1.2 06 0

I Expandir de 0 para 1,2 e 5

64/3

Page 72: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

1.4

4.2

I Pegar da pilha um vertice: 5

I Expandir arestas de 5 para 2.

I Nao muda nada: 0.9 < 1.2+4.2!

Ordem topologica - pilha

I {4, 1, 2, 5}

distPara arestaPara0 0.6 61 0.7 02 0.9 03 inf4 4.6 65 1.2 06 0

65/3

Page 73: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

4.2

1.4

I Pegar da pilha um vertice: 2

I Nao tem para onde expandir.

Ordem topologica - pilha

I {4, 1, 2}

distPara arestaPara0 0.6 61 0.7 02 0.9 03 inf4 4.6 65 1.2 06 0

66/3

Page 74: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

4.2

1.4

I Pegar da pilha um vertice: 1

I Expandir de 1 para 4

Ordem topologica - pilha

I {4, 1}

distPara arestaPara0 0.6 61 0.7 02 0.9 03 inf4 4.6 65 1.2 06 0

67/3

Page 75: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

4.2

1.4

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1}

distPara arestaPara0 0.6 6

v 1 0.7 02 0.9 03 inf

w 4 4.6 65 1.2 06 0

I Expandir de 1 para 4.

I 4.6 > 0.7 + 1.4,atualizar tabela.

68/3

Page 76: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

4.2

1.4

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1}

distPara arestaPara0 0.6 6

v 1 0.7 02 0.9 03 inf

w 4 0.7 + 1.4 15 1.2 06 0

I Expandir de 1 para 4.

I 4.6 > 0.7 + 1.4,atualizar tabela.

69/3

Page 77: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

4.2

1.4

1 i f ( d i s t P a r a [w]> d i s t P a r a [ v ]+a . peso ( ) ) {2 d i s t P a r a [w] = d i s t P a r a [ v ] + a . peso ( ) ;3 a r e s t a P a r a [w] = a ;4 }

Ordem topologica - pilha

I {4, 1}

distPara arestaPara0 0.6 6

v 1 0.7 02 0.9 03 inf

w 4 2.1 15 1.2 06 0

I Expandir de 1 para 4.

I 4.6 > 0.7 + 1.4,atualizar tabela.

70/3

Page 78: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

4.2

1.4

I Pegar da pilha um vertice: 4

I Nao tem para onde expandir

Ordem topologica - pilha

I {4}

distPara arestaPara0 0.6 61 0.7 02 0.9 03 inf

v 4 2.1 15 1.2 06 0

71/3

Page 79: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

0

2 5 1

43

6

0.1

0.30.6

3.33.2

3.7

3.5

0.6

4.6

4.2

1.4

I Pilha esta vazia. Fim do algoritmo.

I Menores caminhos a partir de 6 estaoprontos para serem consultados.

Ordem topologica - pilha

I {}

distPara arestaPara0 0.6 61 0.7 02 0.9 03 inf4 2.1 15 1.2 06 0

72/3

Page 80: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Aplicacoes - Ordenacao topologica

I Deteccao de ciclos em grafos

I Verificar se sequencia de atividades e possıvel de respeitar

I Paralelizacao de algoritmos

I Linguagem de programacao: heranca cıclica em Java

I Recalculo de planilhas de dados

73/3

Page 81: Dígrafos, arestas com pesos e menor caminhoalbertini/2sem2013/ed2/slides/aula11.pdfD grafos, arestas com pesos e menor caminho Marcelo K. Albertini 25 de fevereiro de 2014

Aplicacoes - Menor caminho

I Roteamento em mapas (GPS)

I Gerencia de projetos - caminho crıtico

I Redimensionamento de imagens

I Planejamento de trafego urbano

I Protocolos de rede (OSPF, BGP)

I Comercio de moedas estrangeiras

74/3