Ordenação Topológica em Grafos

108
Algoritmos e Estruturas de Dados II Ordenação Topológica em Grafos Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info

Transcript of Ordenação Topológica em Grafos

Page 1: Ordenação Topológica em Grafos

Algoritmos e Estruturas de Dados II

Ordenação Topológica em Grafos

Prof. Tiago Eugenio de [email protected]

www.tiagodemelo.info

Page 2: Ordenação Topológica em Grafos

Observações

● As palavras com a fonte Courier indicam as palavras-reservadas da linguagem de programação.

2 / 51

Page 3: Ordenação Topológica em Grafos

Referências

● Projetos de Algoritmos – com implementações em Pascal e C. Nivio Ziviani. 2a edição. Thomson, 2005.

● Material baseado nas notas de aula do professor Edirlei Soares de Lima. Acessado em 12/11/2019: http://edirlei.3dgb.com.br

● Material baseado nas notas de aula do professor Marco Antônio Moreira de Carvalho. Acessado em 01/11/2019: http://www.decom.ufop.br/marco/ensino/bcc204/material-das-aulas

3 / 51

Page 4: Ordenação Topológica em Grafos

Ordenação Topológica

4 / 51

Page 5: Ordenação Topológica em Grafos

Ordenação Topológica

5 / 51

Page 6: Ordenação Topológica em Grafos

Ordenação Topológica

● Uma ordenação topológica de um grafo acíclico direcionado (GAD) é uma ordenação linear de seus vértices, na qual cada vértice aparece antes de seus descendentes.

5 / 51

Page 7: Ordenação Topológica em Grafos

Ordenação Topológica

● Uma ordenação topológica de um grafo acíclico direcionado (GAD) é uma ordenação linear de seus vértices, na qual cada vértice aparece antes de seus descendentes.

● Exemplo:

5 / 51

Page 8: Ordenação Topológica em Grafos

Ordenação Topológica

● Uma ordenação topológica de um grafo acíclico direcionado (GAD) é uma ordenação linear de seus vértices, na qual cada vértice aparece antes de seus descendentes.

● Exemplo:

5 / 51

Page 9: Ordenação Topológica em Grafos

Ordenação Topológica

6 / 51

Page 10: Ordenação Topológica em Grafos

Ordenação Topológica

● O grafo abaixo pode ter muitas ordenações topológicas.

6 / 51

Page 11: Ordenação Topológica em Grafos

Ordenação Topológica

● O grafo abaixo pode ter muitas ordenações topológicas.

6 / 51

Page 12: Ordenação Topológica em Grafos

Ordenação Topológica

● O grafo abaixo pode ter muitas ordenações topológicas.

6 / 51

Page 13: Ordenação Topológica em Grafos

Ordenação Topológica

● O grafo abaixo pode ter muitas ordenações topológicas.

● Não necessariamente a única.● Exemplo:

6 / 51

Page 14: Ordenação Topológica em Grafos

Ordenação Topológica

● O grafo abaixo pode ter muitas ordenações topológicas.

● Não necessariamente a única.● Exemplo:

7, 5, 3, 11, 8, 2, 9, 10

6 / 51

Page 15: Ordenação Topológica em Grafos

Ordenação Topológica

● O grafo abaixo pode ter muitas ordenações topológicas.

● Não necessariamente a única.● Exemplo:

7, 5, 3, 11, 8, 2, 9, 10

3, 5, 7, 8, 11, 2, 9, 10

6 / 51

Page 16: Ordenação Topológica em Grafos

Ordenação Topológica

● O grafo abaixo pode ter muitas ordenações topológicas.

● Não necessariamente a única.● Exemplo:

7, 5, 3, 11, 8, 2, 9, 10

3, 5, 7, 8, 11, 2, 9, 10

5, 7, 3, 8, 11, 10, 2, 9

6 / 51

Page 17: Ordenação Topológica em Grafos

Ordenação Topológica

7 / 51

Page 18: Ordenação Topológica em Grafos

Ordenação Topológica

● Caso um grafo possua ciclos ou seja não direcionado, não é possível estabelecer uma relação de precedência entre os vértices e, portanto, é impossível estabelecer uma ordenação topológica.

7 / 51

Page 19: Ordenação Topológica em Grafos

Ordenação Topológica

● Caso um grafo possua ciclos ou seja não direcionado, não é possível estabelecer uma relação de precedência entre os vértices e, portanto, é impossível estabelecer uma ordenação topológica.

● Exemplo:

7 / 51

Page 20: Ordenação Topológica em Grafos

Ordenação Topológica

● Caso um grafo possua ciclos ou seja não direcionado, não é possível estabelecer uma relação de precedência entre os vértices e, portanto, é impossível estabelecer uma ordenação topológica.

● Exemplo:

7 / 51

Page 21: Ordenação Topológica em Grafos

Aplicações

8 / 51

Page 22: Ordenação Topológica em Grafos

Aplicações

● Roteiro de instalação de pacotes.

8 / 51

Page 23: Ordenação Topológica em Grafos

Aplicações

● Roteiro de instalação de pacotes.● O make (makefile).

8 / 51

Page 24: Ordenação Topológica em Grafos

Aplicações

● Roteiro de instalação de pacotes.● O make (makefile).● Confecção de dicionários.

8 / 51

Page 25: Ordenação Topológica em Grafos

Aplicações

● Roteiro de instalação de pacotes.● O make (makefile).● Confecção de dicionários.● Organização de banco de dados.

8 / 51

Page 26: Ordenação Topológica em Grafos

Aplicações

● Roteiro de instalação de pacotes.● O make (makefile).● Confecção de dicionários.● Organização de banco de dados.● Sistemas geográficos.

8 / 51

Page 27: Ordenação Topológica em Grafos

Aplicações

● Roteiro de instalação de pacotes.● O make (makefile).● Confecção de dicionários.● Organização de banco de dados.● Sistemas geográficos.● Alocação de projetos.

8 / 51

Page 28: Ordenação Topológica em Grafos

Histórico

9 / 51

Page 29: Ordenação Topológica em Grafos

Histórico

● Algoritmos de ordenação topológica começaram a ser estudados na década de 60, no contexto da técnica PERT/CPM.

9 / 51

Page 30: Ordenação Topológica em Grafos

Histórico

● Algoritmos de ordenação topológica começaram a ser estudados na década de 60, no contexto da técnica PERT/CPM.

● O PERT prevê o cálculo da duração de atividades complexas a partir da duração possível dessas atividades.

9 / 51

Page 31: Ordenação Topológica em Grafos

Histórico

● Algoritmos de ordenação topológica começaram a ser estudados na década de 60, no contexto da técnica PERT/CPM.

● O PERT prevê o cálculo da duração de atividades complexas a partir da duração possível dessas atividades.

● Exemplo:

9 / 51

Page 32: Ordenação Topológica em Grafos

Histórico

● Algoritmos de ordenação topológica começaram a ser estudados na década de 60, no contexto da técnica PERT/CPM.

● O PERT prevê o cálculo da duração de atividades complexas a partir da duração possível dessas atividades.

● Exemplo:

9 / 51

Page 33: Ordenação Topológica em Grafos

Histórico

● O CPM é um método de identificação do caminho crítico dada uma sequência de atividades, isto é, quais atividades de uma sequência não podem sofrer alteração de duração sem que isso reflita na duração final de um projeto.

10 / 51

Page 34: Ordenação Topológica em Grafos

Exemplo

11 / 51

Page 35: Ordenação Topológica em Grafos

Exemplo

● Um exemplo simples do encadeamento de atividades é relacionado na tabela abaixo para a fabricação de uma estante.

11 / 51

Page 36: Ordenação Topológica em Grafos

Exemplo

● Um exemplo simples do encadeamento de atividades é relacionado na tabela abaixo para a fabricação de uma estante.

11 / 51

Page 37: Ordenação Topológica em Grafos

Exemplo (cont.)

12 / 51

Page 38: Ordenação Topológica em Grafos

Exemplo (cont.)

● Considerando que a coluna duração tenha sido calculada pelo método PERT, é possível, com base na tabela, organizar um grafo do sequenciamento lógico das atividades de fabricação da estante:

12 / 51

Page 39: Ordenação Topológica em Grafos

Exemplo (cont.)

● Considerando que a coluna duração tenha sido calculada pelo método PERT, é possível, com base na tabela, organizar um grafo do sequenciamento lógico das atividades de fabricação da estante:– Os vértices representam eventos instantâneos que

caracterizam o início e o término das atividades específicas nos arcos.

12 / 51

Page 40: Ordenação Topológica em Grafos

Exemplo (cont.)

● Considerando que a coluna duração tenha sido calculada pelo método PERT, é possível, com base na tabela, organizar um grafo do sequenciamento lógico das atividades de fabricação da estante:– Os vértices representam eventos instantâneos que

caracterizam o início e o término das atividades específicas nos arcos.

– A sequência das atividades é o principal ponto destacado.

12 / 51

Page 41: Ordenação Topológica em Grafos

Exemplo (cont.)

● Considerando que a coluna duração tenha sido calculada pelo método PERT, é possível, com base na tabela, organizar um grafo do sequenciamento lógico das atividades de fabricação da estante:– Os vértices representam eventos instantâneos que

caracterizam o início e o término das atividades específicas nos arcos.

– A sequência das atividades é o principal ponto destacado.– O arco pontilhado representa a dependência lógica da

atividade de montagem das tábuas em relação à atividade de compra dos parafusos.

12 / 51

Page 42: Ordenação Topológica em Grafos

Exemplo (cont.)

● Considerando que a coluna duração tenha sido calculada pelo método PERT, é possível, com base na tabela, organizar um grafo do sequenciamento lógico das atividades de fabricação da estante:– Os vértices representam eventos instantâneos que

caracterizam o início e o término das atividades específicas nos arcos.

– A sequência das atividades é o principal ponto destacado.– O arco pontilhado representa a dependência lógica da atividade

de montagem das tábuas em relação à atividade de compra dos parafusos.

– Essa atividade é denominada de atividade fantasma e sua duração é igual a zero (instantânea).

12 / 51

Page 43: Ordenação Topológica em Grafos

Exemplo (cont.)

13 / 51

Page 44: Ordenação Topológica em Grafos

Exemplo (cont.)

13 / 51

Page 45: Ordenação Topológica em Grafos

Exemplo (cont.)

13 / 51

Page 46: Ordenação Topológica em Grafos

Exemplo (cont.)

14 / 51

Page 47: Ordenação Topológica em Grafos

Exemplo (cont.)

● É possível ainda representar a duração de cada atividade representada no grafo e calcular o tempo mais curto (Tc) e o tempo mais longo de conclusão das tarefas (Tl).

14 / 51

Page 48: Ordenação Topológica em Grafos

Exemplo (cont.)

● É possível ainda representar a duração de cada atividade representada no grafo e calcular o tempo mais curto (Tc) e o tempo mais longo de conclusão das tarefas (Tl).

14 / 51

Page 49: Ordenação Topológica em Grafos

Exemplo (cont.)

15 / 51

Page 50: Ordenação Topológica em Grafos

Exemplo (cont.)

● Alternativamente, o grafo resultante pode ser modelado de outra maneira:

15 / 51

Page 51: Ordenação Topológica em Grafos

Exemplo (cont.)

● Alternativamente, o grafo resultante pode ser modelado de outra maneira:– Tarefas a serem desempenhadas em um projeto

são representadas por vértices.

15 / 51

Page 52: Ordenação Topológica em Grafos

Exemplo (cont.)

● Alternativamente, o grafo resultante pode ser modelado de outra maneira:– Tarefas a serem desempenhadas em um projeto

são representadas por vértices.– Existe um arco entre as tarefas v e w, caso a tarefa v obrigatoriamente deva ser terminada antes que a tarefa w comece.

15 / 51

Page 53: Ordenação Topológica em Grafos

Exemplo (cont.)

● Alternativamente, o grafo resultante pode ser modelado de outra maneira:– Tarefas a serem desempenhadas em um projeto são

representadas por vértices.– Existe um arco entre as tarefas v e w, caso a tarefa v

obrigatoriamente deva ser terminada antes que a tarefa w comece.

– Uma ordenação topológica dos vértices fornece uma maneira de realizar todas as tarefas sem violar as precedências entre tarefas.

15 / 51

Page 54: Ordenação Topológica em Grafos

Algoritmos

16 / 51

Page 55: Ordenação Topológica em Grafos

Algoritmos

● Existem diferentes algoritmos para ordenações topológicas em grafos.

16 / 51

Page 56: Ordenação Topológica em Grafos

Algoritmos

● Existem diferentes algoritmos para ordenações topológicas em grafos.

● Os algoritmos de melhor desempenho possuem complexidade linear.

16 / 51

Page 57: Ordenação Topológica em Grafos

Algoritmos

● Existem diferentes algoritmos para ordenações topológicas em grafos.

● Os algoritmos de melhor desempenho possuem complexidade linear.

● Algoritmos mais utilizados:

16 / 51

Page 58: Ordenação Topológica em Grafos

Algoritmos

● Existem diferentes algoritmos para ordenações topológicas em grafos.

● Os algoritmos de melhor desempenho possuem complexidade linear.

● Algoritmos mais utilizados:– Busca em profundidade (DFS).

16 / 51

Page 59: Ordenação Topológica em Grafos

Algoritmos

● Existem diferentes algoritmos para ordenações topológicas em grafos.

● Os algoritmos de melhor desempenho possuem complexidade linear.

● Algoritmos mais utilizados:– Busca em profundidade (DFS).– Algoritmo de Kahn.

16 / 51

Page 60: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

17 / 51

Page 61: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

18 / 51

Page 62: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Terminologia:

18 / 51

Page 63: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.

18 / 51

Page 64: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.– Um vértice pode ser não marcado,

temporariamente marcado ou definitivamente marcado.

18 / 51

Page 65: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.– Um vértice pode ser não marcado,

temporariamente marcado ou definitivamente marcado.

– Inicialmente, todos os vértices são não marcados.

18 / 51

Page 66: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.– Um vértice pode ser não marcado,

temporariamente marcado ou definitivamente marcado.

– Inicialmente, todos os vértices são não marcados.– Ao serem atingidos pela primeira vez, os vértices

são temporariamente marcados.

18 / 51

Page 67: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.– Um vértice pode ser não marcado,

temporariamente marcado ou definitivamente marcado.

– Inicialmente, todos os vértices são não marcados.– Ao serem atingidos pela primeira vez, os vértices

são temporariamente marcados.– Após terem suas dependências examinadas, os

vértices são definitivamente marcados.18 / 51

Page 68: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Terminologia:– L: lista que conterá os elementos da ordenação topológica.– Um vértice pode ser não marcado, temporariamente

marcado ou definitivamente marcado.– Inicialmente, todos os vértices são não marcados.– Ao serem atingidos pela primeira vez, os vértices são

temporariamente marcados.– Após terem suas dependências examinadas, os vértices

são definitivamente marcados.– Caso um vértice temporariamente marcado seja

examinado novamente, o grafo possui pelo menos um ciclo.

18 / 51

Page 69: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

● Exemplo:

19 / 51

Page 70: Ordenação Topológica em Grafos

Busca em Profundidade (DFS)

21 / 51

Page 71: Ordenação Topológica em Grafos

Algoritmo de Kahn

22 / 51

Page 72: Ordenação Topológica em Grafos

Algoritmo de Kahn

23 / 51

Page 73: Ordenação Topológica em Grafos

Algoritmo de Kahn

● O algoritmo de Kahn data de 1962.

23 / 51

Page 74: Ordenação Topológica em Grafos

Algoritmo de Kahn

● O algoritmo de Kahn data de 1962.● Possui como princípio determinar a cada

instante os vértices que não possuam arcos de entrada e inserir na solução.

23 / 51

Page 75: Ordenação Topológica em Grafos

Algoritmo de Kahn

● O algoritmo de Kahn data de 1962.● Possui como princípio determinar a cada

instante os vértices que não possuam arcos de entrada e inserir na solução.

● A cada vértice inserido na solução, todos seus arcos correspondentes são removidos do grafo.

23 / 51

Page 76: Ordenação Topológica em Grafos

Algoritmo de Kahn

● O algoritmo de Kahn data de 1962.● Possui como princípio determinar a cada

instante os vértices que não possuam arcos de entrada e inserir na solução.

● A cada vértice inserido na solução, todos seus arcos correspondentes são removidos do grafo.

● Também detecta a existência de ciclos no grafo.

23 / 51

Page 77: Ordenação Topológica em Grafos

Algoritmo de Kahn

24 / 51

Page 78: Ordenação Topológica em Grafos

Algoritmo de Kahn

● Terminologia:

24 / 51

Page 79: Ordenação Topológica em Grafos

Algoritmo de Kahn

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.

24 / 51

Page 80: Ordenação Topológica em Grafos

Algoritmo de Kahn

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.– S: conjunto de vértices que não possuem arcos de

entrada.

24 / 51

Page 81: Ordenação Topológica em Grafos

Algoritmo de Kahn

● Terminologia:– L: lista que conterá os elementos da ordenação

topológica.– S: conjunto de vértices que não possuem arcos de

entrada.– I: lista que conterá os elementos (vértices) com o

grau de incidência.

24 / 51

Page 82: Ordenação Topológica em Grafos

Algoritmo de Kahn

25 / 51

Page 83: Ordenação Topológica em Grafos

Algoritmo de Kahn

26 / 51

Page 84: Ordenação Topológica em Grafos

Algoritmo de Kahn

27 / 51

Page 85: Ordenação Topológica em Grafos

Algoritmo de Kahn

28 / 51

Page 86: Ordenação Topológica em Grafos

Algoritmo de Kahn

29 / 51

Page 87: Ordenação Topológica em Grafos

Algoritmo de Kahn

30 / 51

Page 88: Ordenação Topológica em Grafos

Algoritmo de Kahn

31 / 51

Page 89: Ordenação Topológica em Grafos

Algoritmo de Kahn

32 / 51

Page 90: Ordenação Topológica em Grafos

Algoritmo de Kahn

33 / 51

Page 91: Ordenação Topológica em Grafos

Algoritmo de Kahn

34 / 51

Page 92: Ordenação Topológica em Grafos

Algoritmo de Kahn

35 / 51

Page 93: Ordenação Topológica em Grafos

Algoritmo de Kahn

36 / 51

Page 94: Ordenação Topológica em Grafos

Algoritmo de Kahn

37 / 51

Page 95: Ordenação Topológica em Grafos

Algoritmo de Kahn

38 / 51

Page 96: Ordenação Topológica em Grafos

Algoritmo de Kahn

39 / 51

Page 97: Ordenação Topológica em Grafos

Algoritmo de Kahn

40 / 51

Page 98: Ordenação Topológica em Grafos

Algoritmo de Kahn

41 / 51

Page 99: Ordenação Topológica em Grafos

Algoritmo de Kahn

42 / 51

Page 100: Ordenação Topológica em Grafos

Algoritmo de Kahn

43 / 51

Page 101: Ordenação Topológica em Grafos

Algoritmo de Kahn

44 / 51

Page 102: Ordenação Topológica em Grafos

Algoritmo de Kahn

45 / 51

Page 103: Ordenação Topológica em Grafos

Algoritmo de Kahn

46 / 51

Page 104: Ordenação Topológica em Grafos

Algoritmo de Kahn

47 / 51

Page 105: Ordenação Topológica em Grafos

Algoritmo de Kahn

48 / 51

Page 106: Ordenação Topológica em Grafos

Algoritmo de Kahn

49 / 51

Page 107: Ordenação Topológica em Grafos

Algoritmo de Kahn

50 / 51

Page 108: Ordenação Topológica em Grafos

Algoritmo de Kahn

51 / 51