elementary circuits enumeration in graphs
TRANSCRIPT
![Page 1: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/1.jpg)
Mestrado em InformáticaPrograma de Pós Graduação em Informática
Universidade Federal do Espírito Santo
Teoria dos Grafos 2014-1Seminário: enumeração de ciclos elementares
Professora: Maria Claudia Silva Boeres
Luiz Kill
Vitória, Junho de 2014
![Page 2: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/2.jpg)
Trabalho apresentado na disciplina “Teoria dos Grafos”, integrante do Programa de Pós Graduação em Informática da Universidade Federal do Espírito Santo, período 2014-1.
2
![Page 3: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/3.jpg)
Agenda
• Definição do problema
• Revisão de conceitos
• Modelagem do problema
• Revisão bibliográfica
• Implementação
• Conclusão
3
![Page 4: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/4.jpg)
Agenda
4
• Definição do problema
• Revisão de conceitos
• Modelagem do problema
• Revisão bibliográfica
• Implementação
• Conclusão
![Page 5: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/5.jpg)
Definição do problemaCadastro de serviços compostos do ERP SAP
5
![Page 6: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/6.jpg)
Definição do problema
Quando o Insumo X tem seu preço atualizado:– Recalcular o preço do Serviço 3– Recalcular o preço do Serviço 2– Recalcular o preço do Serviço 1
6
Cadastro de serviços compostos do ERP SAP
![Page 7: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/7.jpg)
Definição do problema
Quando o Insumo X tem seu preço atualizado:– Recalcular o preço do Serviço 3 -> preço errado!– Recalcular o preço do Serviço 2 -> preço errado!– Recalcular o preço do Serviço 1 -> preço errado!
7
Cadastro de serviços compostos do ERP SAP
![Page 8: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/8.jpg)
Definição do problema
8
Como detectar a existência de ciclos na estrutura?
DFT, ordenação topológica...
Como listar todos os ciclos existentes? ???
![Page 9: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/9.jpg)
Agenda
9
• Definição do problema
• Revisão de conceitos
• Modelagem do problema
• Revisão bibliográfica
• Implementação
• Conclusão
![Page 10: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/10.jpg)
Revisão de conceitos
CicloPercurso fechado sem repetição de arestas, pode repetir vértices.
Ciclo elementarPercurso fechado sem repetição de arestas e com repetição apenas do vértice inicial.
10
Fo
nte:
http
://en
.wik
iped
ia.o
rg/w
iki/C
ycle
_(g
rap
h_th
eory
)
![Page 11: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/11.jpg)
Revisão de conceitos
Componente fortemente conexo
Subgrafo onde todos os vértices são acessíveis a partir de qualquer vértice.
11
http
://e
n.w
ikip
edia
.org
/wik
i/Str
ong
ly_c
onne
cted
_com
pone
nt
Subgrafo induzido por vértices
Subgrafo de G cujo conjunto de vértices é V´ e o conjunto de arestas é o conjunto de todas as arestas de G com ambos extremos em V´ é chamado de subgrafo de G induzido por V'.
![Page 12: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/12.jpg)
Agenda
12
• Definição do problema
• Revisão de conceitos
• Modelagem do problema
• Revisão bibliográfica
• Implementação
• Conclusão
![Page 13: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/13.jpg)
Modelagem do problema
13
Grafo de serviços compostos:
- Desconexo- Direcionado- Insumos nos vértices
terminais- Número de vértices: 21319- Número de arestas: 115227
![Page 14: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/14.jpg)
Modelagem do problema
14
Grafo de serviços compostos:
![Page 15: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/15.jpg)
Modelagem do problema
15
•
* http://stackoverflow.com/questions/14146165/find-all-the-paths-forming-simple-cycles-on-an-undirected-graph
1019*
![Page 16: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/16.jpg)
Modelagem do problema
16
Número de ciclos elementares em um grafo direcionado completo [1]
![Page 17: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/17.jpg)
Modelagem do problema
17
http://flowproblem.ru/cycles/all-simple-cycles
Número de ciclos elementares em um grid nxn
![Page 18: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/18.jpg)
Modelagem do problema
18
NP-completo [4]
![Page 19: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/19.jpg)
Modelagem do problema
19
http://people.mpi-inf.mpg.de/~mehlhorn/ftp/EriceTalks.pdf
O problema de enumeração de ciclos possui muitas aplicações práticas:
• Reconstrução de superfícies
![Page 20: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/20.jpg)
Modelagem do problema
20
O problema de enumeração de ciclos possui muitas aplicações práticas:
• Prevenção e recuperação de deadlocks em SOs e RDMSs
http://en.wikipedia.org/wiki/Wait-for_graph
![Page 21: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/21.jpg)
Modelagem do problema
O problema de enumeração de ciclos possui muitas aplicações práticas:
• Problema do isomorfismo de grafos [7]
• Análise da estrutura de compostos químicos [8]
• Design e análise de redes de comunicação confiáveis
• Análise de causa em redes de relacionamento celular [9]
• ...
21
![Page 22: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/22.jpg)
Modelagem do problema
22
Ciclos é uma
área ativa da
teoria dos
grafos!
![Page 23: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/23.jpg)
Agenda
23
• Definição do problema
• Revisão de conceitos
• Modelagem do problema
• Revisão bibliográfica
• Implementação
• Conclusão
![Page 24: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/24.jpg)
Revisão bibliográfica
Classificação dos algoritmos:
• Search space algorithms• Backtrack algorithms• Adjacency matrix algorithms
24
![Page 25: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/25.jpg)
Search space algorithms
• Nessa abordagem os ciclos são investigados em um espaço de busca apropriado
• Para grafos não direcionados o cycle space vector foi a estrutura mais abordada ao longo do tempo [6]
• Cycle space -> contém todos os ciclos do grafo
• Cycle basis -> contém todos os ciclos elementares a partir dos quais todos os ciclos do espaço podem ser derivados
25Revisão bibliográfica
![Page 26: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/26.jpg)
Search space algorithms• Algoritmo construtivo:
– Gere uma cycle basis
– Gere todos os vetores (ciclos) do cycle space vector a partir da
cycle basis ([21])
• Esses algoritmos são exponenciais no tamanho do espaço de busca, logo são exponenciais em
• No caso especial de grafos planares foi proposto em [10] um algoritmo com tempo
26Revisão bibliográfica
![Page 27: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/27.jpg)
Backtrack algorithms•
27Revisão bibliográfica
![Page 28: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/28.jpg)
Backtrack algorithms
28Revisão bibliográfica
DFT é um algoritmo de backtracking:
![Page 29: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/29.jpg)
Adjacency matrix algorithms•
29Revisão bibliográfica
![Page 30: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/30.jpg)
Adjacency matrix algorithms
30Revisão bibliográfica
![Page 31: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/31.jpg)
O algoritmo de Johnson (1975) [1]
31Revisão bibliográfica
![Page 32: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/32.jpg)
O algoritmo de Johnson (1975) [1]
32Revisão bibliográfica
![Page 33: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/33.jpg)
O algoritmo de Johnson (1975) [1]
33Revisão bibliográfica
![Page 34: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/34.jpg)
O algoritmo de Johnson (1975) [1]
34Revisão bibliográfica
![Page 35: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/35.jpg)
O algoritmo de Hawick & James (2008) [15]
35Revisão bibliográfica
• Estende Johnson’s para laços e arestas múltiplas
![Page 36: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/36.jpg)
O algoritmo de Ferreira (2012) [2]
36Revisão bibliográfica
![Page 37: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/37.jpg)
O algoritmo de Ferreira (2012) [2]
37Revisão bibliográfica
![Page 38: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/38.jpg)
Agenda
38
• Definição do problema
• Revisão de conceitos
• Modelagem do problema
• Revisão bibliográfica
• Implementação
• Conclusão
![Page 39: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/39.jpg)
Implementação
39
![Page 40: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/40.jpg)
Implementação
40
• Algoritmo escolhido: Hawick & James [15]
– Queremos identificar a presença de laços e arestas múltiplas no domínio do
problema
• Biblioteca de apoio: JGraphT 0.9.0 (Java)
– DirectedPseudograph
– DefaultDirectedGraph
– addVertex()
– addEdge()
– successorListOf()
– vertexSet()
– edgeSet()
![Page 41: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/41.jpg)
Implementação
41
• Benchmark (usando grafos simples): JGraphT
– Johnson
– Szwarcfiter and Lauer
– Tarjan
– Tiernan
![Page 42: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/42.jpg)
Cenário de teste 1
42
•
Implementação
![Page 43: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/43.jpg)
Cenário de teste 1
43Implementação
![Page 44: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/44.jpg)
Cenário de teste 2
44
•
Implementação
(Hands on)
![Page 45: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/45.jpg)
Cenário de teste 3
45
•
Implementação
* http://mathworld.wolfram.com/Pseudograph.html
![Page 46: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/46.jpg)
Cenário 3
46Implementação
![Page 47: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/47.jpg)
Cenário 3
47Implementação
![Page 48: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/48.jpg)
Benchmark
48
•
Implementação
![Page 49: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/49.jpg)
Benchmark
49Implementação
![Page 50: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/50.jpg)
Benchmark
50Implementação
![Page 51: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/51.jpg)
Benchmark
51Implementação
![Page 52: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/52.jpg)
Agenda
52
• Definição do problema
• Revisão de conceitos
• Modelagem do problema
• Revisão bibliográfica
• Implementação
• Conclusão
![Page 53: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/53.jpg)
Conclusão
53
•
![Page 54: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/54.jpg)
Conclusão
54
• O algoritmo implementado deve estar disponível na próxima versão da API
JGraphT
![Page 55: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/55.jpg)
55
Dúvidas
![Page 57: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/57.jpg)
Referências[1] D. B. Johnson. Finding all the elementary circuits of a directed graph. SIAM J. Comput., 4(1):77–84, 1975.
[2] R. Ferreira, R. Grossi, A. Marino, N. Pisanti, R. Rizzi, and G. Sacomoto. Optimal Listing of Cycles and st-Paths in Undirected Graphs. Eprint arXiv:1205.2766, 2012.
[3] M. Safar, F. Mahdi and K. Mahdi. An Algorithm for Detecting Cycles in Undirected Graphs using CUDA Technology. International Journal on New Computer Architectures and Their Applications (IJNCAA) 2(1): 194-213, 2012.
[4] R. M. Karp. Reducibility among combinatorial problems, Complexity of Computer Computations. Plenum, New York, 1972, 85-103.
57
![Page 58: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/58.jpg)
Referências[6] R. Diestel. Graph Theory (Graduate Texts in Mathematics). Springer, 2005.
[7] J. T. Welch, Jr. A mechanical analysis of the cyclic structure of undirected linear graphs. J. ACM, 13:205–210, 1966.
[8] E.H. Sussenguth. A graph-theoretical algorithm for matching chemical structures. J. Chem. Doc., 5:36–43, 1965.
[9] S. Klamt, A. Kamp. Computing paths and cycles in biological interaction graphs. BMC Bioinformatics 2009, 10:181.
[10 M. M. Syslo. An efficient cycle vector space algorithm for listing all cycles of a planar graph. SIAM J. Comput., 10(4):797–808, 1981.
58
![Page 59: Elementary Circuits Enumeration in Graphs](https://reader034.vdocuments.com.br/reader034/viewer/2022050723/55a9cf1a1a28ab023d8b493f/html5/thumbnails/59.jpg)
Referências[11] J. C. Tiernan. An efficient search algorithm to find the elementary circuits of a graph. Communonications ACM, 13:722–726, 1970.
[12] R. E. Tarjan. Enumeration of the elementary circuits of a directed graph. SIAM J. Comput., 2(3):211–216, 1973.
[13] J. Ponstein. Self-avoiding paths and the adjacency matrix of a graph. SIAM Journal on Applied Mathematics, 14:600–609, 1966.
[14] F. Harary. The Determinant of the Adjacency Matrix of a Graph. SIAM Review, Vol. 4, No. 3. (Jul., 1962), pp. 202-210.
[15] K. A. Hawick, H. A. James. Enumerating Circuits and Loops in Graphs with Self-Arcs and Multiple-Arcs. Computational Science Technical Note CSTN-013, 2008.
59