Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada Bacharelado em Ciência da Computação Implementação de um algoritmo para encontrar emparelhamentos perfeitos em grafos cúbicos e sem pontes Thiago Henrique de Araújo Lemos Natal-RN Fevereiro de 2013 Thiago Henrique de Araújo Lemos Implementação de um algoritmo para encontrar emparelhamentos perfeitos em grafos cúbicos e sem pontes Monografia de Graduação apresentada ao Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da TerradaUniversidadeFederaldoRioGrande do Norte como requisito parcial para a ob- tenção do grau de bacharel em Ciência da Computação. Orientador(a) Prof. Dr. Marcelo Ferreira Siqueira Universidade Federal do Rio Grande do Norte – UFRN Departamento de Informática e Matemática Aplicada – DIMAp Natal-RN Fevereiro de 2013 Monografia de Graduação sob o título Implementação de um algoritmo para encontrar emparelhamentos perfeitos em grafos cúbicos e sem pontes apresentada por Thiago Henri- que de Araújo Lemos e aceita pelo Departamento de Informática e Matemática Aplicada doCentro deCiências ExatasedaTerra da Universidade Federaldo RioGrandedoNorte, sendo aprovada por todos os membros da banca examinadora abaixo especificada: Prof. Dr. Marcelo Ferreira Siqueira Orientador(a) Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte Profa. Dra. Elizabeth Ferreira Gouvêa Goldbarg Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte Prof. Dr. Marco César Goldbarg Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte Profa. Sílvia Maria Diniz Monteiro Maia Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte Natal-RN, 15 de fevereiro de 2013 Agradecimentos Gostaria de agradecer, em primeiro lugar, ao orientador Marcelo Ferreira Siqueira, cujo apoio tornou este trabalho possível; aos meus avós, que sempre rezaram por mim; e aos meus pais, a quem eu devo tudo. Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. Isaac Asimov Implementação de um algoritmo para encontrar emparelhamentos perfeitos em grafos cúbicos e sem pontes Autor: Thiago Henrique de Araújo Lemos Orientador: Prof. Dr. Marcelo Ferreira Siqueira Resumo Este texto descreve um trabalho de conclusão de curso que consistiu em implementar um algoritmo para encontrar emparelhamentos perfeitos em grafos cúbicos e sem pontes. O algoritmo em questão é o que apresenta a melhor complexidade de tempo entre todos aqueles disponíveis na literatura até então para o tipo de grafo acima. A implementação do algoritmo exigiu a utilização de uma estrutura dinâmica de conectividade para testar, de forma eficiente, se um grafo, inicialmente conexo, permanece conexo após a remoção ou inserção de arestas. O algoritmo possui aplicações em vários problemas de geometria computacional. Palavras-chave: Grafos, emparelhamentos perfeitos, teorema de Petersen, algoritmo. Implementation of an algorithm for finding perfect matchings in bridgeless cubic graphs Author: Thiago Henrique de Araújo Lemos Advisor: Prof. Dr. Marcelo Ferreira Siqueira Abstract This manuscript describes the development of a senior project, which comprised the im- plementation of an algorithm for finding perfect matchings on bridgeless, cubic graphs. To the best of our knowledge, this algorithm has currently the best upper bound for time complexity among all matching algorithms for the same type of graph in the literature. Thealgorithmimplementation isbasedonadatastructurefordynamic connectivity tests. Thisdata structureallows ustofind outwhether aconnected graphbecomes disconnected after each insertion or deletion of an edge. Finally, the algorithm implemented here can be applied to many important research problems in computational geometry and related areas. Keywords: Graphs, perfect matchings, Petersen’s theorem, algorithm. Lista de figuras 2.1 Um grafo 2-aresta-conexo que não é 2-conexo. . . . . . . . . . . . . . . p.28 2.2 Exemplo de emparelhamento. . . . . . . . . . . . . . . . . . . . . . . . p.29 2.3 Redução da aresta e = u,w . . . . . . . . . . . . . . . . . . . . . . . . p.32 { } 3.1 Um grafo cúbico e 2-aresta-conexo com arestas triplas que possui apenas 2 vértices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.35 3.2 As configurações (ii) e (iii) e as respectivas reduções sendo desfeitas. . . p.37 3.3 O caso em que não há arestas simples adjacentes a f. . . . . . . . . . . p.40 3.4 O caso 1 do algoritmo de Diks e Stanczyk. . . . . . . . . . . . . . . . . p.43 3.5 Algumas das possíveis configurações de T′′ quando G′′ é conexo. . . . . p.44 4.1 Rotação da aresta entre os nós x e y. Triângulos denotam subárvores. . p.49 4.2 Os três possíveis casos da operação splaying: (a) Zig. (b) Zig-zig. (c) Zig-zag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.50 4.3 Acesso ao nó com chave 3. . . . . . . . . . . . . . . . . . . . . . . . . . p.52 4.4 Junção das árvores apontadas por q e q . . . . . . . . . . . . . . . . . p.54 1 2 4.5 Divisão da árvore no nó com chave 4 (inexistente). . . . . . . . . . . . . p.54 4.6 Inserção do nó com chave 4 na árvore enraizada em q. . . . . . . . . . . p.55 4.7 Remoção do nó com chave 4 na árvore enraizada em q. (a) Antes da remoção. (b) Após Access(4,q) (c) Após Join(q ,q ) . . . . . . . . . . p.56 1 2 4.8 Uma configuração com potencial 8,39 se todas as chaves têm peso 1. . . p.59 4.9 A árvore T (esquerda) e as árvores T′ = x E e D (direita). . . . . p.65 1 1 { }∪ 4.10 As árvores T , E e D (esquerda) e a árvore T′ = q E D (direita). p.66 1 1 { }∪ ∪ 5.1 Operações em uma árvore dinâmica com 5 nós. As raízes estão destacadas. p.76 5.2 Evert() sendo executada na árvore da Figura 5.1(c). . . . . . . . . . . p.78 5.3 Uma árvore virtual que equivale à árvore real da Figura 5.4. . . . . . . p.80 5.4 Uma árvore real retirada de (SLEATOR; TARJAN, 1985). Raiz em destaque. p.81 5.5 Decomposição em caminhos da árvore real da Figura 5.4. . . . . . . . . p.82 5.6 Uma árvore virtual correspondente à árvore real da Figura 5.4. Nós com bits de inversão iguais a 1 são destacados em cinza. . . . . . . . . . . . p.84 5.7 Exemplo de Unreverse(). . . . . . . . . . . . . . . . . . . . . . . . . p.85 5.8 Exemplo de Splice(). . . . . . . . . . . . . . . . . . . . . . . . . . . . p.86 5.9 Árvore da Figura 5.6 após a primeira passada de VirtualSplay(u). . p.88 5.10 Árvore da Figura 5.6 após a segunda passada de VirtualSplay(u). . p.89 5.11 Árvore da Figura 5.6 após a terceira passada de VirtualSplay(u). . p.89 5.12 O efeito de Cut(m) na árvore da Figura 5.4. . . . . . . . . . . . . . . . p.91 5.13 Árvore da Figura 5.6 após a chamada VirtualSplay(m) por Cut(m). A aresta exibida em destaque será removida logo em seguida, originado duas árvores disjuntas. . . . . . . . . . . . . . . . . . . . . . . . . . . . p.92 5.14 O efeito de Evert(w) na árvore da Figura 5.12. . . . . . . . . . . . . . p.93 5.15 Árvore da Figura 5.6 após Cut(m), VirtualSplay(w)e SwitchBit(m). p.93 5.16 O efeito de Link(w,a) na árvore da Figura 5.14. . . . . . . . . . . . . . p.94 5.17 Árvore virtual correspondente à arvore da Figura 5.16. . . . . . . . . . p.95 5.18 Uma configuração com potencial 96,66. . . . . . . . . . . . . . . . . . . p.98 6.1 Execução de Insert(e), com e = u,v . As raízes estão em destaque. . p.105 { } 6.2 Execução de Cut(u). Arestas de reserva são exibidas com arcos ponti- lhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.106 6.3 Uma hierarquia com 5 subgrafos de um grafo com 12 vértices e 21 arestas.p.107 6.4 Uma hierarquia de florestas geradoras dos subgrafos da Figura 6.3. . . . p.109 6.5 Uma hierarquia de florestas geradoras dos subgrafos da Figura 6.3. Ares- tas de árvore e de reserva são exibidas como arcos sólidos e pontilhados, respectivamente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.110 6.6 A hierarquia de florestas da Figura 6.5 após a remoção da aresta v ,v .p.115 4 7 { } 6.7 A hierarquia de florestas resultante da operação de remoção da aresta v ,v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.116 4 7 { } 6.8 Execução de Replace(e), com e = u,v . As raízes estão em destaque p.124 { } 7.1 A classe Edge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.129 7.2 A classe Vertex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.130 7.3 A classe Graph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.131 7.4 A classe SplayNode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.132 7.5 A classe SplayTree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.133 7.6 A classe STNode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.134 7.7 A classe STTree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.136 7.8 Código da funcão findLCA(). . . . . . . . . . . . . . . . . . . . . . . . . p.140 7.9 A classe DynamicConnectivityDS. . . . . . . . . . . . . . . . . . . . . p.141 7.10 O registro ReductionData. . . . . . . . . . . . . . . . . . . . . . . . . . p.143 7.11 A malha Cow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.144 7.12 A malha Fandisk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.145 7.13 A malha Botijo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.146 7.14 A malha Dinosaur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.147 7.15 Tempos (médios) para calcular um emparelhamento perfeito em cada malha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p.150 7.16 A malha Cow após a execução do algoritmo de emparelhamento. . . . . p.150 A.1 As duas margens de uma ponte, e, com respeito ao grafo conexo. . . . . p.164 A.2 Conexão das arestas e e e . . . . . . . . . . . . . . . . . . . . . . . . . p.166 1 2 A.3 Redução da aresta e = u,w . . . . . . . . . . . . . . . . . . . . . . . . p.168 { } A.4 Redução da aresta e = u,w quando x = x e x = x . . . . . . . . . p.169 1 3 2 4 { } 6 A.5 Redução da aresta e = u,w quando x = x e x = x . . . . . . . . . p.169 1 3 2 4 { } A.6 Redução da aresta e = u,w quando x = x e x = x . . . . . . . . . p.170 1 2 3 4 { } 6
Description: