Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo...
Transcript of Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo...
![Page 1: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/1.jpg)
Universidade Federal de Mato Grosso do SulUniversidade Federal de Mato Grosso do SulCentro de Ciências Exatas e TecnologiaCentro de Ciências Exatas e TecnologiaDepartamento de Computação e EstatísticaDepartamento de Computação e Estatística
“Tópicos em Algoritmos Paralelos e Distribuídos”
Circuitos de Euler em GrafosCircuitos de Euler em Grafos
Claudia Nasu
![Page 2: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/2.jpg)
Apresentação
■ Introdução
■ Algoritmo
■ Um exemplo
![Page 3: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/3.jpg)
Introdução
■ Um circuito Euleriano é um ciclo que passa por cada aresta do grafo exatamente uma vez.
■ Teorema: um grafo conexo dirigido contém um circuito Euleriano, se e somente se, para cada vértice v, indegree(v) = outdegree(v).
![Page 4: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/4.jpg)
Introdução (cont.)
Exemplo:2
3
4
5
6 71
![Page 5: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/5.jpg)
Algoritmo
■ Atallah e Vishkin■ Modelo: PRAM CREW■ Complexidade:
– Tempo: O(log2 n)– Processadores: O(m)
■ Pré-requisitos:– Euler-tour em árvores– Árvore geradora
![Page 6: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/6.jpg)
Algoritmo
■ Entrada:– Grafo dirigido G = (V,E), onde V = {1,2,..., n},
Euleriano.– Lista das arestas do grafo, armazenada no
vetor EDGE de dimensão m = |E|
■ Saída:– um circuito Euleriano de G
![Page 7: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/7.jpg)
AlgoritmoPasso 1:
■ Ordenação dos elementos de EDGE:– Dadas duas arestas (i, j) e (k, l), então,
(i, j) < (k, l) se j < l ou (j = l e i < k).
(2,1) (4,1) (3,2) (7,2) (1,3) (6,3) (3,4) (5,4) (1,5) (6,5) (2,6) (4,6) (5,7)
j = l
i < k
j < l
![Page 8: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/8.jpg)
AlgoritmoPasso 1 (cont.):
■ Ordenação dos elementos de SUCESSOR:– Dadas duas arestas (i, j) e (k, l), então,
(i, j) < (k, l) se i < k ou (i = k e j < l).
(1,3) (1,5) (2,1) (2,6) (3,2) (3,4) (4,1) (4,6) (5,4) (5,7) (6,3) (6,5) (7,2)
i = k
j < l
i < k
![Page 9: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/9.jpg)
■ Como a ordenação é lexicográfica, o número de arestas da primeira ordenação chegando ao vértice v é igual ao número de arestas saindo deste vértice na segunda ordenação.
■ Com isto, a i-ésima aresta (u,v) da primeira ordenação terá como correspondente a i-ésima aresta da segunda ordenação (v,w).
![Page 10: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/10.jpg)
AlgoritmoPasso 1 (cont.):
■ Os vetores EDGE e SUCESSOR definem juntos um conjunto de ciclos (arestas disjuntas). Em qualquer ciclo, a aresta seguinte à aresta armazenada em EDGE(i) está em SUCESSOR(i).
■ P(i) aponta para SUCESSOR(j), onde j é o endereço em EDGE da aresta armazenada em SUCESSOR(i).
![Page 11: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/11.jpg)
2
3
4
5
6 71
(2,1) (4,1) (3,2) (7,2) (1,3) (6,3) (3,4) (5,4) (1,5) (6,5) (2,6) (4,6) (5,7)
(1,3) (1,5) (2,1) (2,6) (3,2) (3,4) (4,1) (4,6) (5,4) (5,7) (6,3) (6,5) (7,2)
![Page 12: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/12.jpg)
AlgoritmoPasso 2:
■ CYCLEREP(i) armazena a aresta representante do ciclo ao qual EDGE(i) pertence.
for all i, 1≤ i ≤ m in parallel do CYCLEREP(i) ← SUCESSOR(i)
repeat log m times
for 1≤ i ≤ m in parallel do
CYCLEREP(i) ← min{CYCLEREP(i), CYCLEREP(P(i))}
P(i) ← P(P(i))
(1,3) (1,5) (1,3) (1,5) (1,3) (1,5) (1,5) (1,5) (1,5) (1,5) (1,5) (1,5) (1,5)
![Page 13: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/13.jpg)
AlgoritmoPasso 2 (cont.):
■ Grafo bipartido G’ (V’, E’):– V’ = V ∪ C, onde C denota o conjunto de arestas
representando os ciclos.– E’ = {(u,v) | u ∈V, v ∈C e u está no circuito
representado por v} }
for all i, 1 ≤ i ≤ m in parallel do
for EDGE(i) = (u,v) do
EDGE’ (2i - 1) ← (u, CYCLEREP(i))
EDGE’(2i) ← (v,CYCLEREP(i))
![Page 14: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/14.jpg)
AlgoritmoPasso 2 (cont.):
(2,1) (4,1) (3,2) (7,2) (1,3) (6,3) (3,4) (5,4) (1,5) (6,5) (6,6) (4,6) (5,7)
2
31
(2,(1,3)) (1,(1,3)) (4,(1,5)) (1,(1,5)) (3,(1,3)) (2,(1,3)) (7,(1,5)) (2,(1,5))
(1,(1,3)) (3,(1,5)) ...
![Page 15: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/15.jpg)
AlgoritmoPasso 2 (cont.):
■ Problema: as arestas aparecem pelo menos duas vezes no vetor, pois duas arestas consecutivas em um determinado ciclo tem um vértice em comum.
■ Solução: ordenar as arestas e eliminar as cópias.
![Page 16: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/16.jpg)
AlgoritmoPasso 2 (cont.):
■ Grafo bipartite G’:
1
2
3
4
5
6
7
(1,3)
(1,5)
V C
![Page 17: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/17.jpg)
AlgoritmoPasso 3:
■ Determina uma árvore geradora T de G’.
■ T’ é o grafo obtido de T substituindo-se cada aresta (i,j) por duas arestas direcionadas e anti-paralelas (i,j) e (j,i).
■ Determina um circuito euleriano de T’ utilizando a técnica de Euler-tour em árvores.
![Page 18: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/18.jpg)
AlgoritmoPasso 3 (cont.):
1
2
3
4
5
6
7
(1,3)
(1,5)
T
1
2
3
4
5
6
7
(1,3)
(1,5)
T’
![Page 19: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/19.jpg)
AlgoritmoPasso 3 (cont.):
1
2
3
4
5
6
7
(1,3)
(1,5)
![Page 20: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/20.jpg)
AlgoritmoPasso 4:
■ Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas de G.
■ Propriedade de L: as arestas de G e de T’ aparecem em L na ordem de um circuito Euleriano em G e um circuito Euleriano em T’.
■ Definir uma ordem circular para cada w ∈C.■ Considere w de grau d em T. Seja (v0,w),
(v1,w), ..., (vd-1,w) vértices adjacentes a w em T, onde v0, v1, ..., vd-1, são vértices reais.
![Page 21: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/21.jpg)
AlgoritmoPasso 4 (cont.):
■ Modificar os vetores EDGE e SUCESSOR de maneira que descrevam L.
■ Adicionar a EDGE as arestas de T’ e, para cada w ∈C e 0 ≤ α ≤ d-1:SUCESSOR(vα, w) ← (vα, jα)
■ Para as arestas de G:SUCESSOR(iα, vα) ← (wα, vα)
■ Para as aresta do tipo (w, vα), em T considere vα adjacente a w0, w1, ..., wd-1:
SUCESSOR(wi,vα) ← (vα, wi+1(mod d))
![Page 22: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/22.jpg)
AlgoritmoPasso 4 (cont.):
■ O ciclo L é descrito por EDGE e SUCESSOR.
■ Segue que, L conterá as arestas de T’ na ordem de um circuito Euleriano.
■ Agora, cada aresta w ∈T’ é expandindo para o circuito definido por SUCESSOR.
![Page 23: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/23.jpg)
AlgoritmoPasso 4 (cont.):
2
3
(1,3) 1 (1,5)
5
4 6
7
4 6 5
2
3
![Page 24: Circuitos de Euler em Grafos - UFMSmarco/paralelos2008/Circuito_Euler_PRAM1.pdf · Algoritmo Passo 4: Determina um ciclo L cujas arestas se alternam entre arestas de T’ e arestas](https://reader033.fdocuments.net/reader033/viewer/2022042915/5f52941ddc4f252f3e739ea4/html5/thumbnails/24.jpg)
AlgoritmoPasso 5:
■ O algoritmo descarta de L as arestas de T’, obtendo, assim, o circuito Euleriano de G.
2
3
4
6 71
5
12
3
45
67
8
9
10
11
1213