+ All Categories
Home > Documents > Universidade Federal do ABC Centro de Matematica...

Universidade Federal do ABC Centro de Matematica...

Date post: 02-Jan-2021
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
74
Universidade Federal do ABC CentrodeMatem´atica,Computa¸c˜ ao e Cogni¸c˜ ao (CMCC) Curso de P´ os-Gradua¸ c˜aoemCiˆ encia da Computa¸c˜ ao Disserta¸c˜ ao de Mestrado Andr´ eia Cristina dos Santos Gusm˜ ao UM ALGORITMO PARALELO PARA CICLOS HAMILTONIANOS EM GRAFOS KNESER Santo Andr´ e - SP 2013
Transcript
Page 1: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Universidade Federal do ABC

Centro de Matematica, Computacao e Cognicao (CMCC)

Curso de Pos-Graduacao em Ciencia da Computacao

Dissertacao de Mestrado

Andreia Cristina dos Santos Gusmao

UM ALGORITMO PARALELO PARA CICLOS HAMILTONIANOS EM GRAFOS

KNESER

Santo Andre - SP

2013

Page 2: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Curso de Pos-Graduacao em Ciencia da Computacao

Dissertacao de Mestrado

Andreia Cristina dos Santos Gusmao

UM ALGORITMO PARALELO PARA CICLOS HAMILTONIANOS EM GRAFOS

KNESER

Trabalho apresentado como requisito

parcial para obtencao do tıtulo de

Mestre em Ciencia da Computacao, sob

orientacao da Professora Doutora Letı-

cia Rodrigues Bueno e do Coorienta-

dor Professor Doutor Rodrigo de Alen-

car Hausen.

Santo Andre - SP

2013

Page 3: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Este exemplar foi revisado e alterado em relacao a versaooriginal, de acordo com as observacoes levantadas pela banca nodia da defesa, sob responsabilidade unica da autora e com aanuencia de sua orientadora.

Santo Andre, 22 de junho de 2013.

Assinatura da autora:

Assinatura da orientadora:

Page 4: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Andreia Cristina dos Santos Gusmao

UM ALGORITMO PARALELO PARA CICLOS HAMILTONIANOS EM GRAFOS

KNESER

Essa Dissertacao de Mestrado foi jul-

gada e aprovada para a obtencao do grau

de Mestre em Ciencia da Computacao no

curso de Pos-Graduacao em Ciencia da

Computacao da Universidade Federal do

ABC.

BANCA EXAMINADORA

Profa. Dra. Letıcia Rodrigues Bueno

CMCC/UFABC

Prof. Dr. Ademir Aparecido Constantino

DIN/UEM

Prof. Dr. Raphael Yokoingawa de Camargo

CMCC/UFABC

Prof. Dr. Candido Ferreira Xavier de Mendonca Neto

EACH/USP

Prof. Dr. Jair Donadelli Junior

CMCC/UFABC

Santo Andre - SP

2013

Page 5: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

ii

Este trabalho contou com auxılio financeiro da Universidade Federal do ABC – UFABC

(bolsa de mestrado, institucional), de maio/2011 a janeiro/2013 e da Coordenacao de

Aperfeicoamento de Pessoal de Nıvel Superior – CAPES (bolsa de mestrado, demanda

social), de fevereiro/2013 a maio/2013.

Page 6: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

iii

Dedico aos meus pais, Cida e Juraci pelo

amor incondicional e ao meu primo querido

Neliton Gusmao, que tao jovem foi morar

com Deus.

Page 7: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

iv

Agradecimentos

A Deus, por me dar forca, coragem, paciencia e por ter sido meu fiel companheiro e

me livrado de todo o mal, em todas as noites nesses dois anos em que voltei para casa

sozinha, depois de um dia de muita luta e trabalho.

A minha famılia que amo muito, em especial a minha mae Cida e ao meu pai Ju-

raci Gusmao, que sofreram com minha ausencia, vibraram com cada vitoria e atraves

de oracoes, secaram cada lagrima que derramei nos momentos mais difıceis. Pai, mae:

mestres sao voces, que me ensinaram a viver com humildade e dignidade.

A minha irma Micheli Gusmao que amo tanto, que mesmo de longe torceu por mim e

que muitas vezes, nao conseguiu compreender minha ausencia, e; ao meu primo querido

Neliton Gusmao, que teve a alegria em ver iniciando o mestrado, mas que o destino nao

permitiu que estivesse aqui hoje. Certamente foi meu anjo protetor em todos os momentos.

A minha orientadora Letıcia Rodrigues Bueno e ao meu coorientador Rodrigo de Alen-

car Hausen, por terem acreditado em mim, pelo esforco que fizeram para que cada trabalho

fosse realizado com sucesso. Obrigada por toda a orientacao, pela paciencia e por terem

confiado em mim um trabalho tao importante e tao difıcil. Minha eterna gratidao a voces,

que me ajudaram a crescer nao so profissionalmente, mas tambem como ser humano.

A todos os professores do Centro de Matematica, Computacao e Cognicao (CMCC),

em especial a Karla Vittori, Raphael Camargo, Siang Song, Daniel Martin, Ronaldo Prati

e Andre Balan, que foram tao importantes no processo da minha formacao. E ao professor

Francisco Zampirolli, com o qual tive a honra de trabalhar durante um quadrimestre e

que muito me ensinou.

Ao meu amigo Wellington Santos, por ter sido a primeira pessoa a me ajudar quando

me mudei para Sao Paulo.

Ao meu amigo e irmao Paulo Cesar Angelo, pessoa incrıvel, que nao conseguiria descre-

ver com poucas palavras. Voce foi meu alicerce nos momentos que mais me senti sozinha,

longe da minha famılia.

A minha amiga Silvia Scheunemann, amiga para todas as horas. Juntas choramos,

sorrimos, brincamos, aprendemos e nos desesperamos. Dois anos vividos intensamente,

Page 8: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

v

onde a superacao e a amizade foram fundamentais para seguir a diante.

A minha amiga Sheila leal, por todos os momentos descontraıdos, pelas brincadeiras

e pelo carinho constante. Agradeco tambem a todos os colegas do curso de Ciencia da

Computacao da turma de 2011, que juntos, formamos uma so famılia no laboratorio 407-2.

Aos meus eternos amigos do INPETTECC, Colegio Objetivo e Eleven Tecnologia de

Pouso Alegre - MG, que sempre torceram por mim, em especial ao Elton Rodrigo de Souza,

obrigada por toda a compreensao; Tatiane Nunes, por estar presente nos momentos que

mais precisei; Jeane Rodrigues, por todo o carinho nesses longos anos; Cassandra Heringer,

pela forca e pelo carinho, voce nao sabe o quanto foi importante saber que posso contar

com voce e; Marilene Moreira e Silvia Silva, por todo o cuidado e atencao que sempre

tiveram por mim.

A Universidade Federal do ABC e a CAPES, pelo investimento financeiro, sem o qual,

seria impossıvel eu realizar esse trabalho.

A todos os funcionarios da UFABC e aos amigos de Natercia - MG, em especial ao

motorista Marcio Arantes de Freitas.

Enfim, a todos que direta ou indiretamente colaboraram para essa vitoria, meu sincero

agradecimento. Aos que acreditaram, essa vitoria e nossa. Aos que duvidaram, mostrei

que a minha forca de vontade e a minha determinacao fizeram muito mais diferenca para

chegar ate aqui, que a minha propria formacao profissional.

Page 9: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

vi

Resumo

O grafo Kneser K(n, k) tem como vertices os subconjuntos de cardinalidade k do

conjunto {1, 2, . . . , n}. Dois vertices sao adjacentes se os subconjuntos correspondentes

sao disjuntos. O grafo Kneser bipartido B(n, k) tem(nk

)∪(

nn−k

)como seu conjunto de

vertices e dois vertices sao adjacentes se um e subconjunto do outro. Uma conjectura de

Lovasz afirma que todo grafo nao-direcionado, conexo e vertice-transitivo tem um cami-

nho hamiltoniano. Para n ≥ 2k + 1, os grafos K(n, k) e B(n, k) formam uma famılia

de grafos vertice-transitivos conexos podendo, assim, fornecer mais evidencia para apoiar

a conjectura de Lovasz ou fornecer um contra-exemplo para a mesma. Foi provado que

um caminho hamiltoniano particular em um grafo reduzido de K(2k + 1, k) leva a um

caminho e a um ciclo hamiltoniano em K(2k + 1, k) e B(2k + 1, k), respectivamente.

Propomos um algoritmo paralelo utilizando MPI para a busca destes caminhos hamilto-

nianos particulares nos grafos reduzidos. Provamos que os emparelhamentos modulares

no grafo reduzido de K(2k+1, k) determinam dk2e coberturas de vertices por ciclos disjun-

tos nestes grafos. Escolhemos aleatoriamente uma destas coberturas para ser a entrada

do algoritmo paralelo que procura concatena-los em um unico caminho. Um algoritmo

sequencial e utilizado para adicionar apropriadamente ao caminho os vertices que nao

puderam ser concatenados pelo algoritmo paralelo. Ate agora, encontramos um caminho

hamiltoniano particular no grafo reduzido de K(2k + 1, k) para k ≤ 14.

Palavras-chaves: Caminhos hamiltonianos, computacao paralela, grafos Kneser, grafos

Kneser bipartidos.

Page 10: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

vii

Abstract

The Kneser graph K(n, k) has as vertices the k-subsets of the set {1, 2, . . . , n}. Two ver-

tices are adjacent if the corresponding subsets are disjoint. The bipartite Kneser graph

B(n, k) has(nk

)∪(

nn−k

)as its set of vertices and two vertices are adjacent if one is a

subset of the other. A conjecture of Lovasz claims that every undirected connected vertex-

transitive graph has a hamiltonian path. For n ≥ 2k + 1, the graphs K(n, k) and B(n, k)

form a family of vertex-transitive connected graphs, so they can provide more evidence to

support conjecture of Lovasz or even provide a counterexample for it. It was proved that a

specific hamiltonian path in a reduced graph of K(2k+ 1, k) gives a hamiltonian path and

a hamiltonian cycle in K(2k + 1, k) and B(2k + 1, k), respectively. We propose a parallel

algorithm using MPI to search for that specific hamiltonian path in the reduced graphs.

We prove that the modular matchings in the reduced graph of K(2k+ 1, k) determine dk2e

vertex cover by disjoints cycles. We choose randomly one of these covers as an input of

the parallel algorithm that tries to concatenate them in one path. A sequential algorithm is

used to add properly to the path the vertices that could not be concatenated by the parallel

algorithm. At the moment, we found a specific hamiltonian path in the reduced graph of

K(2k + 1, k) for k ≤ 14.

Keywords: Hamiltonian paths, parallel computation, Kneser graphs, bipartite Kneser

graphs.

Page 11: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

LISTA DE ALGORITMOS viii

Lista de Algoritmos

1 Algoritmo SS99 para encontrar um caminho viavel em Bk . . . . . . . . . 22

2 Algoritmo BFSExtend para procurar uma ou mais sequencias de rotacoes . 23

3 Algoritmo FindPosition para encontrar a nova posicao de um vertice v ∈ Pe adjacente a q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4 Algoritmo FindVertex para encontrar um novo vertice w uma posicao apos

o vertice v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5 Algoritmo DoReversals para fazer rotacoes em P e ao final das rotacoes q = u 25

6 Algoritmo para determinar se dois vertices sao adjacentes . . . . . . . . . . 31

7 Algoritmo paralelo para encontrar um caminho viavel em Ok . . . . . . . . 40

8 Algoritmo sequencial para encontrar um caminho viavel em Ok . . . . . . . 41

Page 12: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Lista de Figuras

1.1 Um ciclo e um caminho hamiltonianos no dodecaedro. . . . . . . . . . . . . 1

2.1 Em (a) um grafo simples; Em (b) um grafo com laco e aresta paralela. . . . 3

2.2 Um grafo ponderado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3 Grafos completos para m = 2, 3, 4, 5. . . . . . . . . . . . . . . . . . . . . . 4

2.4 Um grafo bipartido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.5 Dois grafos isomorfos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.6 Subgrafos em um grafo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.7 Um emparelhamento em um grafo bipartido. . . . . . . . . . . . . . . . . . 5

2.8 Uma 1-fatorizacao de um grafo G: tres emparelhamentos perfeitos. . . . . . 6

2.9 Um automorfismo no grafo K3: α(1) = 2, α(2) = 3 e α(3) = 1. As

adjacencias sao preservadas. . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.10 No grafo, (v1, v2, v6, v8, v4, v2, v1) e um passeio fechado; (v1, v2, v4) e (v1, v5, v7, v8, v4)

sao dois caminhos entre v1 e v4, e; (v1, v2, v4, v3) e um ciclo. . . . . . . . . 6

2.11 (a) Um grafo G (b) Cobertura de vertices por ciclos disjuntos em G. . . . 7

2.12 (a) Um grafo conexo (b) Um grafo desconexo. . . . . . . . . . . . . . . . 7

2.13 Alguns grafos Kneser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.14 Grafos ımpares Ok para k = 1, 2, 3. . . . . . . . . . . . . . . . . . . . . . . 8

2.15 Grafos Kneser bipartidos B(4, 1), B(5, 1) e B(6, 2). . . . . . . . . . . . . . 9

2.16 Grafos Bk para k = 1, 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.17 Grafo Kneser bipartido B2 e o grafo reduzido B2. . . . . . . . . . . . . . . 11

2.18 Em (a) o grafo reduzido O3 de O3 (Figura 2.14(c)) e em (b) um caminho

viavel em O3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.19 O grafo O3 com vertices identificados pelo representante da classe. . . . . . 13

ix

Page 13: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

LISTA DE FIGURAS x

2.20 Os emparelhamentos modulares em B2. . . . . . . . . . . . . . . . . . . . . 14

2.21 Os (k2

= 1) 2-fatores e o emparelhamento perfeito em O2. . . . . . . . . . . 15

2.22 Diagrama de funcionamento da computacao paralela para um problema

dividido em quatro subproblemas . . . . . . . . . . . . . . . . . . . . . . . 17

2.23 Estrutura basica de um programa que use MPI . . . . . . . . . . . . . . . 19

3.1 Rotacoes em P para que o vertice 000101101 seja o ultimo vertice em P . . 27

3.2 Um caminho viavel do grafo B4 = O4. . . . . . . . . . . . . . . . . . . . . . 27

4.1 Os grafos B2, O2 e O2 em representacao binaria. . . . . . . . . . . . . . . . 32

4.2 Possıveis concatenacoes de P1 e P2 para α = 0. . . . . . . . . . . . . . . . . 36

4.3 Possıveis concatenacoes de P1 e P2 para α = 1. . . . . . . . . . . . . . . . . 36

4.4 Um exemplo de concatenacao de P1 e P2 em O4 no caso (1) com ρ = 0. . . 37

4.5 Possıveis concatenacoes de P1 e P2 no caso (2), σ(r1) ∈ P1 e α = 0. . . . . 37

4.6 Possıveis concatenacoes de P1 e P2 no caso (2), σ(r1) = v1 ∈ P1 e α = 1. . . 38

4.7 O grafo O4 e o 2-fator Π(m2) = Π(m4). . . . . . . . . . . . . . . . . . . . . 42

4.8 Caminho final P da fase paralela com 92% dos vertices de O4. . . . . . . . 43

4.9 Diagrama do algoritmo paralelo para O4 e o 2-fator Π(m2) = Π(m4). . . . 44

Page 14: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

LISTA DE TABELAS xi

Lista de Tabelas

2.1 Numero de vertices de alguns grafos Ok, Bk e numero de arestas de Ok. . . 10

2.2 Numero de vertices de alguns grafos Ok, Bk e Ok = Bk. . . . . . . . . . . . 12

5.1 Configuracoes das Filas do Altix 4700 Bachianas utilizadas nos testes . . . 45

5.2 Resultados do algoritmo proposto para Ok e k ≤ 14. . . . . . . . . . . . . . 46

5.3 O 2-fator com melhor tempo de execucao em Ok, para 3 ≤ k ≤ 14. . . . . . 48

5.4 Resultados parciais do algoritmo proposto em Ok, para 15 ≤ k ≤ 18. . . . . 48

5.5 Tempo de execucao do algoritmo para gerar as coberturas de vertices por

ciclos disjuntos para Ok e k ≤ 17. Continuacao na Tabela 5.6. . . . . . . . 49

5.6 Tempo de execucao do algoritmo para gerar as coberturas de vertices por

ciclos disjuntos para Ok e k ≤ 17. Continuacao da Tabela 5.5. . . . . . . . 50

5.7 Comparativo de tempo de execucao entre os algoritmos para Ok ou Ok.

NC: nao consta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.8 Comparativo do tempo de execucao entre o algoritmo GBH e nossa imple-

mentacao do algoritmo SS99 para Ok. . . . . . . . . . . . . . . . . . . . . . 51

Page 15: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Sumario

Lista de Algoritmos viii

Lista de Figuras x

Lista de Tabelas xi

1 Introducao 1

2 Fundamentacao Teorica 3

2.1 Definicoes em Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Grafos Kneser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 Grafos Kneser Bipartidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.4 Grafos Reduzidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.5 Emparelhamentos Modulares . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.6 Ciclos e Caminhos Hamiltonianos em K(n, k) e B(n, k) . . . . . . . . . . . 16

2.7 Computacao Paralela e MPI . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Algoritmos para Grafos Kneser e Kneser Bipartidos 21

3.1 O Algoritmo SS99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 O Algoritmo SS04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3 O Algoritmo SSS09 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4 Algoritmo Proposto 30

4.1 Representacao Computacional da Solucao e do Grafo Ok . . . . . . . . . . 31

4.2 Entrada do Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

xii

Page 16: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

SUMARIO xiii

4.3 Fase paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3.1 Inıcio do algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3.2 Comportamento dos processos . . . . . . . . . . . . . . . . . . . . . 34

4.4 Fase sequencial para concatenacao dos prejuızos . . . . . . . . . . . . . . . 39

4.5 Exemplo de execucao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5 Analise dos Resultados 45

6 Conclusao 52

Referencias Bibliograficas 54

Page 17: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Capıtulo 1

Introducao

O Problema do Ciclo Hamiltoniano (“Hamiltonian Cycle Problem”, em ingles) foi pro-

posto em 1859 por William Rowan Hamilton [13] como um jogo matematico, a princıpio

sem aplicacao pratica. Originalmente, tratava-se da busca por um ciclo gerador em um

dodecaedro regular ou, em outras palavras, um ciclo que passa por todos os pontos do

dodecaedro, exatamente uma vez, e volta ao ponto de origem.

Uma versao do problema proposto por Hamilton e o Problema do Caminho Hamil-

toniano (“Hamiltonian Path Problem”, em ingles) que pede por um caminho que passa

por todos os pontos exatamente uma vez, porem, nao volta ao ponto de origem. Veja um

exemplo no dodecaedro da Figura 1.1 (a) de um ciclo hamiltoniano e na Figura 1.1 (b)

de um caminho hamiltoniano.

(a) Um ciclo hamiltoniano (b) Um caminho hamiltoniano

Figura 1.1: Um ciclo e um caminho hamiltonianos no dodecaedro.

O problema do ciclo hamiltoniano e utilizado na definicao formal do Problema do

Caixeiro Viajante (“Travelling Salesman Problem”, em ingles). Dado um grafo completo

e ponderado G, o problema do caixeiro viajante consiste em determinar um ciclo hamil-

toniano C em G tal que a soma dos pesos de todas as arestas em C seja mınima.

Varios problemas praticos podem ser modelados atraves do problema do ciclo hamil-

toniano. Imagine, por exemplo, a confeccao de uma placa de circuito impresso que possui

inumeros furos para o encaixe de seus componentes e um braco eletronico que deve perfurar

1

Page 18: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 1. INTRODUCAO 2

a placa. Precisamos agora de um algoritmo para determinar a ordem de perfuracao da

placa com o menor custo possıvel. Essa ordem pode ser modelada como um problema do

ciclo hamiltoniano, onde os furos e a posicao inicial do braco eletronico sao representados

por vertices.

Determinar se um grafoG tem um ciclo hamiltoniano e um problema NP-Completo [16].

O problema de decisao associado ao problema do caminho hamiltoniano tambem e NP-

Completo [12]. Observe que, se temos um ciclo hamiltoniano C em um grafo G, obtemos

um caminho hamiltoniano em G simplesmente removendo uma aresta de C. Por outro

lado, mesmo se um caminho hamiltoniano e fornecido, determinar se existe um ciclo

hamiltoniano continua sendo NP-Completo [21].

Devido a dificuldade inerente a um problema NP-Completo, uma abordagem possıvel

e restringir o problema a um conjunto de entradas. A ideia e tentar resolver o problema

utilizando, para isso, as propriedades relacionadas ao conjunto de entradas.

Neste trabalho, restringimos o estudo de ciclos e caminhos hamiltonianos as classes de

grafos conhecidas como grafos Kneser e Kneser bipartidos. Propomos um algoritmo para-

lelo utilizando MPI para a busca de caminhos hamiltonianos particulares em um tipo de

grafo reduzido dos grafos Kneser e Kneser bipartidos. Provamos que os emparelhamentos

modulares nesses grafos reduzidos determinam varias coberturas de vertices por ciclos

disjuntos. Assim, escolhemos aleatoriamente uma destas coberturas por ciclos disjuntos

para ser a entrada do algoritmo paralelo.

No Capıtulo 2, apresentamos as definicoes, os conceitos e as propriedades utilizadas

no decorrer do trabalho, assim como a revisao bibliografica. No Capıtulo 3 discutimos

brevemente os algoritmos existentes para o problema do caminho e ciclo hamiltonianos

em grafos Kneser e Kneser bipartidos. O Capıtulo 4 descreve o algoritmo proposto e

no Capıtulo 5 analisamos os resultados encontrados. Finalizamos no Capıtulo 6 com a

conclusao e trabalhos futuros.

Page 19: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Capıtulo 2

Fundamentacao Teorica

A seguir, apresentamos os conceitos de Teoria dos Grafos que serao utilizados no decorrer

do trabalho. O leitor habituado as definicoes basicas de grafos pode ir diretamente para

a Secao 2.2.

2.1 Definicoes em Grafos

Um grafo G e um par ordenado G = (V (G), E(G)), onde V (G) e um conjunto finito e

nao vazio de elementos denominados vertices e E(G) e um multiconjunto finito de arestas

que sao pares nao-ordenados de vertices de G. Dada uma aresta e = {u, v}, os vertices u

e v sao chamados de extremos de e. Neste caso, dizemos que a aresta e e incidente a u e

v e o par de vertices u e v sao adjacentes. Dizemos ainda que duas arestas incidentes a

um vertice em comum sao arestas adjacentes.

Um grafo G e dito nao-direcionado quando suas arestas sao pares nao-ordenados de

vertices de G.

Um grafo contem arestas paralelas ou multiplas se possui arestas diferentes comparti-

lhando os mesmos extremos. Uma aresta {u, v} com vertices u e v iguais (u = v) e um laco.

Um grafo e simples se nao contem lacos nem arestas paralelas. Veja na Figura 2.1 (a), um

grafo simples com V (G) = {v1, v2, v3, v4, v5, v6} e E(G) = {e1, e2, e3, e4, e5, e6, e7, e8, e9}.Veja na Figura 2.1 (b), um grafo com arestas paralelas e um laco.

v1 v2

v3 v4

v5 v6e1

e2e3

e4

e5

e6

e7e8

e9

(a)

v1 v2

v3 v4

v5e1

e2e3

e4

e5

e6e9 e8e7

(b)

Figura 2.1: Em (a) um grafo simples; Em (b) um grafo com laco e aresta paralela.

3

Page 20: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 4

Um grafo e dito ponderado se suas arestas possuem peso (Figura 2.2).

v1

v2 v3

v4

v5

v6

7

5

2

81

3 6

4

5

7

Figura 2.2: Um grafo ponderado.

O grau dG(u) de um vertice u ∈ V (G) em um grafo G e o numero de arestas de G que

incidem em u. Um grafo e chamado de regular ou q-regular se todos os seus vertices tem

o mesmo grau q.

Um grafo com m vertices e dito completo, denotado por Km, se todos os seus pares

de vertices sao adjacentes. Todo Km e (m − 1)-regular e possui(m2

)arestas. Veja na

Figura 2.3 alguns grafos completos.

v1 v2

(a) K2

v1

v2 v3

(b) K3

v1

v2 v3

v4

(c) K4

v1

v2 v3

v4 v5

(d) K5

Figura 2.3: Grafos completos para m = 2, 3, 4, 5.

Um grafo G e dito bipartido se existe uma biparticao de V (G) em dois subconjuntos

V1 e V2 tal que toda aresta e ∈ E(G) tem um extremo em V1 e o outro extremo em V2

(Figura 2.4).

V2V1

Figura 2.4: Um grafo bipartido.

Dois grafos G e H sao chamados de isomorfos se existe uma bijecao ϕ: V (G)→ V (H)

tal que u e v sao adjacentes em G se e somente se os vertices ϕ(u) e ϕ(v) sao adjacentes

em H e, neste caso, dizemos que ϕ e um isomorfismo entre G e H. Na Figura 2.5, os

mapeamentos ϕ(v1) = b;ϕ(v2) = d;ϕ(v3) = f ;ϕ(v4) = c;ϕ(v5) = e, ϕ(v6) = a formam

um isomorfismo entre G e H.

Page 21: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 5

v2 v3v1

v5 v6v4

(a) Grafo G

b = ϕ(v1)ϕ(v6) = a

d = ϕ(v2)

c = ϕ(v4)

ϕ(v5) = e

ϕ(v3) = f

(b) Grafo H

Figura 2.5: Dois grafos isomorfos.

Um grafo H e chamado de subgrafo de um grafo G se V (H) ⊆ V (G) e E(H) ⊆ E(G),

denotado por H ⊆ G (veja Figura 2.6). Dizemos que H e subgrafo proprio de G se

H ⊆ G, mas H 6= G, denotado por H ⊂ G. Dado um subconjunto S tal que S ⊆ V (G),

o subgrafo de G induzido por S e o grafo G[S] que possui V (G[S]) = S e E(G[S]) =

{e ∈ E(G) : e ⊆ S}. Um subgrafo H de G e chamado induzido se H = G[S] para

algum S ⊆ V (G)(Figura 2.6 (b)). Um subgrafo H de G e chamado subgrafo induzido

se E(H) = {e ∈ E(G) : e ⊆ V (H)}. Dado F ⊆ E(G), o subgrafo de G gerado por F

e o grafo G[F ] definido como V (G[F ]) = V (G) e E(G[F ]) = F . Dizemos que H e um

subgrafo gerador de G se V (G) = V (H) (Figura 2.6 (c)).

(a) Um grafo G (b) Subgrafo induzido de G (c) Subgrafo gerador de G

Figura 2.6: Subgrafos em um grafo.

Dado um grafo G, um emparelhamento M e um subconjunto de E(G) de arestas duas

a duas nao adjacentes, denotado por M ⊆ E(G). Se todo vertice de G tem uma aresta

de M incidente a ele, M e chamado um emparelhamento perfeito. Veja na Figura 2.7 um

exemplo de emparelhamento, e na Figura 2.8, tres emparelhamentos perfeitos.

Figura 2.7: Um emparelhamento em um grafo bipartido.

A uniao de dois grafos G1 e G2 e um terceiro grafo definido por G = G1 ∪ G2, onde

V (G) = V (G1) ∪ V (G2) e E(G) = E(G1) ∪ E(G2).

Um q-fator de um grafo G e um subgrafo gerador q-regular de G. Dizemos que G e

q-fatoravel se existem q-fatores disjuntos H1, H2, . . . , Hj tais que G = H1 ∪ H2 ∪ . . . ∪

Page 22: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 6

Hj. Observe que um emparelhamento perfeito e um 1-fator. Assim, por exemplo, na

Figura 2.8, os emparelhamentos perfeitos M1, M2 e M3 sao 1-fatores e formam uma 1-

fatorizacao de um grafo G.

(a) M1 (b) M2 (c) M3

Figura 2.8: Uma 1-fatorizacao de um grafo G: tres emparelhamentos perfeitos.

Um automorfismo de um grafo G e um isomorfismo de G em G, o qual pode ser

considerado uma permutacao α de V (G) que preserva as adjacencias: assim {u, v} ∈ E(G)

se e somente se {α(u), α(v)} ∈ E(G). Veja um exemplo na Figura 2.9.

1

2 3

(a) Grafo K3

2

3 1

(b) Grafo K3

Figura 2.9: Um automorfismo no grafo K3: α(1) = 2, α(2) = 3 e α(3) = 1. As adjacenciassao preservadas.

Dizemos que um grafo G e vertice-transitivo se, para todo par de vertices u, v ∈V (G), existe um automorfismo α que mapeia u em v. Dizemos que um grafo G e aresta-

transitivo se para todo par de arestas {u, v}, {x, y} ∈ E(G) existe um automorfismo α

tal que {α(u),α(v)} = {x, y}. Qualquer grafo que e vertice e aresta-transitivo e chamado

simetrico. O grafo K3 (Figura 2.9) e um exemplo de grafo simetrico.

Um passeio entre u e v em um grafo G e uma sequencia de vertices P = (u1, u2, . . . , uk)

onde u = u1, uk = v e uj uj+1 sao adjacentes para j = 1, . . . , k−1. Se u = v, dizemos que

P e um passeio fechado. Um caminho e um passeio que nao repete vertices. Um ciclo e

um passeio fechado que nao repete vertices. O comprimento de um caminho ou ciclo e o

numero de suas arestas. Um caminho ou ciclo de comprimento l e chamado um l-caminho

ou l-ciclo, respectivamente. Veja alguns exemplos na Figura 2.10.

v1 v2

v3 v4

v6

v8

v5

v7

Figura 2.10: No grafo, (v1, v2, v6, v8, v4, v2, v1) e um passeio fechado; (v1, v2, v4) e(v1, v5, v7, v8, v4) sao dois caminhos entre v1 e v4, e; (v1, v2, v4, v3) e um ciclo.

Page 23: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 7

Uma cobertura de vertices por ciclos em um grafo G e um conjunto de ciclos que sao

subgrafos de G e contem todos os vertices de G. Se os ciclos da cobertura nao tem vertices

em comum, a cobertura e chamada cobertura de vertices por ciclos disjuntos. Neste caso,

o conjunto de ciclos consiste em um subgrafo gerador de G (Figura 2.11).

(a) (b)

Figura 2.11: (a) Um grafo G (b) Cobertura de vertices por ciclos disjuntos em G.

Um grafo G e dito conexo se existe um caminho entre qualquer par de vertices de G.

Se nao existe um caminho entre algum par de vertices, entao G e desconexo (Figura 2.12).

v1 v2

v3 v4

v5

(a)

v1 v2

v3 v4

v5 v6

v7

(b)

Figura 2.12: (a) Um grafo conexo (b) Um grafo desconexo.

Um caminho ou um ciclo em G e dito hamiltoniano se contem todos os vertices de

G. Por exemplo, no grafo da Figura 2.10, P = (v1, v2, v4, v3, v7, v5, v6, v8) e um caminho

hamiltoniano e C = (v1, v2, v6, v5, v7, v8, v4, v3) e um ciclo hamiltoniano. Um grafo e

hamiltoniano se contem um ciclo hamiltoniano. Um grafo G e hipohamiltoniano se G nao

e hamiltoniano mas G− v e hamiltoniano, para todo v ∈ V (G).

Na proxima secao, apresentamos as classes de grafos Kneser e Kneser bipartidos, as

quais restringimos o estudo do problema do caminho e ciclo hamiltonianos.

2.2 Grafos Kneser

Seja X um conjunto; um k-subconjunto de X e um subconjunto Y ⊆ X tal que a car-

dinalidade de Y e k. Sejam n, k inteiros tais que 1 ≤ k ≤ n. O grafo Kneser, denotado

por K(n, k), tem como vertices os k-subconjuntos de {1, 2, . . . , n}. Dois vertices sao adja-

centes se os subconjuntos correspondentes sao disjuntos. Observe que o grafo completo

em m vertices Km e o grafo K(n = m, 1) (Figura 2.14 (a)).

Page 24: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 8

O grafo K(n, k) tem(nk

)vertices,

(nk

)(n−kk

)/2 arestas, e

(n−kk

)-regular, e conexo para

n > 2k e forma uma famılia de grafos simetricos. Veja alguns exemplos na Figura 2.13.

{1}

{2}{3} {4}

(a) K(4, 1)

{1, 2}{1, 4}

{1, 3}

{3, 4}{2, 3}

{2, 4}(b) K(4, 2)

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

{4, 5}{1, 3}{5, 6}

{1, 4}

{2, 6}

{1, 5}

{2, 4}

{3, 5}{1, 2}

{3, 6}

(c) K(6, 2)

Figura 2.13: Alguns grafos Kneser.

Para n = 2k+1, o grafo Kneser K(2k+1, k) e tambem chamado o grafo ımpar [1](“odd

graphs”, em ingles), denotado por Ok, para k ≥ 1. Observe que o grafo O1 e um triangulo

e O2 e o grafo de Petersen (Figura 2.14).

{3}

{1}

{2}

(a) O1 = K(3, 1)

{1, 2}

{4, 5}

{2, 3}{1, 5}

{3, 4}

{1, 3}

{3, 5}{2, 5}

{2, 4}

{1, 4}

(b) O2 = K(5, 2)

{3, 5, 7}{1, 2, 6}

{3, 4, 7}{1, 5, 6}

{2, 3, 4}

{5, 6, 7}

{1, 2, 4}

{3, 6, 7}

{2, 4, 5}

{1, 3, 6}

{2, 4, 7}

{3, 5, 6}{1, 4, 7}

{2, 3, 5}{1, 6, 7}

{3, 4, 5}{2, 6, 7}{1, 4, 5}{2, 3, 7}{1, 4, 6}

{2, 5, 7}{1, 3, 4}

{2, 5, 6}

{1, 3, 7}

{1, 2, 3}{4, 5, 7}{2, 3, 6}

{1, 5, 7}

{2, 4, 6}

{1, 3, 5}

{4, 6, 7}

{1, 2, 5}

{3, 4, 6}

{1, 2, 7}

{4, 5, 6}

(c) O3 = K(7, 3)

Figura 2.14: Grafos ımpares Ok para k = 1, 2, 3.

2.3 Grafos Kneser Bipartidos

O grafo Kneser bipartido, denotado por B(n, k), tem(nk

)∪(

nn−k

)como seu conjunto

de vertices, e dois vertices sao adjacentes se um e subconjunto do outro. Suas arestas

Page 25: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 9

representam a inclusao entre dois subconjuntos, isto e, A ( B onde A e um k-subconjunto

e B e um (n− k)-subconjunto. Veja, por exemplo, os grafos B(4, 1), B(5, 1) e B(6, 2) na

Figura 2.15.

{1}{2}{3}

{1, 2, 3}{1, 2, 4}{1, 3, 4}

{4} {2, 3, 4}(a) B(4, 1)

{1}{2}{3}

{1, 2, 3, 4}{1, 2, 3, 5}{1, 2, 4, 5}

{4} {1, 3, 4, 5}{5} {2, 3, 4, 5}

(b) B(5, 1)

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

{1, 2} {1, 2, 3, 4}{1, 3}{1, 4}

{1, 2, 3, 5}{1, 2, 3, 6}

{1, 5}{1, 6}{2, 3}

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

{2, 4}{2, 5}

{1, 3, 4, 5}{1, 3, 4, 6}

{4, 6} {2, 4, 5, 6}{5, 6} {3, 4, 5, 6}

{3, 5} {2, 3, 4, 5}{3, 6}{4, 5}

{2, 3, 4, 6}{2, 3, 5, 6}

(c) B(6, 2)

Figura 2.15: Grafos Kneser bipartidos B(4, 1), B(5, 1) e B(6, 2).

O grafo Kneser bipartido B(n, k) tem 2(nk

)vertices,

(nk

)(n−kk

)arestas, e

(n−kk

)-regular

e forma uma famılia de grafos simetricos. Assim como o grafo Kneser, e conexo somente

para n > 2k.

Para n = 2k+1, o grafo Kneser bipartido e chamado o grafo dos nıveis intermediarios

(“middle-levels graph”, em ingles), denotado por Bk.

{1}{2}

{3}

{1, 2}{2, 3}

{1, 3}

(a) B1 = B(3, 1)

{3, 5} {2, 4, 5}{4, 5} {3, 4, 5}

{1, 2} {1, 2, 3}{1, 3}{1, 4}

{1, 2, 4}{1, 2, 5}

{1, 5}{2, 3}{2, 4}

{1, 3, 4}{1, 3, 5}{1, 4, 5}

{2, 5}{3, 4}

{2, 3, 4}{2, 3, 5}

(b) B2 = B(5, 2)

Figura 2.16: Grafos Bk para k = 1, 2.

A Tabela 2.1 mostra o numero de vertices de alguns grafos Ok e Bk, e o numero de

arestas do grafo Ok. O numero de arestas do grafo Bk e 2|E(Ok)|. Observe que para k = 7

o numero de vertices de Bk ja e 12.870. Apenas dobrando o valor de k, ou seja, k = 14,

o numero de vertices de Bk passa a ser de 155.117.520. Portanto, uma computacao exata

de caminhos ou ciclos hamiltonianos em Ok e Bk nao e viavel para grandes valores de k.

Page 26: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 10

k n |V (Ok)| =(2k+1k

)|E(Ok)| = (k + 1)

(2k+1k

)/2 |V (Bk)| = 2

(2k+1k

)1 3 3 3 62 5 10 15 203 7 35 70 704 9 126 315 2525 11 462 1.386 9246 13 1.716 6.006 3.4327 15 6.435 25.740 12.8708 17 24.310 109.935 48.6209 19 92.378 461.890 184.75610 21 352.716 1.939.938 705.43211 23 1.352.078 8.112.468 2.704.15612 25 5.200.300 33.801.950 10.400.60013 27 20.058.300 140.408.100 40.116.60014 29 77.558.760 581.690.700 155.117.52015 31 300.540.195 2.404.321.560 601.080.39016 33 1.166.803.110 9.917.826.435 2.333.606.22017 35 4.537.567.650 40.838.108.850 9.075.135.30018 37 17.672.631.900 167.890.003.050 35.345.263.80019 39 68.923.264.410 689.232.644.100 137.846.528.82020 41 269.128.937.220 2.825.853.840.810 538.257.874.440

Tabela 2.1: Numero de vertices de alguns grafos Ok, Bk e numero de arestas de Ok.

A seguir, definimos uma operacao de reducao para os grafos Kneser e Kneser bipartidos

utilizada no algoritmo proposto.

2.4 Grafos Reduzidos

Utilizamos uma operacao de reducao para os grafos Bk proposta originalmente por Moews

e Reid [24], complementada por Dejter [8] e estendida a K(n, k) e B(n, k) por Bueno et

al. [4].

Seja Zn o conjunto {1, . . . , n} com aritmetica modulo n. Consideramos cada vertice de

K(n, k) e B(n, k) como subconjunto de Zn. Definimos dois k-subconjuntos particulares

de Zn para n = 2k + 1, que sao r1 = {1, . . . , k} e r2 = {2, 4, 6, . . . , n− 1}.

Dado um conjunto v = {v1, v2, . . . , vt} ⊆ Zn e δ ∈ Zn, denote v = Zn \ v o complemento

de v em relacao a Zn e denote v + δ = {v1 + δ, v2 + δ, . . . , vt + δ} . Dizemos que u, v ⊂Zn satisfazem u ∼ v se (i) u = v+ δ ou (ii) u = v+ δ para algum δ ∈ Zn. Observe que ∼e uma relacao de equivalencia. Nos referimos a classe de equivalencia de v definida por ∼como σ(v).

Exemplo 1. Para k = 2 e n = 5, {1,5} ∼ {1,2} pois satisfazem a condicao (i) desde

que {1,2} = {1,5} + δ onde δ = 1, ou seja, somamos 1 ao subconjunto {1,5} modulo n:

5 + 1 = 6 mod n = 1 e 1 + 1 = 2, portanto {1,2}. Da mesma forma, {1,5} ∼ {1,2,3} pois

satisfazem a condicao (ii) desde que {1, 5} = {2, 3, 4}, entao {1, 5} = {1, 2, 3} + δ onde

δ = 1.

Page 27: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 11

Dado um grafo G, definimos o grafo quociente G como o grafo obtido de G por identi-

ficar os vertices que sao equivalentes de acordo com ∼. Mais precisamente, os vertices de

G sao as classes de equivalencia σ(v) para v ∈ V (G) e se {u, v} ∈ E(G), entao {σ(u), σ(v)}∈ E(G). Para um exemplo aplicado a classe de grafos Kneser bipartidos, veja os grafos

B2 e B2 na Figura 2.17. Observe que se {u, v} ∈ E(G) satisfaz u ∼ v, entao o vertice σ(u)

∈ V (G) tem um laco, pois σ(u) = σ(v). Assim, na Figura 2.17 o vertice σ(r1) em B2 tem

um laco porque, por exemplo, {1,2} e adjacente a {1,2,3} em B2 e σ({1, 2}) = σ({1, 2, 3})desde que {1, 2} = {3, 4, 5}, entao {1, 2} = {1, 2, 3}+δ onde δ = 2 satisfazendo a condicao

(ii). Veja um exemplo aplicado ao grafo ımpar O3 na Figura 2.18.

{2, 3, 4} {2, 5}{2, 3} {2, 4, 5}

{1, 2, 3} r2 = {2, 4}r1 = {1, 2}{1, 2, 5}

{1, 2, 4}{1, 4}

{1, 5}{1, 4, 5}{4, 5}

{1, 3, 4}{1, 3}{1, 3, 5}

{3, 4, 5}{3, 4}

{3, 5}{2, 3, 5}

(a) B2

σ(r2)σ(r1)

(b) B2

Figura 2.17: Grafo Kneser bipartido B2 e o grafo reduzido B2.

O grafo quociente G e chamado grafo reduzido. Foi provado em [2] que Bk = Ok.

Em [3], foi provado que K(n, k) = B(n, k) e que |V (K(n, k))| = |V (K(n,k))|n

. Shields e

Savage mostraram que:

Lema 1 (Shields e Savage, 1999 [26]). Se existe um caminho hamiltoniano em Bk que

inicia e termina em σ(r1) e σ(r2), respectivamente – o qual chamamos de caminho viavel

– entao existe um ciclo hamiltoniano em Bk.

Bueno et al. [2] mostraram que um caminho viavel em Bk leva tambem a um caminho

hamiltoniano em Ok. Observe na Figura 2.18 o grafo reduzido de O3 e um caminho viavel

em O3.

A Tabela 2.2 mostra o numero de vertices dos grafos Ok, Bk e Ok = Bk para alguns

valores de k.

Existe uma correspondencia biunıvoca entre os k-subconjuntos de Zn e o conjunto de

strings binarias de comprimento n com exatamente k 1’s e (n−k) 0’s. A correspondencia

bnbn−1...b1 ↔ {i|bi = 1} e uma bijecao das strings de n bits para os subconjuntos de Zn. A

string de n bits associada a um k-subconjunto de Zn e chamada de representacao binaria

desse subconjunto.

Considere os vertices em representacao binaria de uma classe de equivalencia ordenados

lexicograficamente. O menor vertice da classe em termos lexicograficos e chamado o re-

Page 28: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 12

{1, 2, 3}

σ(r2)

σ(r1)

{2, 3, 4}{3, 4, 5}{4, 5, 6}{5, 6, 7}{1, 6, 7}{1, 2, 7}

{4, 5, 7}{1, 5, 6}{2, 6, 7}{1, 3, 7}{1, 2, 4}{2, 3, 5}{3, 4, 6}

{4, 6, 7}{1, 5, 7}{1, 2, 6}{2, 3, 7}{1, 3, 4}{2, 4, 5}{3, 5, 6}

{2, 3, 6}{3, 4, 7}{1, 4, 5}{2, 5, 6}{3, 6, 7}{1, 4, 7}{1, 2, 5}

{1, 3, 5}{2, 4, 6}{3, 5, 7}{1, 4, 6}{2, 5, 7}{1, 3, 6}{2, 4, 7}

σ({4, 6, 7})

σ({2, 3, 6})σ({4, 5, 7})

r1 = {1, 2, 3}

r2 = {2, 4, 6}

(a) O3

σ({4, 5, 7})

σ({4, 6, 7})

σ({2, 3, 6})

σ(r2)

σ(r1)σ({1, 2, 3})

σ({2, 4, 6})

(b) Caminho viavel em O3

Figura 2.18: Em (a) o grafo reduzido O3 de O3 (Figura 2.14(c)) e em (b) um caminho

viavel em O3.

k n |V (Ok)| =(2k+1k

)|V (Bk)| = 2

(2k+1k

)|V (Ok)| =

(2k+1k

)/n

1 3 3 6 12 5 10 20 23 7 35 70 54 9 126 252 145 11 462 924 426 13 1.716 3.432 1327 15 6.435 12.870 4398 17 24.310 48.620 1.4309 19 92.378 184.756 4.86210 21 352.716 705.432 16.79611 23 1.352.078 2.704.156 58.78612 25 5.200.300 10.400.600 208.01213 27 20.058.300 40.116.600 742.90014 29 77.558.760 155.117.520 2.674.44015 31 300.540.195 601.080.390 9.694.84516 33 1.166.803.110 2.333.606.220 35.357.67017 35 4.537.567.650 9.075.135.300 129.644.79018 37 17.672.631.900 35.345.263.800 477.638.70019 39 68.923.264.410 137.846.528.820 1.767.263.19020 41 269.128.937.220 538.257.874.440 6.564.120.42021 43 1.052.049.481.860 2.104.098.963.720 24.466.267.02022 45 4.116.715.363.800 8.233.430.727.600 91.482.563.64023 47 16.123.801.841.550 32.247.603.683.100 343.059.613.650

Tabela 2.2: Numero de vertices de alguns grafos Ok, Bk e Ok = Bk.

presentante da classe. A nao ser quando explicitado em contrario, usamos ao longo do

texto o representante da classe para nos referir a um vertice do grafo reduzido.

Exemplo 2 (Representantes de classe no grafo O3). Na Figura 2.18, a classe σ(r1) contem

os seguintes vertices: {1, 2, 3}, {2, 3, 4}, {3, 4, 5}, {4, 5, 6}, {5, 6, 7}, {1, 6, 7} e {1,

2, 7} que, em representacao binaria, equivale a: 0000111, 0001110, 0011100, 0111000,

Page 29: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 13

1110000, 1100001 e 1000011. O representante da classe e o vertice 0000111.

Observe na Figura 2.19, o grafo O3 representado de duas formas: (a) notacao de

conjuntos; (b) representante da classe.

σ({1, 2, 4})

σ({1, 3, 4})

σ({1, 2, 5})

σ(r2)

σ(r1)σ({1, 2, 3})

σ({2, 4, 6})

(a)

σ(0001011)

σ(0001101)

σ(0010011)

σ(r2)

σ(r1)σ(0000111)

σ(0010101)

(b)

Figura 2.19: O grafo O3 com vertices identificados pelo representante da classe.

Definimos o complemento de um bit binario x por

x =

{1 se x = 0

0 se x = 1.

Dada uma string binaria de m bits X = x1 x2 . . . xm, o shift de X e definido por

shi(X) = x2 x3 . . . xm x1. Por exemplo, se X = 00011 entao sh1(X) = sh(X) = 00110,

sh2(X) = 01100, sh3(X) = 11000 e assim por diante; trivialmente shm(X) = X.

A seguir, definimos os emparelhamentos modulares que sao utilizados para determi-

nacao de uma cobertura de vertices por ciclos disjuntos no grafo Ok= Bk que sera utilizada

como entrada inicial para o algoritmo proposto.

2.5 Emparelhamentos Modulares

O conceito de emparelhamento modular foi introduzido em [11] para os Bk. Seja A um

k-subconjunto de Zn e n = 2k + 1. Entao A e adjacente no emparelhamento my para

y = 1, 2, . . . , k + 1, ao conjunto

my(A) = A ∪ {aj}, onde j ≡(y +

∑a ∈ A

a

)(mod k + 1)

e aj e o j-esimo maior elemento em A.

Exemplo 3 (Emparelhamento modular m1 no grafo B2). Determinamos as adjacencias

de um vertice A no emparelhamento m1 para o grafo B2 (Figura 2.20 (a)) como segue:

Page 30: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 14

A A j ≡ 1 +∑

a ∈ A

a (mod k + 1) my(A) = A ∪ {aj}

{1,2} {3,4,5} j ≡ 4 (mod 3) =⇒ j ≡ 1 {1,2,5}{3,4} {1,2,5} j ≡ 8 (mod 3) =⇒ j ≡ 2 {2,3,4}{1,5} {2,3,4} j ≡ 7 (mod 3) =⇒ j ≡ 1 {1,4,5}{2,3} {1,4,5} j ≡ 6 (mod 3) =⇒ j ≡ 0 {1,2,3}{4,5} {1,2,3} j ≡ 10 (mod 3) =⇒ j ≡ 1 {3,4,5}{3,5} {1,2,4} j ≡ 9 (mod 3) =⇒ j ≡ 0 {1,3,5}{2,4} {1,3,5} j ≡ 7 (mod 3) =⇒ j ≡ 1 {2,4,5}{1,3} {2,4,5} j ≡ 5 (mod 3) =⇒ j ≡ 2 {1,3,4}{2,5} {1,3,4} j ≡ 8 (mod 3) =⇒ j ≡ 2 {2,3,5}{1,4} {2,3,5} j ≡ 6 (mod 3) =⇒ j ≡ 0 {1,2,4}

Duffus et al. [11] mostraram que os emparelhamentos modularesmy para y = 1, 2, . . . , k+

1 sao emparelhamentos perfeitos que formam uma 1-fatorizacao deBk. Veja na Figura 2.20

uma 1-fatorizacao de B2.

{3, 5} {2, 4, 5}{4, 5} {3, 4, 5}

{1, 2} {1, 2, 3}{1, 3}{1, 4}

{1, 2, 4}{1, 2, 5}

{1, 5}{2, 3}{2, 4}

{1, 3, 4}{1, 3, 5}{1, 4, 5}

{2, 5}{3, 4}

{2, 3, 4}{2, 3, 5}

(a) m1

{3, 5} {2, 4, 5}{4, 5} {3, 4, 5}

{1, 2} {1, 2, 3}{1, 3}{1, 4}

{1, 2, 4}{1, 2, 5}

{1, 5}{2, 3}{2, 4}

{1, 3, 4}{1, 3, 5}{1, 4, 5}

{2, 5}{3, 4}

{2, 3, 4}{2, 3, 5}

(b) m2

{3, 5} {2, 4, 5}{4, 5} {3, 4, 5}

{1, 2} {1, 2, 3}{1, 3}{1, 4}

{1, 2, 4}{1, 2, 5}

{1, 5}{2, 3}{2, 4}

{1, 3, 4}{1, 3, 5}{1, 4, 5}

{2, 5}{3, 4}

{2, 3, 4}{2, 3, 5}

(c) m3

Figura 2.20: Os emparelhamentos modulares em B2.

Mais tarde, Johnson e Kierstead [15] mostraram que os emparelhamentos modulares

my levam tambem a uma 2-fatorizacao de Ok com (k+1)2

2-fatores para k ımpar. Para

k par, os emparelhamentos modulares resultam em k2

2-fatores e um emparelhamento

perfeito.

Definimos, assim, os emparelhamentos modulares my, y = 1, . . . , k + 1 em Bk como

Π(my) em Ok, onde para todo vertice A em V (Bk), Π(A) = A se A e um k-subconjunto

e Π(A) = A se A e um (k + 1)-subconjunto (Figura 2.21).

Johnson e Kierstead [15] mostraram que, se k e ımpar, Π(mi) = Π(mk+2−i) para

i = 1, . . . , d(k + 1)/2e. Em outras palavras, isso significa que, para k = 5, por exem-

plo, Π(m1) = Π(m6); Π(m2) = Π(m5), e; Π(m3) = Π(m4). Assim, determinar uma

2-fatorizacao de Ok exige apenas a metade dos emparelhamentos modulares. No entanto,

se k e par, entao Π(mj) para j = (k + 2)/2 e um emparelhamento perfeito em Ok. Para

Page 31: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 15

k = 4 isso significa que Π(m1) = Π(m5) e Π(m2) = Π(m4) sao 2-fatores e Π(m3) e um

emparelhamento perfeito em O4.

{1, 2}

{4, 5}

{2, 3}{1, 5}

{3, 4}

{1, 3}

{3, 5}{2, 5}

{2, 4}

{1, 4}

(a) Π(m1) = Π(m3)

{1, 2}

{4, 5}

{2, 3}{1, 5}

{3, 4}

{1, 3}

{3, 5}{2, 5}

{2, 4}

{1, 4}

(b) Π(m2)

Figura 2.21: Os (k2

= 1) 2-fatores e o emparelhamento perfeito em O2.

Observe que um 2-fator em um grafo G e uma cobertura de vertices por ciclos dis-

juntos e e, por consequencia, um subgrafo gerador de G. Queremos fornecer ao nosso

algoritmo uma cobertura de vertices por ciclos disjuntos que serao concatenados na ten-

tativa de obtermos um caminho viavel. Para isso, no entanto, precisamos mostrar que os

emparelhamentos modulares podem ser utilizados nos grafos reduzidos.

E suficiente mostrar que cada aresta de Ok representa arestas de Ok de um mesmo

Π(my), para 1 ≤ y ≤ bk2c+ 1.

Lema 2. Cada aresta de Ok representa n arestas de Ok do mesmo emparelhamento mo-

dular my, para 1 ≤ y ≤ bk2c+ 1.

Demonstracao. De [2] sabemos que uma aresta {σ(u), σ(v)} ∈ E(Ok) implica em um

emparelhamento perfeito entre os vertices de σ(u) e os vertices de σ(v) em Ok, formado

pelas arestas {shi(u), shi(v)}, para 1 ≤ i ≤ n.

Sem perda de generalidade, considere uma aresta {A,Π(my(A))} ∈ E(Ok). De [11]

temos que my(shi(A)) = shi(my(A)). Segue que as arestas do emparelhamento perfeito

{shi(A), shi(Π(my(A)))} fazem parte do mesmo Π(my).

O Lema 2 implica que as arestas de Ok podem ser determinadas pelos emparelhamen-

tos modulares. Consequentemente, os emparelhamentos modulares my, 1 ≤ y ≤ dk2e

determinam varias coberturas de vertices por ciclos disjuntos em Ok.

Na proxima secao, apresentamos alguns resultados sobre os problemas do ciclo e cami-

nho hamiltonianos em grafos K(n, k) e B(n, k), assim como as conjecturas que motivam

o estudo de caminhos e ciclos hamiltonianos nesses grafos.

Page 32: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 16

2.6 Ciclos e Caminhos Hamiltonianos em K(n, k) e

B(n, k)

Dado um grafo G qualquer, decidir se G tem um ciclo hamiltoniano e um problema

NP-Completo [16]. De fato, o problema de decisao associado ao problema do ciclo hamil-

toniano e NP-Completo mesmo quando um caminho hamiltoniano e dado como parte da

instancia [21] ou quando G e bipartido [17].

Por outro lado, o problema do caminho hamiltoniano tambem e NP-Completo [12]

mesmo se o grafo for bipartido [12].

Determinar ciclos e caminhos hamiltonianos nos grafos Kneser e Kneser bipartidos e

um problema bem estudado e sua importancia esta relacionada a conjecturas abertas ha

decadas.

Conjectura 1 (Lovasz, 1970 [18]). Todo grafo nao-direcionado, conexo e vertice-transitivo

tem um caminho hamiltoniano.

Quase uma decada apos a Conjectura 1, foi conjecturado que:

Conjectura 2 (Biggs, 1979 [1]). O grafo ımpar Ok e hamiltoniano para k > 2.

Para os grafos Bk foi conjecturado que:

Conjectura 3 (Havel, 1983 [14]). O grafo Bk e hamiltoniano para k ≥ 1.

Ambas as conjecturas de Biggs e Havel focam na existencia de ciclos hamiltonianos,

enquanto a conjectura de Lovasz foca na existencia de caminhos hamiltonianos.

Devido a dificuldade de se provar a conjectura de Biggs, os pesquisadores tentam

provar a conjectura de Havel, que parece ser um problema mais facil pelo fato de Bk

ser bipartido. No entanto, ate agora, nenhuma das conjecturas foi resolvida. De fato,

ambas as Conjecturas 2 e 3 estao fortemente relacionadas a conjectura de Lovasz, pois os

grafos Kneser K(n, k) e Kneser bipartidos B(n, k) formam uma famılia de grafos conexos

e vertice-transitivos para n > 2k. Portanto, o estudo de ciclos e caminhos hamiltonianos

nestes grafos pode fornecer mais evidencias para apoiar a conjectura de Lovasz, ou oferecer

um contra-exemplo para a mesma.

A Conjectura 2 foi verificada para todo k ≤ 13 [19, 20, 27], enquanto a Conjectura 3

para k ≤ 17 [9, 10, 26, 28]. Chen mostrou que os grafos Kneser sao hamiltonianos para

n ≥ 3k [6] e, mais tarde, para n ≥ 2.62k + 1 [7]. Shields e Savage [27] mostraram que os

grafos Kneser sao hamiltonianos para n ≤ 27, com excecao do grafo O2 que e o grafo de

Petersen e que foi provado ser hipohamiltoniano. Usando heurısticas, Shields e Savage [26]

Page 33: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 17

determinaram caminhos viaveis em Bk para 1 ≤ k ≤ 15. Shields et al. [28] estenderam

este resultado para k ≤ 17.

Posteriormente, Bueno et al. [2] mostraram que Bk = Ok e que um caminho viavel

em Bk leva nao somente a um ciclo hamiltoniano em Bk, mas tambem a um caminho

hamiltoniano em Ok, o que de fato significa que Ok tem um caminho hamiltoniano para

k ≤ 17.

A seguir, introduzimos o conceito de Computacao Paralela e a especificacao MPI

utilizada para o desenvolvimento do algoritmo paralelo proposto.

2.7 Computacao Paralela e MPI

Na computacao serial ou sequencial, um programa e decomposto em uma serie de instru-

coes e uma unica sequencia de instrucoes e executada, uma de cada vez, por uma CPU

em uma unica sequencia de dados [23].

Quando temos tarefas que exigem um maior poder computacional, que demandam mais

tempo para solucionar um dado problema, a computacao serial pode ser impraticavel e

uma forma de tentar resolve-lo e usando computacao paralela. A computacao paralela e

a utilizacao de varios recursos de computacao para resolver um problema computacional,

usando multiplas CPUs. O problema a ser resolvido e dividido em subproblemas que sao

resolvidos simultaneamente, cada um em um processador diferente. Durante esta fase, os

processadores podem comunicar-se uns com os outros para trocar resultados parciais. No

passo final, os resultados devem ser combinados para formar a solucao para o problema

original [23].

Exemplo 4 (Um problema dividido em quatro subproblemas). Cada subproblema e di-

vidido em instrucoes e essas instrucoes sao executadas por uma CPU. Cada subproblema

utiliza uma CPU e cada processo trabalha de forma independente (Figura 2.22).

instrucoes

CPU

Problema

t3 t2 t1

CPU

CPU

CPU

tn

Figura 2.22: Diagrama de funcionamento da computacao paralela para um problemadividido em quatro subproblemas2.

2Adaptada de https://computing.llnl.gov/tutorials/parallel_comp/, acesso em 10-jun-

2012.

Page 34: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 18

De acordo com o compartilhamento de memoria, adotamos a seguinte classificacao [5]:

sistemas fortemente acoplados, onde um unico espaco de enderecamento e compartilhado

por todos os processadores, ou fracamente acoplados, onde cada processador tem o seu

proprio espaco de enderecamento. Em sistemas fortemente acoplados, a comunicacao

entre diferentes processadores ocorre atraves de instrucoes de escrita e leitura em posicoes

de memoria: um processador escreve em uma determinada posicao e outro processador

le essa mesma posicao. Ja em sistemas fracamente acoplados, a comunicacao entre os

processos e possıvel atraves de primitivas de troca de mensagens como send e receive.

O processamento se baseia no princıpio de que podemos dividir um problema em partes

menores para serem resolvidas em paralelo, com um processamento mais rapido, mesmo

para tarefas complexas. Em geral, um problema computacional utilizando computacao

paralela e resolvido mais rapidamente que em computacao serial. Existem casos, no

entanto, em que nao e possıvel utilizar uma estrategia paralela.

O Message Passing Interface (MPI) e uma especificacao para a troca de mensagens

em paralelo, de forma que um processo seja capaz de se comunicar com outro, mesmo em

maquinas diferentes. Nao e uma biblioteca, mas a especificacao do que uma biblioteca deve

possuir para fornecer um padrao de trocas de mensagens. Ate agora, esta especificacao

esta definida para as linguagens C/C++ e Fortran.

O MPI tem como objetivos: (a) aumentar a portabilidade dos programas, (b) prover

uma interface de comunicacao confiavel e (c) conseguir implementacoes eficientes em varias

arquiteturas. Um programa feito com o uso do MPI pode, em princıpio, ser compilado

em plataformas diferentes sem necessidade de alteracao do codigo, necessitando apenas

da dispobilidade de alguma biblioteca que implemente o MPI.

No MPI, uma aplicacao e constituıda por um ou mais processos, que se comunicam

entre si, atraves do envio e recebimento de mensagens. Sao possıveis, tambem, opera-

coes coletivas, por exemplo, onde todos os processos recebem e/ou enviam as mesmas

mensagens. Cabe ao programador descobrir a melhor forma de paralelizar o problema,

dividindo as tarefas entre os processos. Cada processo pode executar uma tarefa dife-

rente ou todos podem executar a mesma tarefa. Cada instrucao e executada de forma

independente em cada processo.

A estrutura basica de um programa que use MPI e mostrada na Figura 2.23.

Cada processo MPI e identificado por um numero unico, e esta atribuicao e feita

quando o processo e iniciado em tempo de execucao. O numero atribuıdo a cada pro-

cesso e conhecido como rank. Denotaremos por rankp o rank de um processo, onde

p = 0, . . . , np − 1 e np e o numero de processos sendo executados por um determinado

programa. Uma tag e um numero inteiro nao negativo escolhido pelo programador para

identificar uma mensagem. Um grupo de comunicacao e um conjunto de processos que

Page 35: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 19

podem se comunicar diretamente.

Declaracoes, prototipos, etc.

Inıcio do ProgramaCodigo Serial

Inıcio de codigo Paralelo

Fim de codigo Paralelo

Codigo SerialFim do Programa.

...

...

...

...

Inclusao de arquivo MPI

Inicializa ambiente MPI

Fazer trabalho e troca de mensagens

Termina ambiente MPI

Figura 2.23: Estrutura basica de um programa que use MPI3.

Existem 6 rotinas basicas do MPI. Sao elas:

• MPI Init: Inicializa o ambiente MPI;

• MPI Finalize: Finaliza o ambiente MPI;

• MPI Comm rank: Identifica um processo MPI dentro de um determinado grupo.

Retorna um valor inteiro entre 0 e (np− 1);

• MPI Comm size: Retorna o numero de processos dentro do grupo;

• MPI Send: Rotina basica para envio de mensagens;

• MPI Recv: Rotina basica para recebimento de mensagens.

O Single Program Multiple Data (SPMD) e um modelo de programacao em que todos

os programas que constituem a aplicacao estao incorporados em um unico executavel

e cada processo executa uma copia desse executavel. Atraves de estruturas de selecao

e condicao, cada processo pode executar parte do codigo, de acordo com as condicoes

estabelecidas.

Utilizamos entao, o MPI com o modelo de programacao SPMD para o desenvolvimento

do algoritmo que propomos (Capıtulo 4) para a busca de caminhos viaveis em Ok = Bk.

Algoritmos sao implementados para tentar solucionar problemas cada vez mais difıceis ou

melhorar solucoes ja existentes. Alguns algoritmos demandam muito tempo de execucao e

uma ideia e usar os algoritmos paralelos. Dentre os algoritmos ja implementados utilizando

computacao paralela [25], citamos o algoritmo de Floyd para o problema do caminho

3Adaptada de https://computing.llnl.gov/tutorials/mpi/, acesso em 10-jun-2012.

Page 36: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 2. FUNDAMENTACAO TEORICA 20

mınimo, o algoritmo de Kruskal para determinar uma arvore geradora mınima e um

algoritmo para o Problema do Caixeiro Viajante.

Para o problema de ciclos e caminhos hamiltonianos nos K(n, k) e B(n, k), desconhe-

cemos ate o momento, um algoritmo paralelo.

Page 37: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Capıtulo 3

Algoritmos para Grafos Kneser e

Kneser Bipartidos

Os algoritmos conhecidos para determinar ciclos e caminhos hamiltonianos em grafos

Kneser e Kneser bipartidos utilizam uma abordagem heurıstica. Neste capıtulo, descreve-

mos brevemente estes algoritmos que denotamos por SS99 [26], SS04 [27] e SSS09 [28].

3.1 O Algoritmo SS99

Em 1990 David Moews e Reid Mike [24] mostraram que o grafo Bk e hamiltoniano para

1 ≤ k ≤ 11. Em 1999 Shields e Savage [26] estenderam o resultado de Moews e Reid para

mostrar que o grafo Bk e hamiltoniano para 1 ≤ k ≤ 15.

Para encontrar ciclos hamiltonianos nesses grafos com milhoes de vertices, Shields e

Savage [26] adotaram a seguinte estrategia:

Passo (1): transformar um grafo Bk em um grafo reduzido Bk;

Passo (2): identificar os vertices σ(r1) e σ(r2) em Bk com a propriedade de que qualquer

caminho hamiltoniano em Bk comecando em σ(r1) e terminando em σ(r2) leva a

um ciclo hamiltoniano em Bk;

Passo (3): aplicar uma heurıstica para encontrar um caminho hamiltoniano entre σ(r1)

e σ(r2) – o que nos chamamos de caminho viavel.

A reducao utilizada no passo (1) foi usada por Moews e Reid [24] e complementada

por Dejter [8]. Os passos (2) e (3) foram desenvolvidos por Shields e Savage [26].

Uma busca backtrack garantidamente encontra um caminho viavel de σ(r1) para σ(r2),

se tal caminho existe. No entanto, por ser uma busca exaustiva o tempo computacional

21

Page 38: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 22

e exponencial no pior caso e e demasiadamente lenta mesmo para grafos relativamente

pequenos.

Definimos como rotacao de um vertice vi, a troca de posicoes entre os vertices vi e vj de

um caminho P enquanto i < j, para j iniciando em |P |. A cada iteracao decrementamos

o valor de j e incrementamos o valor de i.

A heurıstica de Posa [22] e um algoritmo que procura por caminhos hamiltonianos em

grafos aleatorios. O algoritmo constroi um caminho iniciando em um vertice s e estende

enquanto for possıvel, de modo que um determinado vertice t seja o ultimo vertice do

caminho. Quando o caminho nao pode ser estendido a partir de um vertice u, o algoritmo

seleciona um vertice v adjacente a u e executa uma rotacao de v com o ultimo vertice do

caminho. O algoritmo de Posa nao faz backtrack, porem pode nao ser bem sucedido em

encontrar um caminho hamiltoniano, mesmo se existir.

A heurıstica SS99 e uma variacao da heurıstica de Posa [22] que, antes de realizar uma

rotacao, verifica o proximo vertice usando uma busca em largura (BFS). O algoritmo

SS99 considera s = σ(r1) e t = σ(r2), e estende o caminho como e feito no algoritmo

de Posa ate que todos os vertices adjacentes do ultimo vertice u ja estejam no caminho

(Algoritmo 1).

Algoritmo 1: Algoritmo SS99 para encontrar um caminho viavel em Bk

Entrada: O caminho P , um grafo Bk e os vertices σ(r1) e σ(r2)1 inıcio2 se |P | = 0 entao3 Adicionar o vertice σ(r1) na primeira posicao de P4 fim se

5 enquanto |P | < (|V (Bk)| − 1) faca6 Seja u o ultimo vertice de P

7 se ∃v ∈ V (Bk) tal que u e v sao adjacentes, v /∈ P e v 6= σ(r2) entao8 Adicionar o vertice v na ultima posicao em P9 senao

10 BFSExtend(P, σ(r2)) //*Algoritmo 2*//

11 fim se

12 fim enqto

13 se (|P | < |V (Bk)|) entao14 BFSExtend(P,NIL)15 se u e σ(r2) sao adjacentes entao16 Adicionar o vertice σ(r2) na ultima posicao de P17 fim se

18 fim se19 retorna |P |20 fim

Page 39: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 23

O algoritmo SS99 (Algoritmo 1) recebe um caminho como entrada que, na primeira

execucao, e vazio. Se o caminho nao for vazio, o algoritmo prossegue a execucao a partir

do ultimo vertice de P que chamamos de u. Isso nos possibilita fornecer um caminho

parcial a partir do qual o algoritmo trabalhara. Se |P | = 0, o vertice σ(r1) e adicionado

na primeira posicao de P (linha 2). Se nao for possıvel estender o caminho P (linha 7),

pois nao ha mais vertices adjacentes a u que nao sejam o proprio vertice σ(r2), o algoritmo

SS99 usa a BFS para procurar uma sequencia de uma ou mais rotacoes, a partir do vertice

u para que a busca pelo caminho viavel seja reiniciada. A escolha do vertice v adjacente

a um vertice z para verificar se z ∈ P e feita aleatoriamente (linha 13 do Algoritmo 2).

Algoritmo 2: Algoritmo BFSExtend para procurar uma ou mais sequencias derotacoes

Entrada: O caminho P e um valor t que pode ser σ(r2) ou NIL1 inıcio2 para cada vertice v ∈ P faca3 visited[v] ← false4 fim para5 u← ultimo vertice ∈ P6 Adicionar o vertice u na fila Q7 visited[u] ← true8 J [u]← 09 π[u]← NIL

10 enquanto a fila Q nao estiver vazia faca11 z ← primeiro vertice em Q12 remover z de Q13 para cada vertice v em Adj(z) faca14 se v 6= t entao15 se v ∈ P entao16 p← FindPosition(P, z, Pos[v]) //*Algoritmo 3*//

17 w ← FindV ertex(P, z, p+ 1) //*Algoritmo 4*//

18 se ¬visited[w] e w 6= t entao19 visited[w] ← true20 J [w]← p21 π[w]← z22 Adicionar o vertice w na fila Q

23 fim se

24 senao25 P ← DoReversals(P, z) //*Algoritmo 5*//

26 retorna true

27 fim se

28 fim se

29 fim para

30 fim enqto31 retorna false

32 fim

Page 40: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 24

Shields e Savage [26] nao assumem nenhuma representacao particular do grafo no

Algoritmo 2, somente que a funcao Adj(q) na linha 13 retorna uma lista de vertices

adjacentes a um vertice q e ha varias estruturas de dados para cada vertice na arvore.

Para cada vertice q uma variavel booleana visited[q] indica se q ja esta em P ou nao

e a posicao de q em P e acessada por Pos[q]. O vertice antecessor de q na arvore e

armazenado em π[q]. Lembrando que u e o ultimo vertice em P . A nova posicao de um

vertice v adjacente a q e que atualmente pode ser acessada por Pos[v] e armazenada em

J [q], assumindo que se uma serie de rotacoes for feita em P entao, q = u. O Algoritmo 3

encontra essa nova posicao de v recursivamente.

Algoritmo 3: Algoritmo FindPosition para encontrar a nova posicao de um verticev ∈ P e adjacente a q

Entrada: O caminho P , um vertice q e p = Pos[v]1 inıcio2 se J [q] ≥ 0 entao3 p← FindPosition(P, π[q], p)4 se J [q] < p entao5 p← |P | − p+ J [q] + 16 fim se

7 fim se8 retorna p

9 fim

O Algoritmo 4 encontra um vertice w que estara uma posicao apos o vertice v em P ,

e assim como no Algoritmo 3, assume que se uma serie de rotacoes for realizada em P

entao, q = u.

Algoritmo 4: Algoritmo FindVertex para encontrar um novo vertice w uma posicaoapos o vertice v

Entrada: O caminho P , um vertice q e a posicao r = Pos[v] + 11 inıcio2 enquanto J [q] ≥ 0 faca3 se J [q] ≤ r entao4 r ← (|P | − r) + J [q] + 15 fim se6 u← π[q]

7 fim enqto8 retorna P [r]

9 fim

Observe no Algoritmo 3 e no Algoritmo 4 que os calculos sao realizados sem executar

qualquer rotacao em P . As rotacoes sao executadas somente quando um vertice v e adja-

cente a q e v /∈ P , garantindo que q = u em P e com isso, ser possıvel estender P atraves

Page 41: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 25

desse novo vertice final (Algoritmo 5).

Algoritmo 5: Algoritmo DoReversals para fazer rotacoes em P e ao final das ro-tacoes q = u

Entrada: O caminho P e um vertice q1 inıcio2 se J [q] ≤ r entao3 DoReversals(P, π[q])4 l← J [q] + 15 h← |P |6 enquanto l < h faca7 t← P [h]8 Pos[P [h]]← l9 Pos[P [l]]← h

10 P [h]← P [l]11 P [l]← t12 h← h− 113 l← l + 1

14 fim enqto

15 fim se

16 fim

Veja um exemplo da execucao do Algoritmo 1 no Exemplo 5, para |P | = |V (B4)| − 1.

Exemplo 5 (Execucao do Algoritmo SS99). Temos |V (B4)| = 14, σ(r1) = 000001111,

σ(r2) = 001010101 e B4 = O4. Considere o caminho P como entrada do algoritmo SS99:

P = (σ(r1) =000001111, 000010111, 000110101, 001010011, 001001011, 001001101,

000101101, 000011101, 000101011, 000100111, 000011011, 000111001, 000110011).

Observe que |P | = 13 = (|V (B4)| − 1), assim a execucao comeca na linha 13 do

Algoritmo 1. O caminho P tem o vertice σ(r1)=000001111 na primeira posicao e falta

adicionar um unico vertice que e σ(r2)=001010101, porem σ(r2) nao e adjacente ao

ultimo vertice de P que e 000110011. Entao e necessario efetuar rotacoes em P para que

encontre um novo vertice u adjacente a σ(r2).

O Algoritmo 2 considera inicialmente que todos os vertices em P nao foram visitados

pela BFS (linha 2). Considere u = 000110011 e que u foi visitado. Em um determinado

momento, o vertice z na linha 11 e z = 000101101 e o vertice v adjacente a z (linha 13)

encontrado aleatoriamente e v = 001010101 e v /∈ P . Observe que v = 001010101 =

σ(r2), e e justamente o vertice que falta em P . Entao fazemos rotacoes em P para

que u = z = 000101101 e assim, ser possıvel adicionar σ(r2) na ultima posicao em P

(Algoritmo 5).

Page 42: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 26

Considere l = J [v1] a posicao de um vertice v1 a qual e feita a troca de posicoes

com um vertice v2 e h = Pos[v2]. Considere ainda que, P [i] e o vertice na posicao i do

caminho P , onde 1 ≤ i ≤ |P |. Por simplificacao, nao mostramos os calculos que ja foram

realizados pelo Algoritmo 3 e pelo Algoritmo 4 para encontrar o valor inicial de l em cada

rotacao, mas somente mostramos as duas rotacoes em P inicialmente para h = |P | = 13:

Rotacao 1: l = 11 e h = 13. Enquanto l < h :

• troca entre as posicoes l = 11 e h = 13 de P . Inicialmente, P [l = 11] =

000011011 e P [h = 13] = 000110011. Apos a troca: P [h = 13] =000011011 e

P [l = 11] = 000110011. Decrementamos h e incrementamos l. A rotacao se

encerra, pois l = h = 12 (Figura 3.1(a));

Rotacao 2: l = 7 e h = 13. Enquanto l < h :

• troca entre as posicoes l = 7 e h = 13 de P . Inicialmente, P [l = 7] =

000101101 e P [h = 13] = 000011011. Apos a troca: P [h = 13] =000101101

e P [l = 7] = 000011011. Decrementamos h e incrementamos l. A rotacao

continua, pois l = 8 < h = 12 (Figura 3.1(b));

• troca entre as posicoes l = 8 e h = 12 de P . Inicialmente, P [l = 8] =

000011101 e P [h = 12] = 000111001. Apos a troca: P [h = 12] =000011101

e P [l = 8] =000111001. Decrementamos h e incrementamos l. A rotacao

continua, pois l = 9 < h = 11 (Figura 3.1(c));

• troca entre as posicoes l = 9 e h = 11 de P . Inicialmente, P [l = 9] =

0001010111 e P [h = 11] = 000110011. Apos a troca: P [h = 11] =000101011

e P [l = 9] =000110011. Decrementamos h e incrementamos l. A rotacao se

encerra, pois l = h = 10 (Figura 3.1(d)).

O caminho P tem agora um novo vertice na ultima posicao em P , que e o vertice

u = 000101101 (Figura 3.1(d)). Como so falta um vertice para que P seja um caminho

viavel, verificamos que u e adjacente a σ(r2) e adicionamos σ(r2) na ultima posicao em

P , obtendo um caminho viavel de B4 = O4 (Figura 3.2).

Observe no Exemplo 5 que, mesmo que |P | = (|V (B4)|−1), nao e tao simples adicionar

o vertice σ(r2) na posicao correta em P , mesmo nesse caso em que o grafo tem apenas

14 vertices. A dificuldade de encontrar tal caminho aumenta de acordo com o valor de

k, pois mesmo para k relativamento pequeno, o numero de vertices cresce rapidamente

(Tabela 2.2).

Para k = 15 que tem 9.694.845 vertices no grafo Bk, os autores [26] precisaram de tres

semanas de processamento em um computador Intel Pentium-II de 400 MHz e 192 MB de

Page 43: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 27

000110101

001010011

001001011

001001101

P

000101101

000011101

000010111

000001111

000101011

000100111

000110011

000111001

000011011

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

σ(r1)

(a)

000110101

001010011

001001011

001001101

P

000011011

000011101

000010111

000001111

000101011

000100111

000110011

000111001

000101101(13)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

σ(r1)

(b)

000110101

001010011

001001011

001001101

P

000011011

000111001

000010111

000001111

000101011

000100111

000110011

000011101

000101101(13)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

σ(r1)

(c)

000110101

001010011

001001011

001001101

P

000011011

000111001

000010111

000001111

000110011

000100111

000101011

000011101

000101101(13)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

σ(r1)

(d)

Figura 3.1: Rotacoes em P para que o vertice 000101101 seja o ultimo vertice em P .

000110101

001010011

001001011

001001101

P

000011011

000111001

000010111

000001111 = σ(r1)

000110011

000100111

000101011

000011101

000101101

001010101 = σ(r2)

Figura 3.2: Um caminho viavel do grafo B4 = O4.

memoria RAM, para encontrar um caminho viavel em B15. Os autores relatam, porem,

que algoritmo encontrou um caminho viavel na primeira execucao para k ≤ 15.

A seguir, descrevemos brevemente um algoritmo heurıstico de Shields e Savage [27]

feito para encontrar ciclos hamiltonianos diretamente em B(n, k) e K(n, k), sem o uso

dos grafos reduzidos.

3.2 O Algoritmo SS04

Em 2004 Shields e Savage [27] usaram um algoritmo heurıstico para mostrar que todos

os grafos K(n, k) conexos (exceto o grafo de Petersen K(5, 2) = O2) tem um ciclo hamil-

toniano para n ≤ 27. O algoritmo tambem determinou ciclos hamiltonianos em B(n, k)

Page 44: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 28

para n ≤ 27. O algoritmo SS04 [27] e uma modificacao do algoritmo SS99 [26], no entanto

a heurıstica e aplicada diretamente nos grafos K(n, k) e B(n, k), sem utilizar os grafos

reduzidos.

Manipulacoes de grafos tao grandes quanto, por exemplo, o grafo K(27, 13) = O13 com

20.058.300 vertices e 140.408.100 arestas, exigiram melhorias tanto no tempo de execucao,

quanto no espaco requerido para a heurıstica. Em um sistema em que o programa requer

mais memoria do que o sistema tem disponıvel, os dados sao alternados entre memoria

e disco pelo sistema operacional. Quando isso ocorre, os tempos de execucao tendem

aumentar de forma significativa.

Algumas otimizacoes no algoritmo SS04 utilizadas para reduzir os requisitos de ar-

mazenamento foram:

1. reduzir tempo de execucao na construcao da arvore BFS;

2. as listas de adjacencias sao geradas quando necessarias.

Estas melhorias permitiram o algoritmo SS04 obter resultados para n ≤ 27 em um

computador desktop com 1.6GHz e 640MB de memoria RAM. A cada meia hora, o cami-

nho parcial obtido era salvo em um arquivo, para permitir reiniciar o problema atraves

de uma parte do caminho, caso necessario.

A seguir, discutimos o algoritmo de Shields et al. [28], que consiste no algoritmo

SS99 [26] com algumas modificacoes. Esse algoritmo foi tambem aplicado aos grafos

reduzidos Bk.

3.3 O Algoritmo SSS09

Em 2009, Shields et al. [28] estenderam o resultado do algoritmo SS99 [26] mostrando que

Bk e hamiltoniano para 1 ≤ k ≤ 17. Os novos resultados foram obtidos apos modificacoes

no algoritmo, o que tornou possıvel encontrar um caminho viavel no grafo reduzido B17

com 129.644.790 vertices, usando um computador AMD Athlon 3500+ com 2 GB de

memoria RAM de 64 bits.

O algoritmo SSS09 e o algoritmo SS99 [26] modificado para usar valores de 64 bits.

Adicionalmente, Shields et al. [28] descobriram que grande parte do tempo foi gasto na

realizacao de operacoes de rotacao mais do que na BFS para determinar as sequencias de

rotacoes. Assim, os autores fizeram alteracoes na heurıstica que resultaram em melhor

desempenho:

1. quando a BFS encontra uma sequencia de rotacoes que permitam uma extensao do

caminho, ao inves de realmente executar cada rotacao do caminho, a sequencia de

Page 45: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 3. ALGORITMOS PARA GRAFOS KNESER E KNESER BIPARTIDOS 29

rotacoes e codificada como uma lista de pares ordenados, cada um representando o

numero de vertices no caminho e o ponto de rotacao;

2. periodicamente sao implementadas todas as rotacoes codificadas na lista de pares

ordenados.

Os autores mostraram que essas modificacoes reduzem significativamente o trabalho

medio por rotacao.

No proximo capıtulo, apresentamos um algoritmo paralelo para determinar caminhos

viaveis em Ok. Utilizamos o algoritmo SS99 [26] para finalizar nosso algoritmo.

Page 46: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Capıtulo 4

Algoritmo Proposto

Dentre os algoritmos implementados para o problema SS99 [26], SS04 [27] e SSS09 [28],

nenhum deles utilizou uma abordagem paralela ou mesmo uma maquina de maior poder

computacional que um AMD Athlon 3500+ com 2Gb de memoria RAM.

Considerando que, para n = 2k+ 1, com excecao de apenas alguns valores conhecidos,

o problema permanece em aberto para ambos os grafos Ok e Bk, propomos um algoritmo

para a busca de caminhos viaveis em Ok=Bk.

Comecamos descrevendo a representacao computacional utilizada para o grafo Ok e

para a solucao na Secao 4.1. Na Secao 4.2, descrevemos a entrada fornecida ao algoritmo.

Com o objetivo de melhorar o desempenho do programa, ao inves de fornecer apenas

os vertices do grafo, utilizamos os emparelhamentos modulares de [11] para obter uma

cobertura de vertices de Ok por ciclos disjuntos. Entao buscamos um caminho viavel

no grafo atraves da concatenacao de caminhos obtidos a partir destes ciclos. Nesta fase,

utilizamos um algoritmo paralelo que descrevemos em detalhes na Secao 4.3.

Pode ser, entretanto, que nem todos os vertices do grafo possam ser colocados no

caminho obtido no algoritmo paralelo. Entao, na sequencia, em uma fase sequencial,

utilizamos o algoritmo SS99 [26] para adicionar adequadamente estes vertices ao caminho.

Esta fase e descrita na Secao 4.4. Portanto, o algoritmo proposto consiste em um algoritmo

paralelo seguido de um algoritmo sequencial, desenvolvidos em C/C++ e utilizamos o MPI

como abordagem paralela.

Finalmente, na Secao 4.5, apresentamos um exemplo da execucao do algoritmo sobre

o grafo O4.

30

Page 47: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 31

4.1 Representacao Computacional da Solucao e do

Grafo Ok

A solucao do caminho viavel e representada atraves de um caminho de vertices em um

vetor, onde cada posicao do vetor equivale a posicao do vertice no caminho obtido.

Para a representacao do grafo Ok, utilizamos um vetor contendo os vertices do grafo.

Utilizar uma lista de adjacencias ou matriz de adjacencias para representar o grafo Ok

implica um alto custo em memoria e em manipulacao de dados, ja que o numero de

vertices e arestas do grafo Ok cresce rapidamente para valores de n e k relativamente

pequenos (Tabela 2.2).

Como o algoritmo para encontrar caminhos viaveis tem como entrada um grafo re-

duzido, e suficiente armazenar apenas um representante de cada classe, atraves do qual

determinamos as adjacencias entre os vertices em tempo quadratico em n, conforme

mostramos no Algoritmo 6 e Exemplo 6. Assim, podemos dispensar a representacao

explıcita das arestas na memoria. Por ultimo, ainda com o objetivo de otimizar o uso da

memoria, utilizamos a representacao binaria dos vertices e adotamos uma representacao

compacta de cada vertice em um array de bits.

Observe o Algoritmo 6. Para n = 2k + 1, cada vertice tem n bits dos quais k bits

sao 1 e os demais (k + 1) bits sao 0. Para encontrar as adjacencias de um vertice u em

Bk, a cada iteracao do algoritmo, fixamos 1 no lugar de um 0 em u. Entao geramos o

complemento desse novo vertice de Bk, obtendo uma adjacencia de u em Ok. Finalmente,

determinamos o representante de classe correspondente que resulta em uma adjacencia

em Ok.

Algoritmo 6: Algoritmo para determinar se dois vertices sao adjacentes

Entrada: Vertices u e v1 inıcio2 para i de 0 ate (n-1) faca3 aux← u4 se aux[i] = 0 entao5 aux[i]← 16 aux ← complemento(aux)7 aux ← representante classe(aux)8 se aux = v entao9 retorna true

10 fim se

11 fim se

12 fim para13 retorna false

14 fim

Page 48: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 32

Quanto a complexidade do Algoritmo 6, as operacoes dentro do laco (linha 2) sao

todas de tempo constante, com excecao das operacoes nas linhas 6 e 7 que tem tempo

linear em n, cada uma delas. Isso porque gerar o complemento de uma string binaria

de comprimento n (linha 6) requer percorrer toda a string trocando 0 por 1 e vice-versa.

Por outro lado, determinar o representante de classe de um vertice (linha 7) consiste em

encontrar a maior sequencia de zeros consecutivos e move-los para o inıcio da string, o que

leva tempo O(n). Portanto, o Algoritmo 6 executa em tempo O(n2), o que ainda e mais

vantajoso para o desempenho do algoritmo que armazenar as adjacencias dos vertices na

memoria, ja que |V (Ok)| =(2k+1k

)/n e |E(Ok)| > k |V (Ok)|.

Exemplo 6 (Determina se dois vertices sao adjacentes). Considere os vertices u = 00011

e v = 00101. Desejamos saber se u e v sao adjacentes em O2. Como u tem k 1’s, segue

que u ∈ B2 e u ∈ O2 (Figura 4.1). Entao, a aplicacao do Algoritmo 6 sobre u resulta em:

Adjacencia em B2Adjacencia em O2 Representante de classe

obtida de ui de ui em O2

Fixa 1 no 1o zero u1 = 00111 u1 = 11000 σ(u1) = 00011Fixa 1 no 2o zero u2 = 01011 u2 = 10100 σ(u2) = 00101Fixa 1 no 3o zero u3 = 10011 u3 = 01100 σ(u3) = 00011

O Algoritmo 6 compara entao se v e igual a algum dos vertices obtidos na ultima

coluna. Observe que, neste caso, v = σ(u2) = 00101, assim o algoritmo termina na

segunda iteracao.

Lembramos que, nos grafos Bk dois vertices sao adjacentes se um subconjunto esta

contido no outro e, nos grafos Ok, dois vertices sao adjacentes se os subconjuntos sao

disjuntos. Na Figura 4.1 temos em destaque os vertices u = 00011 e seus adjacentes em

B2 (Figura 4.1(a)), em O2 Figura 4.1(b) e em O2 Figura 4.1(c).

10100 11010

11000 11100

00011 00111

00101

01001

01011

10011

10001

00110

01010

01101

10101

11001

10010

01100

01110

10110

(a) B2

10001

10100

01010

00101

10010

01001

01100

1100001100

00011

(b) O2

σ(r2)

σ(00011 ) σ(00101 )

σ(r1)

(c) O2

Figura 4.1: Os grafos B2, O2 e O2 em representacao binaria.

A seguir, descrevemos a entrada do algoritmo paralelo.

Page 49: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 33

4.2 Entrada do Algoritmo

Atraves dos emparelhamentos modulares [11], podemos determinar dk2e coberturas de ver-

tices por ciclos disjuntos em Ok. Assim, escolhemos aleatoriamente uma destas coberturas

por ciclos disjuntos para ser a entrada do algoritmo. A quantidade de ciclos gerados varia

de acordo com o emparelhamento modular my. O numero de vertices em cada ciclo nao

e fixo, existindo ciclos relativamente longos ou ciclos tao pequenos que consistem apenas

em um vertice com um laco.

A partir de um emparelhamento modular my pre-determinado, geramos a cobertura

de vertices por ciclos disjuntos comecando por σ(r1). Quando o ciclo contendo σ(r1) esta

completo e se σ(r2) ainda nao esta em um ciclo, geramos o segundo ciclo a partir de σ(r2).

A partir desse ponto, toda vez que um ciclo e completado, buscamos o proximo vertice

que ainda nao esta em um ciclo e geramos o ciclo a partir dele.

Desde que σ(r1) deve ser o primeiro vertice do caminho viavel e σ(r2) deve ser o ultimo

vertice, se ambos estiverem no mesmo ciclo na cobertura de vertices por ciclos disjuntos

obtida, o ciclo e dividido em dois caminhos: um iniciando em σ(r1) e o outro iniciando

em σ(r2). De fato, para todos os ciclos obtidos, desconsideramos a aresta entre o primeiro

e o ultimo vertice, desde que o algoritmo paralelo trabalha com caminhos.

A seguir, descrevemos o algoritmo paralelo utilizado para concatenar os caminhos

obtidos a partir dos ciclos em Ok.

4.3 Fase paralela

A ideia geral do algoritmo paralelo e fornecer caminhos de Ok para cada processo, que

procura retornar um unico caminho da concatenacao dos caminhos recebidos. Quando

um processo j termina a concatenacao resultando em um unico caminho, um processo i

recebe o caminho de j e tenta concatenar com outro caminho. Isso e repetido ate que so

exista um unico processo e um unico caminho. Ao final da execucao, esperamos obter um

caminho viavel.

4.3.1 Inıcio do algoritmo

O inıcio do algoritmo paralelo consiste na distribuicao dos caminhos de Ok obtidos da

cobertura de vertices por ciclos disjuntos (linhas 3 a 6 do Algoritmo 7 na pagina 40).

Seja np o total de processos para a execucao do algoritmo paralelo e p o numero

do processo, onde p = 0, . . . , (np − 1). Denominamos de nCaminhos a quantidade de

caminhos obtidos de Ok.

Page 50: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 34

O processo 0 e o processo responsavel por distribuir de forma aleatoria os caminhos

entre os np processos. Cada processo p recebe bnCaminhosnp

c caminhos de Ok. Se houver

caminhos que nao foram enviados a nenhum processo p, esses caminhos sao distribuıdos

um para cada um dos primeiros p processos (Exemplo 7).

Antes dessa distribuicao, porem, o vertice σ(r2) e removido do inıcio de seu caminho.

Isso porque σ(r2) deve ser o ultimo vertice do caminho viavel. Assim, esse vertice e

armazenado em uma lista a qual serao adicionados tambem os vertices que nao puderem

ser adicionados a um caminho. A fase sequencial do algoritmo trabalhara para adicionar

os vertices dessa lista ao caminho final retornado pelo algoritmo paralelo. Chamamos os

vertices dessa lista de prejuızos

Exemplo 7 (Distribuicao dos caminhos de Ok entre np processos). Considere o grafo

O6 com 23 ciclos obtidos do emparelhamento modular Π(m1) e assuma np = 4. Cada

processo p = 0, 1, 2, 3 recebe 5 caminhos. Os 3 caminhos restantes sao dados a p = 0, 1, 2

que recebem um caminho a mais que os outros.

Na proxima secao mostramos como o algoritmo paralelo executa a partir de agora ate

atingir o criterio de parada.

4.3.2 Comportamento dos processos

Os processos tentam concatenar caminhos de Ok para, ao final do algoritmo paralelo,

obtermos um unico caminho. Existem duas fases de concatenacao de caminhos:

Fase 1: cada processo tenta concatenar os caminhos recebidos na fase inicial do algoritmo;

Fase 2: um processo envia seu caminho final a outro processo que, por sua vez, tenta

concatenar ambos os caminhos.

As duas fases sao sempre executadas, exceto quando so existe um ciclo na cobertura de

vertices por ciclos disjuntos. Neste caso, o algoritmo paralelo nao executa as linhas 8 a 34

do Algoritmo 7, mas executa somente a partir da linha 35. Nesta situacao, consideramos

duas situacoes:

(1): um unico caminho P e |P | = |V (Ok)|. Esse caso so ocorreu ate agora para O1;

(2): um unico caminho P e |P | < |V (Ok)|. Ocorre quando obtemos dois ciclos na cober-

tura de vertices por ciclos disjuntos, porem, o segundo caminho contem somente o

vertice σ(r2). Para k ≤ 18, esse caso ocorre somente em O2 e O3, ambos para o

2-fator Π(m1).

Page 51: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 35

A seguir, descrevemos as duas fases de concatenacao de caminhos no algoritmo para-

lelo.

Primeira fase de concatenacao de caminhos

Dentre os caminhos recebidos no inıcio do algoritmo, cada processo p escolhe dois caminhos

P1 e P2 para tentar concatena-los, retornando um unico caminho P . Os dois caminhos

P1 e P2 sao excluıdos do processo p e P e adicionado. Essa operacao e feita ate que cada

processo tenha somente um caminho (linhas 8 a 15 do Algoritmo 7).

O algoritmo procura minimizar o numero de prejuızos, que denotamos por ρ, durante

a concatenacao dos caminhos. Discutimos agora os criterios utilizados pelo algoritmo para

concatenar P1 e P2.

Denotamos por W ′ ◦W ′′ o caminho obtido por percorrer os vertices de um caminho

W ′ seguidos pelos vertices de um caminho W ′′. Dado um caminho W ′, denotamos por←−W ′ o caminho atravessado do ultimo para o primeiro vertice.

Assuma que |P1| ≤ |P2|. O maior numero de prejuızos possıvel na concatenacao de

P1 e P2 e ρ = (|P1| − 1) e o menor numero de prejuızos e ρ = 0. O algoritmo inicia com

α = 0 e α e incrementado a cada iteracao, ate que seja possıvel concatenar P1 e P2 ou

α = |P1|.

Considere P1 = (v1, v2, . . . , vq) e P2 = (w1, w2, . . . , wm). Na primeira iteracao, veri-

ficamos se P1 e P2 podem ser concatenados verificando as adjacencias dos vertices nas

extremidades dos caminhos. Ou seja:

• se {v1, w1}, entao P =←−P1 ◦ P2 (Figura 4.2(a));

• se {v1, wm}, entao P = P2 ◦ P1 (Figura 4.2(b));

• se {w1, vq}, entao P = P1 ◦ P2 (Figura 4.2(c));

• se {wm, vq}, entao P = P1 ◦←−P2 (Figura 4.2(d)).

Em qualquer destes casos, ρ = α = 0. Porem, se nao e possıvel concatenar P1 e P2, o

algoritmo prossegue verificando se P1 pode ser colocado entre dois vertices wi e wj de P2,

para 1 ≤ i ≤ j ≤ m, tal que {wi, wj} ∈ P2, {v1, w1} ∈ E(Ok) e {vq, wj} ∈ E(Ok). Neste

caso, obtemos P = (w1, . . . , wi) ◦ P1 ◦ (wj, . . . , wm).

Analogamente, verificamos se P2 pode ser colocado entre dois vertices de P1.

Porem, se finalmente P1 e P2 nao podem ser concatenados com ρ = 0, entao o algoritmo

prossegue incrementando α e, enquanto α < |P1|, verifica:

Page 52: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 36

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(a) {v1, w1}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(b) {v1, wm}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(c) {w1, vq}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(d) {wm, vq}

Figura 4.2: Possıveis concatenacoes de P1 e P2 para α = 0.

• se {v1, w1+α}, entao P =←−P1 ◦ (w1+α, . . . , wm) (Veja Figura 4.3(a) com α = 1);

• se {v1, wm−α}, entao P =←−P1 ◦←−−−−−−−−−−(w1, . . . , wm−α) (Veja Figura 4.3(b) com α = 1);

• se {w1, vq−α}, entao P =←−−−−−−−−−(v1, . . . , vq−α) ◦ P2 (Veja Figura 4.3(c) com α = 1);

• se {w1, v1+α}, entao P =←−−−−−−−−−(v1+α, . . . , vq) ◦ P2 (Veja Figura 4.3(d) com α = 1).

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(a) {v1, w1+α}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(b) {v1, wm−α}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(c) {w1, vq−α}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(d) {w1, v1+α}

Figura 4.3: Possıveis concatenacoes de P1 e P2 para α = 1.

Novamente, em qualquer destes casos, ρ = α. Em todas as possıveis concatenacoes de

P1 e P2, se ocorrem prejuızos, os vertices sao todos do mesmo caminho. Assim, a lista de

prejuızos pode conter caminhos. Quando um processo termina de concatenar os caminhos

recebidos no inıcio do algoritmo, ele procura concatenar os caminhos existentes na lista

de prejuızos ao caminho P .

Discutimos agora algumas precaucoes observadas pelo algoritmo em relacao ao vertice

σ(r1), considerando que este deve ser o primeiro vertice do caminho viavel:

Caso 1: σ(r1) nao esta em P1 ou P2. E o caso mais simples, pois nao e necessario nenhum

cuidado quanto a perda do vertice inicial do caminho viavel e as concatenacoes

seguem a forma geral ja discutida. A Figura 4.4 ilustra esse caso com dois caminhos

do grafo O4. Como pode ser visto na Figura 4.4(a), o vertice σ(r1) = 000001111

nao esta em P1 e nem P2. Na Figura 4.4(b), concatenamos P1 e P2 com ρ = 0, pois

o primeiro vertice de P1 e 000011101 que e adjacente ao primeiro vertice de P2 que

e 000100111. Na Figura 4.4(c), temos o P =←−P1 ◦ P2.

Page 53: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 37

000011101 000100111

000110011

000111001

P1 P2

000110101

001010011

000010111

000101101

000101011

(a) P1 e P2

000011101 000100111

000110011

000111001

P1 P2

000110101

001010011

000010111

000101101

000101011

(b) Concatenacao de P1 e P2

000011101

000100111

000110011

000111001

P

000110101

001010011

000010111

000101101

000101011

(c) P

Figura 4.4: Um exemplo de concatenacao de P1 e P2 em O4 no caso (1) com ρ = 0.

Caso 2: σ(r1) esta em P1 ou P2. E necessario que o vertice σ(r1) nao se torne prejuızo,

ou seja, P1 e P2 devem ser concatenados de modo que σ(r1) seja o primeiro vertice

em P . Suponha, sem perda de generalidade, que σ(r1) = v1 ∈ P1. Na primeira

iteracao, verificamos se P1 e P2 podem ser concatenados com ρ = α = 0:

• se {vq, w1}, entao P = P1 ◦ P2 (Figura 4.5(a));

• se {vq, wm}, entao P = P1 ◦←−P2 (Figura 4.5(b)).

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(a) {vq, w1}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(b) {vq, wm}

Figura 4.5: Possıveis concatenacoes de P1 e P2 no caso (2), σ(r1) ∈ P1 e α = 0.

Porem, se nao e possıvel concatenar P1 e P2, o algoritmo prossegue verificando

se P2 pode ser colocado entre dois vertices vi e vj de P1, para 1 ≤ i ≤ j ≤ q,

tal que {vi, vj} ∈ P1, {w1, vi} ∈ E(Ok) e {wm, vj} ∈ E(Ok). Neste caso, P =

(v1, . . . , vi) ◦ P2 ◦ (vj, . . . , vq).

Porem, se finalmente P1 e P2 nao podem ser concatenados com ρ = 0, entao o

algoritmo prossegue incrementando α e, enquanto α < |P1|, verifica:

• se {vq, w1+α}, entao P = P1 ◦ (w1+α, . . . , wm) (Figura 4.6(a));

Page 54: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 38

• se {vq, wm−α}, entao P = P1 ◦ (w1, . . . , wm−α) (Figura 4.6(b));

• se {vq−α, w1}, entao P = (v1, . . . , vq−α) ◦ P2 (Figura 4.6(c));

• se {vq−α, wm}, entao P = (v1, . . . , vq−α) ◦←−P2(Figura 4.6(d)).

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(a) {vq, w1+α}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(b) {vq, wm−α}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(c) {vq−α, w1}

v1P1 P2

v2

v3

vq

w1

w2

w3

w4

wm

(d) {vq−α, wm}

Figura 4.6: Possıveis concatenacoes de P1 e P2 no caso (2), σ(r1) = v1 ∈ P1 e α = 1.

O melhor resultado na concatenacao de P1 e P2 e quando P1 e P2 sao concatenados

com ρ = 0. O pior resultado, e quando P1 e P2 sao concatenados com ρ = (|P1| − 1).

Obtemos ρ = |P1| se nao foi possıvel concatenar P1 e P2 quando entao o processo retorna

P2 = P . Neste caso, se, σ(r1) ∈ P1, o algoritmo retorna P1 = P , pois o vertice σ(r1) nao

pode se tornar prejuızo.

A seguir, mostramos como os np processos concatenam P1 e P2, a partir do P de cada

processo, obtido da concatenacao dos caminhos iniciais.

Segunda fase de concatenacao de caminhos

A segunda fase de concatenacao de caminhos ocorre quando cada processo tem um unico

caminho P ao final da primeira fase de concatenacao. Adicionamos uma barreira nesse

ponto do algoritmo para sincronizar os np processos (linhas 17 a 29 do Algoritmo 7).

Neste trabalho, utilizamos np par. Enquanto np ≥ 1, os primeiros np2

processos re-

cebem um caminho dos ultimos np2

processos, que chamaremos de W , para concatenar

com seu caminho P correspondente. A concatenacao segue as mesmas regras discuti-

das na primeira fase. O numero de processos e reduzido pela metade a cada iteracao

(Exemplo 8).

Exemplo 8 (Concatenacao de caminhos de processos diferentes). Assuma np = 4:

processo 3 envia P = W para o processo 0

processo 2 envia P = W para o processo 1

Os processos p = 0 e p = 1 tentam concatenar o caminho W recebido com o caminho

P obtido na fase anterior. O numero de processos diminui pela metade.

Page 55: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 39

processo 1 envia P = W para o processo 0

O processo 0 tenta concatenar o caminho W recebido com o seu caminho P .

Na proxima secao, descrevemos o algoritmo sequencial que busca adicionar adequada-

mente em P os ρ prejuızos ocorridos no algoritmo paralelo, a fim de obter um caminho

viavel.

4.4 Fase sequencial para concatenacao dos prejuızos

A fase sequencial do algoritmo inicia quando np = 1 e consiste em adicionar adequada-

mente em P , os ρ prejuızos ocorridos no algoritmo paralelo (Algoritmo 8).

Lembramos, pela construcao do Algoritmo 7, que o primeiro vertice de P e o vertice

σ(r1) e que σ(r2) foi o primeiro vertice que se tornou prejuızo. Se |P | = |V (Ok)| e o

ultimo vertice de P e adjacente a σ(r2), adicionamos o vertice σ(r2) na ultima posicao

de P e encontramos um caminho viavel de Ok. Caso contrario, utilizamos o algoritmo

SS99 [26], descrito na Secao 3.1 - Algoritmo 1, para tentar adicionar os ρ prejuızos em P

(linha 8 do Algoritmo 8).

O algoritmo SS99 [26] trabalha adicionando vertices sempre na ultima posicao em P

(Secao 3.1).

Apos a execucao do algoritmo SS99 [26], se |P | = |V (Ok)|, P e um caminho viavel

(linha 10 do Algoritmo 8). Observe que, se P nao e um caminho viavel, nao significa que

nao exista um caminho viavel para Ok.

Para fins de backup, a cada 23 horas, e gravado em arquivo o caminho atual P . O

algoritmo esta preparado para restaurar esse arquivo de backup e continuar a busca pelo

caminho viavel de Ok, pois o algoritmo SS99 [26] recebe um caminho P como entrada e

continua a concatenacao a partir do ultimo vertice em P .

Mostramos, a seguir, um exemplo do funcionamento geral do algoritmo paralelo sobre

o grafo O4. O exemplo do algoritmo sequencial a partir do caminho obtido desse exemplo

do algoritmo paralelo pode ser visto no Exemplo 5 (Secao 3.1).

4.5 Exemplo de execucao

Considere o grafo O4 com 14 vertices (Figura 4.7(a)) e o 2-fator Π(m2) = Π(m4) com 4

ciclos (Figura 4.7(b)). Nesse exemplo, destacamos os vertices σ(r1) e σ(r2) em negrito.

Observe, na Figura 4.7(b), que os vertices σ(r1) e σ(r2) fazem parte do mesmo ciclo:

σ(r1)=000001111, 000010111, 000110101, σ(r2)=001010101, 000101011, 000011101.

Page 56: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 40

Algoritmo 7: Algoritmo paralelo para encontrar um caminho viavel em Ok

Entrada: Numero de processos np e arquivo contendo cobertura de vertices porciclos disjuntos de Ok

1 inıcio2 Inicializa o MPI3 se processo = 0 entao

4 totalCaminhos ← caminhos obtidos a partir dos ciclos de Ok

5 distribuir totalCaminhos entre os np processos

6 fim se7 se totalCaminhos > 1 entao8 se processo 6= 0 entao9 receber todos os caminhos enviados pelo processo 0

10 fim se11 enquanto existir mais de 1 caminho faca12 P ← resultado concatenacao(P1, P2)13 excluir P1 e P2 do processo14 inserir P no final de todos os caminhos do processo

15 fim enqto16 //*Nesse ponto, cada processo tem um unico caminho P*//

17 Barreira para sincronizar os np processos18 enquanto (processo < np) e (np > 1) faca19 rank ← (np− 1)− processo20 se processo ≥ np

2entao

21 concatenar prejuizos(P )22 enviar P para o processo rank

23 senao24 W ← receber P do processo rank25 P ← resultado concatenacao(P,W )26 concatenar prejuizos(P )

27 fim se28 np← np/2

29 fim enqto30 //*se so existe um processo, P e o caminho final da fase paralela*//

31 se np = 1 e processo = 0 entao

32 atualizar a posicao de todos os vertices de Ok que estao em P33 fim se

34 fim se35 salvar arquivo com o resultado final da fase paralela36 inıcio do algoritmo sequencial para adicionar prejuızos em P //*Algoritmo 8*//

37 Finaliza MPI

38 fim

Page 57: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 41

Algoritmo 8: Algoritmo sequencial para encontrar um caminho viavel em Ok

Entrada: O caminho atual P , um grafo Ok, σ(r1) e σ(r2)1 inıcio2 se vertice na posicao 0 de P = σ(r1) entao

3 se (|P | = |V (Ok)| − 1 e (ultimo vertice ∈ P e adjacente a σ(r2)) entao4 adicionar o vertice σ(r2) ao final de P5 salvar arquivo com o caminho viavel P6 retorna true

7 fim se

8 SS99(P, Ok, σ(r1), σ(r2)) //*Algoritmo 1*//

9 salvar arquivo com o caminho P final

10 se |P | = |V (Ok)| entao11 retorna true12 fim se

13 fim se14 retorna false

15 fim

Entao, esse ciclo e dividido em dois caminhos: W1 iniciando pelo σ(r1) e W2 iniciando

pelo σ(r2):

W1 : (000001111, 000010111, 000110101)

W2 : (001010101, 000101011, 000011101)

O processo 0 remove o vertice σ(r2) ∈ W2 adicionando-o a lista de prejuızos. Obtemos,

entao, 5 caminhos para distribuir aos processos:

W1 : (000001111, 000010111, 000110101)

W2 : (000101011, 000011101)

W3 : (000111001, 000011011, 000100111)

W4 : (001001011, 000101101, 001001101, 001010011)

W5 : (000110011)

Assuma np = 2. O processo 0 distribui os cinco caminhos aleatoriamente entre os np

processos. Suponha que o processo 0 atribui os caminhos W1 e W4 para o processo 1 e os

caminhos W2, W3 e W5 para si mesmo.

Cada processo entao procura concatenar seus caminhos em um unico caminho P

(Secao 4.3.2). O processo 0 tenta concatenar P1 e P2:

W2 = P1 : (000101011, 000011101)

W3 = P2 : (000111001, 000011011, 000100111)

E possıvel concatenar P1 e P2 com ρ = 0, pois o primeiro vertice de P1 e 000101011 que

e adjacente ao ultimo vertice de P2 que e 000100111. Os caminhos P1 e P2 sao excluıdos

do processo 0 e o novo caminho P e adicionado. O processo 0 tem agora dois caminhos:

Page 58: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 42

σ(000010111)

σ(000111001)

σ(000100111)

σ(000101011)

σ(001010101 )

σ(000110101)

σ(001010011)σ(000101101)

σ(000001111 )

σ(000011011)

σ(000011101)

σ(001001101)

σ(000110011)

σ(001001011)

(a) O grafo O4

σ(000010111)

σ(000111001)

σ(000100111)

σ(000101011)

σ(001010101 )

σ(000110101)

σ(001010011)σ(000101101)

σ(00001111 )

σ(000011011)

σ(000011101)

σ(001001101)

σ(000110011)

σ(001001011)

(b) O grafo O4 dividido em 4 ciclos

Figura 4.7: O grafo O4 e o 2-fator Π(m2) = Π(m4).

W5 = P1 : (000110011)

P2 : (000111001, 000011011, 000100111, 000101011, 000011101).

Novamente e possıvel concatenar os dois caminhos com ρ = 0, pois o primeiro vertice

de P1 e 000110011 que e adjacente ao primeiro vertice de P2 que e 000111001. O processo

0 agora so tem um unico caminho P :

P : (000110011, 000111001, 000011011, 000100111, 000101011, 000011101).

O processo 1 tenta concatenar os caminhos iniciais P1 e P2:

W1 = P1 : (000001111, 000010111, 000110101)

W4 = P2 : (001001011, 000101101, 001001101, 001010011)

O processo 1 deve concatenar P1 e P2 de modo que o vertice σ(r1)=000001111 seja

Page 59: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 43

o primeiro vertice em P . O ultimo vertice de P1 e 000110101 que e adjacente ao ultimo

vertice de P2 que e 001010011 e assim o processo 1 concatena P1 e P2 com ρ = 0. O

caminho final e:

P : (000001111, 000010111, 000110101, 001010011, 001001101, 000101101, 001001011).

Agora se inicia a segunda fase de concatenacao de caminhos (Secao 4.3.2). O processo

1 envia seu caminho para o processo 0. O processo 0 tem entao os caminhos:

P = P1 : (000110011, 000111001, 000011011, 000100111, 000101011, 000011101)

W = P2 : (000001111, 000010111, 000110101, 001010011, 001001101, 000101101, 001001011)

O processo 0 deve tentar concatenar P1 = P e P2 = W de maneira que o vertice

000001111=σ(r1) ∈ P2 continue sendo o primeiro vertice ao final da concatenacao e com

o menor ρ possıvel. No entanto, nao e possıvel concatenar P1 e P2 com ρ = 0. O proximo

passo e tentar concatenar P1 e P2 com ρ = 1. Verificamos que o penultimo vertice de P2

e 000101101 que e adjacente ao ultimo vertice de P1 que e 000011101. O caminho P final

da concatenacao de P1 e P2 e entao:

P : (000001111, 000010111, 000110101, 001010011, 001001101, 000101101, 000011101,

000101011, 000100111, 000011011, 000111001, 000110011).

Apos a concatenacao dos dois caminhos, o processo 0 verifica se e possıvel concatenar

seus prejuızos em P . So existe um prejuızo no processo 0 que e o vertice 001001011. Entao

o processo 0 verifica a cada duas posicoes de P se e possıvel adicionar 001001011 entre

essas posicoes. E possıvel concatenar o prejuızo na posicao 5, pois o vertice 001001011 e

adjacente ao vertice 001010011 da posicao 4 e ao vertice que estava na posicao 5 que e

001001101. O caminho P final da fase paralela e mostrado na Figura 4.8.

000110101

001010011

001001011

001001101

P

000101101

000011101

000010111

000001111 = σ(r1)

000101011

000100111

000011011

000111001

000110011

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

Figura 4.8: Caminho final P da fase paralela com 92% dos vertices de O4.

Com isso, o algoritmo paralelo termina com |P | = 13 e 92% dos vertices de Ok,

Page 60: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 4. ALGORITMO PROPOSTO 44

restando adicionar em P o vertice σ(r2).

O diagrama da Figura 4.9 ilustra o funcionamento do Algoritmo 7 que acabamos de

descrever. As fases (2.1) e (2.2) se referem a primeira e segunda fase de concatenacao de

caminhos, respectivamente.

W1

W2

W3

W4

W5

W2

W3

W5

W1

W4

Processo 0 Processo 1

W2 = P1 W3 = P2 PW5 = P1 P2 W1 = P1 W4 = P2 P

P = P1 W = P2

σ(r1)σ(r1)

σ(r1)

σ(r1)

σ(r1)

Processo 0

Processo 0

P

P final

Fase inicial − distribuir caminhos aos processos

(2.1)

(2.2)

Envia P

v

v

Figura 4.9: Diagrama do algoritmo paralelo para O4 e o 2-fator Π(m2) = Π(m4).

Apos a execucao do algoritmo paralelo, temos ρ = 1 prejuızo. O algoritmo sequencial

tenta agora adicionar esse prejuızo em P , o que e feito com sucesso conforme Exemplo 5

da Secao 3.1.

Page 61: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Capıtulo 5

Analise dos Resultados

Utilizamos para os testes os seguintes computadores: (i) o supercomputador Altix 4700

Bachianas com 272 Gb de memoria RAM, 68 processadores Dual-Core Intel Itanium (136

nucleos de processamento no total) e sistema operacional Linux – o qual chamamos de

supercomputador; (ii) um computador desktop com 4 processadores Intel(R) Core(TM)

i5 de 3.20 GHz, 4 Gb de memoria RAM e sistema operacional GNU/Linux de 32 bits – o

qual chamamos de desktop.

O supercomputador possui varias filas. A Tabela 5.1 mostra as filas utilizadas para os

testes. Em todos os testes utilizamos o maximo de recursos disponıveis para cada fila.

Filas Bachianas

FilaCPU’s Memoria Jobs por usuario Walltime

(min/max) (max) (max) (max)Serial 1/1 20 Gb 4 720 horasP1-2 1/2 20 Gb - 24 horasP4 4/4 12 Gb - 24 horasP8 8/8 24 Gb 8 24 horasP16 16/16 48 Gb 2 24 horasP32 32/32 96 Gb 1 (2 pela fila) 24 horas

Tabela 5.1: Configuracoes das Filas Bachianas utilizadas nos testes1.

Realizamos testes em Ok, para k ≤ 18. Para k ≤ 14, encontramos um caminho viavel

para todos os grafos e os resultados podem ser vistos na Tabela 5.2. Para 15 ≤ k ≤ 18,

temos resultados parciais (Tabela 5.4).

Conforme Tabela 5.2, para 1 ≤ k ≤ 12, o algoritmo foi testado para todas as dk2e

coberturas de vertices por ciclos disjuntos em Ok. Para k = 13 foi testado para os 2-

fatores Π(m2) e Π(m4) e para k = 14 o teste foi feito somente para o 2-fator Π(m4).

A Tabela 5.2 mostra o valor do k testado, a cobertura de vertices por ciclos disjuntos

1http://compcient.ufabc.edu.br/?p=Filas_Bachianas, acesso em 12-fev-2013

45

Page 62: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 5. ANALISE DOS RESULTADOS 46

escolhida, o numero de ciclos na cobertura e o numero de vertices do Ok. Mostra ainda,

o numero de CPU’s utilizadas, a porcentagem do caminho do algoritmo paralelo e o

tempo de execucao do algoritmo paralelo e o tempo de execucao do algoritmo sequencial

separados e por fim, na ultima coluna, o tempo total de execucao.

Instancias Testadas Resultados

kCobertura Numero |V (Ok)| Num. de % de P do Tempo Tempo Total depor Ciclos Ciclos CPU’s alg. paralelo paralelo seq. execucao

1 Π(m1) 1 1 1 100% 0s - 0s2 Π(m1) 2 2 1 100% 0s 0s 0s

3Π(m1) 2

51 100% 0s 0s 0s

Π(m2) 3 2 100% 0s 0s 0s

4Π(m1) 5

14 292% 0s 0s 0s

Π(m2) 4 92% 0s 0s 0s

5Π(m1) 8

42 297% 0s 0s 0s

Π(m2) 7 97% 0s 0s 0sΠ(m3) 10 97% 0s 0s 0s

6Π(m1) 23

132 273% 0s 0s 0s

Π(m2) 14 82% 0s 0s 0sΠ(m3) 15 86% 0s 0s 0s

7

Π(m1) 52

429 4

37% 0s 0s 0sΠ(m2) 27 70% 0s 0s 0sΠ(m3) 28 82% 0s 0s 0sΠ(m4) 31 52% 0s 0s 0s

8

Π(m1) 166

1.430 4

34% 0s 0s 0sΠ(m2) 52 88% 0s 0s 0sΠ(m3) 54 50% 0s 0s 0sΠ(m4) 59 74% 0s 0s 0s

9

Π(m1) 465

4.862 8

10% 1s 1s 2sΠ(m2) 102 82% 1s 1s 2sΠ(m3) 99 65% 0.5s 0.5s 1sΠ(m4) 104 85% 0.5s 0.5s 1sΠ(m5) 489 83% 1s 1s 2s

10

Π(m1) 1.505

16.796 16

59% 4s 5s 9sΠ(m2) 194 50% 4s 6s 10sΠ(m3) 191 86% 3s 4s 7sΠ(m4) 416 40% 5s 5s 10sΠ(m5) 267 23% 7s 5s 12s

11

Π(m1) 4.702

58.786 16

45% 25s 155s 180sΠ(m2) 384 94% 70s 13s 83sΠ(m3) 413 81% 100s 31s 131sΠ(m4) 399 43% 50s 131s 181sΠ(m5) 408 66% 100s 66s 166sΠ(m6) 4.709 68% 75s 80s 155s

12

Π(m1) 15.554

208.012 32

57% 10m 21m 31mΠ(m2) 983 38% 20m 13m 33mΠ(m3) 714 63% 12m 18m 30mΠ(m4) 885 50% 18m 15m 33mΠ(m5) 824 40% 20m 12m 32mΠ(m6) 1.329 60% 10m 21m 31m

13Π(m2) 1.618

742.900 3271% 4h 4,2h 8,2h

Π(m4) 1.496 81% 5h 3h 8h14 Π(m4) 2.818 2.674.440 32 80% 1d 2,69d 3,69d

Tabela 5.2: Resultados do algoritmo proposto para Ok e k ≤ 14.

Page 63: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 5. ANALISE DOS RESULTADOS 47

O tempo total de execucao do algoritmo proposto e a soma dos dois tempos de exe-

cucao, ou seja, do tempo de execucao do algoritmo paralelo seguido do algoritmo SS99.

O numero de CPU’s se refere a qual fila do supercomputador (Tabela 5.1) o algoritmo

paralelo foi executado.

Implementamos o algoritmo paralelo em C/C++ e OpenMPI 1.4 e utilizamos para os

testes no supercomputador o compilador g++ com as seguintes opcoes:

-pthread -lmpi_cxx -lmpi -lopen-rte -lopen-pal -ldl -Wl,-export-dynamic

-lnsl -lutil -lm -ldl.

Para k ≤ 13, foi possıvel executar todo o algoritmo no supercomputador, isto e, a parte

paralela e a concatenacao dos prejuızos da parte sequencial, pois o tempo de execucao

foi menor que as 24 horas disponıveis nas filas do supercomputador (Tabela 5.1). Para

k ≥ 14 nao foi possıvel executar o algoritmo em menos de 24 horas. Portanto, a parte

paralela foi executada em uma fila paralela e a parte de concatenacao de prejuızos foi

testada tanto na fila serial do supercomputador quanto no desktop.

O k = 1 e o unico caso onde nao existe prejuızo, pois so existe um ciclo e um unico

vertice com laco. Portanto, esse vertice ja e o caminho viavel. Nos outros casos, sempre

vai existir prejuızo de no mınimo um, pois o vertice σ(r2) nunca e enviado a nenhum

processo. Para 2 ≤ k ≤ 5 a execucao paralela terminou faltando somente o vertice σ(r2)

em P para todas as coberturas, e foi possıvel concatena-lo ao ultimo vertice de P sem

executar o algoritmo SS99 [26]. O mesmo nao ocorreu para k ≥ 6, onde todas as instancias

testadas executaram o algoritmo SS99 para concatenar seus prejuızos.

Em geral o 2-fator Π(my), 1 ≤ y ≤ dk2e, com menor numero de ciclos apresenta o

melhor tempo de execucao (Tabela 5.3). Assim, para k = 13, 14, 15, nao executamos

o algoritmo proposto para todas as coberturas Π(my). Observamos que, em geral, a

cobertura com menor numero de ciclos ocorre na cobertura Π(mi), para i ≈ dk4e. Veja,

por exemplo, a cobertura Π(m3) para k = 9 e a cobertura Π(m3) para k = 12 (Tabela 5.2).

Por outro lado, as coberturas Π(m1) e Π(md k2e) geralmente contem os maiores numeros

de ciclos.

A Tabela 5.4 mostra os resultados parciais do algoritmo proposto para Ok e 15 ≤k ≤ 18. Para k = 16, 17, o algoritmo proposto executou tendo como entrada os ciclos

parciais da cobertura e o restante dos vertices que nao estavam em nenhum ciclo, foram

colocados como prejuızos. Para k = 16, utilizamos os 135 primeiros ciclos gerados com

um total de 847.173 vertices e, para k = 17, utilizamos os 18 primeiros ciclos gerados

com um total de 155.312 vertices. Para k = 15 o teste foi feito com a cobertura Π(m4).

Para k = 18, testamos somente com o algoritmo sequencial SS99 que implementamos, pois

ainda nao geramos as coberturas de vertices por ciclos disjuntos para esse valor de k. Para

k = 15, 16, 17 executamos o algoritmo paralelo com 32 CPUS’s no supercomputador e o

Page 64: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 5. ANALISE DOS RESULTADOS 48

Melhor Resultado de execucaok Maior no de ciclos Menor no de ciclos 2o menor no de ciclos3 Π(m2) = 3 – –4 Π(m1) = 5 – –5 – – Π(m1) = 86 – – Π(m3) = 157 – Π(m2) = 27 –8 – – Π(m3) = 549 – Π(m3) = 99 –10 – Π(m3) = 191 –11 – Π(m2) = 384 –12 – Π(m3) = 714 –13 – Π(m4) = 1.496 –14 – Π(m4) = 2.818 –

Tabela 5.3: O 2-fator com melhor tempo de execucao em Ok, para 3 ≤ k ≤ 14.

algoritmo sequencial na fila serial do supercomputador e no desktop, exceto para k = 17

que foi executado somente no supercomputador. Para k = 18, executamos na fila serial

do supercomputador.

Instancias Testadas Resultados

kCobertura |V (Ok)|

Num. Vertices do % vertices de Tempo de

por Ciclos maior caminho P Ok em P Execucao15 Π(m4) 9.694.845 9.532.032 98 31d16 Π(m4) 35.357.670 29.126.302 82 31d17 Π(m5) 129.644.790 92.048.438 71 32d18 – 477.638.700 267.750.220 56 3d

Tabela 5.4: Resultados parciais do algoritmo proposto em Ok, para 15 ≤ k ≤ 18.

A Tabela 5.5 e a Tabela 5.6 mostram o tempo gasto para gerar a cobertura de ver-

tices por ciclos disjuntos para k ≤ 17, que foram utilizados como entrada inicial para os

processos no algoritmo paralelo.

A Tabela 5.7 mostra um comparativo de tempo de execucao entre os algoritmos: SS99,

SS04, SSS09 e o algoritmo proposto, denominado de GBH. Observe que os algoritmos

SS99, SSS09 e GBH procuram caminhos viaveis em Ok = Bk, enquanto o algoritmo

SS04 procura ciclos hamiltonianos diretamente em Ok. Os tempos de execucao para

os algoritmos SS99, SS04 e SSS09 foram obtidos nos artigos [26, 27, 28]. O algoritmo

SS99 [26] foi testado em um computador Intel Pentium-II de 400 MHz e 192 MB de

memoria RAM; o algoritmo SS04 [27] em um computador desktop com 1.6GHz e 640MB

de memoria RAM; e, o algoritmo SSS09 [28] em um computador AMD Athlon 3500+ com

2 GB de memoria RAM de 64 bits. O algoritmo GBH foi testado no supercomputador,

conforme numero de CPU’s descrito na Tabela 5.2 para cada valor de k.

A Tabela 5.8 mostra um comparativo de tempo de execucao entre os algoritmos GBH

e o SS99 que implementamos. Consideramos o menor tempo de execucao do GBH para as

Page 65: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 5. ANALISE DOS RESULTADOS 49

Instancias Testadas Resultados

kCobertura Numero de |V (Ok)| Tempo depor Ciclos Ciclos Execucao

1 Π(m1) 1 1 0s2 Π(m1) 2 2 0s

3Π(m1) 2

5 0sΠ(m2) 3

4Π(m1) 5

14 0sΠ(m2) 4

5Π(m1) 8

42 0sΠ(m2) 7Π(m3) 10

6Π(m1) 23

132 0sΠ(m2) 14Π(m3) 15

7

Π(m1) 52

429 0sΠ(m2) 27Π(m3) 28Π(m4) 31

8

Π(m1) 166

1.430 0sΠ(m2) 52Π(m3) 54Π(m4) 59

9

Π(m1) 465

4.862 0sΠ(m2) 102Π(m3) 99Π(m4) 104Π(m5) 489

10

Π(m1) 1.505

16.796 0sΠ(m2) 194Π(m3) 191Π(m4) 416Π(m5) 267

11

Π(m1) 4.702

58.786 1s

Π(m2) 384Π(m3) 413Π(m4) 399Π(m5) 408Π(m6) 4.709

12

Π(m1) 15.554

208.012 5s

Π(m2) 983Π(m3) 714Π(m4) 885Π(m5) 824Π(m6) 1.329

13

Π(m1) 51.179

742.900

22sΠ(m2) 1.618 21sΠ(m3) 8.493 22sΠ(m4) 1.496 21sΠ(m5) 8.621 22sΠ(m6) 1.676 21sΠ(m7) 51.467 22s

Tabela 5.5: Tempo de execucao do algoritmo para gerar as coberturas de vertices porciclos disjuntos para Ok e k ≤ 17. Continuacao na Tabela 5.6.

Page 66: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 5. ANALISE DOS RESULTADOS 50

Instancias Testadas Resultados

kCobertura Numero de |V (Ok)| Tempo depor Ciclos Ciclos Execucao

14

Π(m1) 172.904

2.674.440

1m 33sΠ(m2) 3.249

1m 30s

Π(m3) 2.936Π(m4) 2.818Π(m5) 3.191Π(m6) 2.913Π(m7) 8.255

15

Π(m1) 587.032

9.694.845

6m 18sΠ(m2) 7.089 6m 7sΠ(m3) 6.196 6m 8sΠ(m4) 5.635 6m 9sΠ(m5) 5.026 6m 9sΠ(m6) 5.847 6m 8sΠ(m7) 6.944 6m 9sΠ(m8) 588.065 6m 19s

16

Π(m1) 2.020.619

35.357.670

28m 3sΠ(m2) 15.374 27m 27sΠ(m3) 10.803 27m 49sΠ(m4) 11.062 27m 26sΠ(m5) 10.091 27m 46sΠ(m6) 276.230 27m 44sΠ(m7) 10.925 27m 33sΠ(m8) 57.738 27m 22s

17

Π(m1) 7.002.478

129.644.790

4h 6mΠ(m2) 36.660 4h 3mΠ(m3) 22.316 4h 3mΠ(m4) 26.034 4h 7mΠ(m5) 23.877 4h 30mΠ(m6) 21.899 4h 4mΠ(m7) 24.624 4h 3mΠ(m8) 35.136 4h 2mΠ(m9) 7.006.106 4h 8m

Tabela 5.6: Tempo de execucao do algoritmo para gerar as coberturas de vertices porciclos disjuntos para Ok e k ≤ 17. Continuacao da Tabela 5.5.

Page 67: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 5. ANALISE DOS RESULTADOS 51

Tempo de Execucaok SS99 SS04 SSS09 GBH1 NC NC NC 0s2 NC NC NC 0s3 NC NC NC 0s4 NC NC NC 0s5 NC 0s NC 0s6 NC 0s NC 0s7 NC 0s NC 0s8 0s 1s 0s 0s9 1s 31s 0s 1s10 2s 711s 0s 7s11 18s 2,9h 2s 83s12 235s 1,8d 10s 30m13 49m 28,6d 99s 8h14 10h NC 799s 3,69d15 21d NC 2,6h NC16 NC NC 1,2d NC17 NC NC 20,4d NC

Tabela 5.7: Comparativo de tempo de execucao entre os algoritmos para Ok ou Ok. NC:nao consta.

coberturas de vertices por ciclos disjuntos testadas e o algoritmo sequencial SS99 foi exe-

cutado uma unica vez no desktop, tendo como entrada somente σ(r1) que pela construcao

do algoritmo tem que ser o primeiro vertice do caminho viavel.

Tempo de Execucaok GBH SS991 0s 0s2 0s 0s3 0s 0s4 0s 0s5 0s 0s6 0s 0s7 0s 0s8 0s 0s9 1s 1s10 7s 10s11 83s 75s12 30m 28m13 8h 6,30h14 3,69d 3,68d

Tabela 5.8: Comparativo do tempo de execucao entre o algoritmo GBH e nossa imple-mentacao do algoritmo SS99 para Ok.

Observem na Tabela 5.8 que para k ≤ 9 o tempo de execucao e o mesmo entre os

algoritmos GBH e a nossa implementacao do SS99. Para k = 10, 11, 12, 14 nao ha muita

diferenca no tempo de execucao entre os algoritmos. A maior diferenca e para k = 13, para

o qual SS99 executou mais rapido que GBH. O algoritmo GBH apresentou um caminho

viavel na primeira execucao para k ≤ 14.

Page 68: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Capıtulo 6

Conclusao

Resultados no problema de ciclos e caminhos hamiltonianos em grafos Kneser e Kneser

bipartidos podem contribuir para problemas reconhecidamente difıceis, expressados em

conjecturas que permanecem abertas ha decadas.

Ate agora, caminhos viaveis foram encontrados apenas para Ok = Bk e k ≤ 17 [26, 28].

Neste trabalho, propomos um algoritmo para procurar caminhos viaveis no grafo reduzido

Ok = Bk e provamos que os emparelhamentos modulares determinam dk2e coberturas de

vertices por ciclos disjuntos nesse grafo reduzido. Utilizando uma cobertura de vertices

por ciclos disjuntos e uma abordagem paralela, ate agora determinamos caminhos viaveis

para k ≤ 14.

Como trabalhos futuros, pretendemos melhorar o desempenho do algoritmo, buscando

alcancar caminhos viaveis para mais valores de k. Para isso, pretendemos modificar

o algoritmo para arquitetura de 64-bits. Alem disso, pretendemos tambem otimizar o

tempo de execucao do algoritmo, modificando algumas estruturas de dados e operacoes

relacionadas. Por exemplo, a princıpio, para verificar se um vertice ja estava em um

ciclo ou caminho, precisavamos utilizar uma busca sequencial na representacao do grafo.

Porem, gerar o 2-fator do O15, por exemplo, levou mais de 30 dias. Assim, modificamos o

algoritmo tal que, os vertices, fossem colocados em uma ordem tal que converter as strings

binarias para numeros decimais fornecesse uma ordenacao crescente. Consequentemente,

utilizamos agora uma busca binaria para encontrar um vertice na estrutura de dados, o que

reduziu o tempo para determinar o 2-fator do O15 em cerca de 6 minutos. Essa modificacao

ainda teve impacto no desempenho geral do algoritmo proposto que, a princıpio, necessitou

de 18 dias para encontrar um caminho viavel no grafo O14. Esse tempo foi reduzido para

menos de 4 dias, apos a modificacao.

Bueno et al. [3] provaram que um caminho viavel em ˜K(2k + 2, k) leva a um ciclo

hamiltoniano em K(2k + 2, k) e B(2k + 2, k), para k ımpar e que K(n, k) = B(n, k).

Recentemente [4], eles mostraram tambem que a existencia de um caminho viavel em

52

Page 69: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

CAPITULO 6. CONCLUSAO 53

K(n, k) e uma condicao suficiente para a existencia de: (i) um caminho hamiltoniano em

K(2k + 3, k), para k ≡ 1 ou 2 (mod 3), e; (ii) um ciclo hamiltoniano em K(2k + 4, k),

para k ≡ 1 ou 3 (mod 4). No momento, trabalhamos na formalizacao de um resultado

que mostra como determinar uma cobertura de vertices por ciclos disjuntos nos grafos

reduzidos de K(2k + 2, k), K(2k + 3, k) e K(2k + 4, k) e, assim, podermos executar o

algoritmo proposto tambem nestes grafos. Ate o momento, e conhecido que existem ciclos

hamiltonianos para esses grafos somente ate k ≤ 12, k ≤ 12 e k ≤ 11, respectivamente.

Page 70: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Referencias Bibliograficas

[1] N. Biggs. Some odd graph theory. Second International Conference on Combina-

torics, 319:71–81, 1979.

[2] L. R. Bueno, L. Faria, C. M. H. Figueiredo, and G. D. Fonseca. Hamiltonian paths

in odd graphs. Applicable Analysis and Discrete Mathematics, 3(2):386–394, 2009.

[3] L. R. Bueno, C. M. H. Figueiredo, L. Faria, C. F. X. Mendonca, and R. A. Hausen.

Hamiltonian cycles in Kneser graphs for n = 2k + 2. Electronic Notes in Dis-

crete Mathematics, 37:291 – 296, 2011. LAGOS’11 - VI Latin-American Algorithms,

Graphs and Optimization Symposium.

[4] L.R. Bueno, C.M.H. Figueiredo, L. Faria, and R.A. Hausen. Hamiltonian cycles in

sparse Kneser graphs. 2011. A ser submetido.

[5] Alexandre Carissimi, Fabrice Dupros, Jean-Francois Mehaut, and Rafael Vanoni

Polanczyk. Aspectos de programacao paralela em arquiteturas numa. In Minicur-

sos do VIII Workshop em Sistemas Computacionais de Alto Desempenho, WSCAD

2007, October 2007.

[6] Y. Chen. Kneser graphs are hamiltonian for n ≥ 3k. Journal of Combinatorial

Theory Series B, 80:69–79, 2000.

[7] Y. Chen. Triangle-free hamiltonian Kneser graphs. Journal of Combinatorial Theory

Series B, 89(1):1–16, 2003.

[8] I. J. Dejter. Hamilton cycles and quotients of bipartite graphs. In Graph theory with

applications to algorithms and computer science (Kalamazoo, Mich., 1984), pages

189–199, Wiley, New York, 1985.

[9] I. J. Dejter, W. Cedeno, and V. Jauregui. A note on frucht diagrams, boolean graphs

and hamilton cycles. Discrete Mathematics, 5:131–135, 1992/93.

[10] I. J. Dejter, J. Cordova, and J. A. Quintana. Two hamilton cycles in bipartite

reflective Kneser graphs. Discrete Mathematics, 72(1):63–70, 1988.

54

Page 71: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

REFERENCIAS BIBLIOGRAFICAS 55

[11] D. A. Duffus, H. A. Kierstead, and H. S. Snevily. An explicit 1-factorization in the

middle of the boolean lattice. Journal of Combinatorial Theory, Series A, 65:334–342,

1994.

[12] M. R. Garey and D. S. Johnson. Computers and Intractability, A Guide to the Theory

of NP-Completeness. W.H. Freeman and Company, New York, 1979.

[13] W. R. Hamilton. Letter to John T. Graves on the icosian, 17 oct., 1856. In H. Hal-

berstam and R. E. Ingram, editors, The Mathematical Papers of Sir William Rowan

Hamilton, volume 3 (Algebra), pages 612–625, New York, 1931. Cambridge Univer-

sity Press.

[14] I. Havel. Semipaths in directed cubes. In M. Fiedler (Ed.), editor, Graphs and other

Combinatorial Topics, pages 101–108, Teubner, Leipzig, 1983. Teubner-Texte Math.

[15] J. R. Johnson and H. A. Kierstead. Explicit 2-factorisations of the odd graph. Order,

21:19–27, 2004.

[16] R. M. Karp. Reducibility among combinatorial problems. In R.E. Miller and J.W.

Thatcher, editors, Complexity of Computer Computations, pages 85–103, New York,

1972. Plenum Press.

[17] M. S. Krishnamoorthy. An NP-hard problem in bipartite graphs. SIGACT News,

7(1):26, 1975.

[18] L. Lovasz. Problem 11. In Combinatorial Structures and their Applications. Gordon

and Breach, 1970.

[19] M. Mather. The Rugby footballers of Croam. Journal of Combinatorial Theory

Series B, 20(1):62–63, 1976.

[20] G. H. J. Meredith and E. K. Lloyd. The hamiltonian graphs O4 to O7. In Combina-

torics (Proc. Conf. Combinatorial Math., Math. Inst., Oxford, 1972), pages 229–236.

Institute of Mathematics and Its Applications, Southend, 1972.

[21] C. H. Papadimitriou and K. Steiglitz. Some complexity results for the traveling

salesman problem. In Proceedings of the eighth annual ACM symposium on Theory

of computing, pages 1–9, New York, 1976. Association for Computing Machinery.

[22] L. Posa. Hamiltonian circuits in random graphs. Discrete Mathematics, 14(4):359–

364, 1976.

[23] M. Vajtersic R. Trobec and P. Zinterhof. Parallel Computing: Numerics, Applica-

tions, and Trends. Springer Publishing Company, Incorporated, 1st edition, 2009.

Page 72: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

REFERENCIAS BIBLIOGRAFICAS 56

[24] Mike Reid. E-mail to J Gallian. Correspondence describing work performed by David

Moews and Mike Reid on middle levels problem. 1990.

[25] S. H. Roosta. Parallel Processing and Parallel Algorithms: Theory and Computation.

Springer-Verlag, New York, 1999.

[26] I. Shields and C. D. Savage. A Hamilton path heuristic with applications to the

middle two levels problem. In Proceedings of the Thirtieth Southeastern Interna-

tional Conference on Combinatorics, Graph Theory, and Computing (Boca Raton,

FL, 1999), volume 140, pages 161–178, 1999.

[27] I. Shields and C. D. Savage. A note on Hamilton cycles in Kneser graphs. Bulletin

of the Institute for Combinatorics and Its Applications, 40:13–22, 2004.

[28] I. Shields, B. J. Shields, and C. D. Savage. An update on the middle levels problem.

Discrete Mathematics., 309(17):5271–5277, 2009.

Page 73: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

Indice Remissivo

Adjacente, 3

Algoritmo

GBH, 48

SS04, 28

SS99, 22

SSS09, 28

Aresta, 3

adjacente, 3

paralela ou multipla, 3

Aresta-transitivo, 6

Automorfismo, 6

Caminho, 6

comprimento, 6

hamiltoniano, 7

viavel, 11

Ciclo, 6

comprimento, 6

hamiltoniano, 7

Classe de equivalencia, 10

Cobertura de vertices por ciclos, 7

disjuntos, 7

Complemento, 10

Computacao

paralela, 17

serial ou sequencial, 17

Emparelhamento, 5

modular, 13

perfeito, 5

Extremo, 3

Grafo, 3

ımpar, 8

quociente, 11

bipartido, 4

completo, 4

conexo, 7

desconexo, 7

dos nıveis intermediarios, 9

hamiltoniano, 7

hipohamiltoniano, 7

isomorfo, 4

Kneser, 7

Kneser bipartido, 8

nao-direcionado, 3

ponderado, 4

reduzido, 11

regular ou q-regular, 4

simetrico, 6

simples, 3

uniao, 5

Grau de um vertice, 4

Grupo de comunicacao, 18

Incidente, 3

Isomorfismo, 4

l-caminho, 6

l-ciclo, 6

Laco, 3

Message Passing Interface - MPI, 18

Passeio, 6

fechado, 6

Prejuızo, 34

q-fator, 5

57

Page 74: Universidade Federal do ABC Centro de Matematica ...poscomp.ufabc.edu.br/.../pdf/dissertacao-andreia-gusmao.pdfUniversidade Federal do ABC Centro de Matematica, Computac~ao e Cognic~ao

INDICE REMISSIVO 58

q-fatoravel, 5

Rank, 18

Representacao binaria, 11

complemento, 13

Representante da classe, 11

Rotacao, 22

Shift, 13

Single Program Multiple Data - SPMD, 19

Sistemas

fortemente acoplados, 18

fracamente acoplados, 18

Subgrafo, 5

gerador, 5

induzido, 5

proprio, 5

tag, 18

Vertice, 3

Vertice-transitivo, 6


Recommended