graph theory - exercises - chapters 2, 3, 4, 5, 6, 7, 8, and 9

67
Lista de Exercícios - Teoria dos Grafos Exercícios do Capítulo 2 - Questões 1, 2, 3, 6 e 8 Michel Alves dos Santos * Março de 2011 * Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: mi- [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo- nardo Viana Pereira. 1

Upload: michel-alves

Post on 09-Jul-2015

507 views

Category:

Education


1 download

DESCRIPTION

Some solved exercises of Graph Theory. The reference book used was: "Grafos - Introdução e Prática".

TRANSCRIPT

Page 1: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Lista de Exercícios - Teoria dos GrafosExercícios do Capítulo 2 - Questões 1, 2, 3, 6 e 8

Michel Alves dos Santos ∗

Março de 2011

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 2: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

ConteúdoLista de Figuras 2

1 Questão 1 31.1 a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 d) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5 e) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.6 f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.7 g) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.8 h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.9 i) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.10 j) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.11 k) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Questão 2 52.1 a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 d) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.5 e) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.6 f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.7 g) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.8 h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.9 i) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Questão 3 73.1 a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.3 c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.4 d) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.5 e) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.6 f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4 Questão 6 9

5 Questão 8 105.1 a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.2 b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.3 c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Lista de Figuras1 Grafo apresentado para primeira questão. A primeira figura indica apenas as liga-

ções entre os vértices, a segunda apresenta uma numeração para as arestas. . . . . 32 Grafo orientado fornecido para a segunda questão. . . . . . . . . . . . . . . . . . . 53 Grafo orientado fornecido para a segunda questão com arestas numeradas. . . . . . 74 Grafo fornecido para a terceira questão. . . . . . . . . . . . . . . . . . . . . . . . . 85 Exemplo de grafo para cálculo do grau. Primeiro Passo da Demonstração. . . . . . 9

2

Page 3: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

6 Exemplo de grafo para cálculo do grau. Segundo Passo da Demonstração. . . . . . 97 Exemplo de grafos não isomorfos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1 Questão 1

Figura 1: Grafo apresentado para primeira questão. A primeira figura indica apenas as ligaçõesentre os vértices, a segunda apresenta uma numeração para as arestas.

1.1 a)A seguir, duas condificações de duas soluções diferentes:

• abcdebdae;

• abcdaebde.

1.2 b)Vértice Vértice(s) adjacente(s)

a b, d, eb a, c, d, ec b, dd a, b, c, ee a, b, d

1.3 c)a b c d e

a 0 1 0 1 1b 1 0 1 1 1c 0 1 0 1 0d 1 1 1 0 1e 1 1 0 1 0

3

Page 4: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

1.4 d)1 2 3 4 5 6 7 8

a 1 1 1 0 0 0 0 0b 1 0 0 0 1 1 0 0c 0 0 0 1 0 0 1 0d 0 1 0 0 1 0 0 1e 0 0 1 0 0 1 0 1

1.5 e)Verificando se cbdeadeab é uma solução (sem usar o desenho).Usando a lista de adjacência temos os seguintes passos:

c → dd → bb → ee → ad → ee → a

O passo em destaque já foi um passo realizado antes, isso que dizer que uma aresta foi repetida,portanto essa codificação não é uma solução para o problema tratado.

Acho também que um computador, convenientente programado, poderia realizar esta verifica-ção. Basta apenas criar um algoritmo onde para cada percurso, o mesmo deve ser armazenadoe verificado para cada outro percurso realizado, ou seja, deve-se ter uma implementação de umpercurso simples.

1.6 f)

A solução abcdeadbe pode ser codificada como 14783256.Eu codificaria a solução numérica, pois como a mesma faz referência as arestas, fica mais fácil

identificar se uma codificação dada é válida para esse problema, basta verificar se existe um númerorepetido na sequência.

A seguir as codificações das sequências do item (e):

adcbedbae → 27468513eabdebcda → 31586472cbdeadeab → 75632831

4

Page 5: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

1.7 g)• 12345678 não é solução, pois não é possível sair diretamente da aresta 2 para 3;

• 12345687 também não é solução pelo mesmo motivo do item anterior;

• 35742861 também não é solução pelo mesmo motivo do item anterior.

Usando a lista de incidência e procurando por outros vértices que também incidam na mesmaaresta e que possuam uma ligação para a próxima aresta da sequência fornecida.

1.8 h)É possível formar 88 = 16.777.216 sequências.

1.9 i)Um computador que examinasse 1.000.000 sequências por segundo, levaria pelo menos

Tempo = 88

1.000.000 = 16.777.2161.000.000 = 16, 777216

ou seja, 16.777.216seq

106seq/s= 16, 777216s, para descobrir todas as soluções.

1.10 j)Para um grafo com 20 arestas, seria possível formar o seguinte número de sequências:

2020 = 104.857.600.000.000.000.000.000.000

1.11 k)Um computador que examinasse 1.000.000 seq/s, levaria pelo menos:

Tempo = 20201.000.000 = 104.857.600.000.000.000.000.000.000

1.000.000 = 104.857.600.000.000.000.000s

2 Questão 2

Figura 2: Grafo orientado fornecido para a segunda questão.

5

Page 6: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

2.1 a)A seguir, duas condificações de duas soluções diferentes:• acbcdabd;

• abcbdacd.

2.2 b)Vértice Vértice(s) adjacente(s)

a b, cb c, dc b, dd a

2.3 c)a b c d

a 0 1 1 0b 0 0 1 1c 0 1 0 1d 1 0 0 0

2.4 d)1 2 3 4 5 6 7

a 1 1 0 0 0 0 -1b -1 0 1 1 -1 0 0c 0 -1 -1 0 1 1 0d 0 0 0 -1 0 -1 1

2.5 e)Verificando se acdabcbd é uma solução (sem usar o desenho). Usando a lista de adjacência

temos os seguintes passos:

a → cc → dd → aa → bb → cc → bb → d

Logo, todas as arestas foram percorridas, e não houve repetições, logo a sequência acdabcbdé uma solução. Verificando se abdacbda é uma solução (sem usar o desenho). Usando a lista deadjacência temos os seguintes passos:

a → bb → dd → aa → cc → bb → d

O passo em destaque já foi um passo realizado antes, isso quer dizer que uma aresta foi repetida,portanto essa codificação não é uma solução para o problema tratado.

6

Page 7: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

2.6 f)

Figura 3: Grafo orientado fornecido para a segunda questão com arestas numeradas.

Através da figura podemos observar que a sequência 1354726 é uma solução válida. A seguiras codificações das sequências do item (e):

acdabcbd → 2671354abdacbda → 1472547

2.7 g)• 1234567 não é solução, pois não é possível sair diretamente da aresta 1 para 2;

• 1234567 não é solução pelo mesmo motivo do item anterior;

• 3574261 não é solução, pois não é possível sair diretamente da aresta 5 para 7.

2.8 h)É possível formar 77 = 823.543 sequências.

2.9 i)Um computador que examinasse 1.000.000 seq/s, levaria pelo menos

823.543seq

106seq/s= 0.823543s,

para descobrir todas as soluções.

3 Questão 33.1 a)

Logo abaixo a lista de adjacência do grafo da figura acima:

Vértice Vértice(s) adjacente(s)A B, CB A, C, DC A, B, DD B, C

7

Page 8: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 4: Grafo fornecido para a terceira questão.

3.2 b)Logo abaixo a matriz de adjacência:

A =

A B C DA 0 1 1 0B 1 0 1 1C 1 1 0 1D 0 1 1 0

3.3 c)

B =

1 2 3 4 5A 1 1 0 0 0B 1 0 1 1 0C 0 1 1 0 1D 0 0 0 1 1

3.4 d)Calculando o produto A2:

0 1 1 01 0 1 11 1 0 10 1 1 0

0 1 1 01 0 1 11 1 0 10 1 1 0

=

2 1 1 21 3 2 11 2 3 12 1 1 2

O tamanho (comprimento) de um caminho é o número de arestas do mesmo, ou seja, número devértices menos um. Quantos caminhos distintos de tamanho n existem conectando dois vértices deum dado grafo G? Este valor pode ser computado multiplicando a matriz de adjancência do grafoG por ela mesma n vezes. Se A é a matriz de adjacência de um grafo G, a entrada aij da matrizA2 indica a quantidade de caminhos de tamanho 2 conectando vi a vj no grafo G. Este resultadoé válido para caminhos de tamanho n calculando An. Logo os números na diagonal significam onúmero de caminhos de tamanho 2 que existem de um vértice para ele mesmo.

3.5 e)Calculando o produto B ·Bt:

1 1 0 0 01 0 1 1 00 1 1 0 10 0 0 1 1

1 1 0 01 0 1 00 1 1 00 1 0 10 0 1 1

=

2 1 1 01 3 1 11 1 3 10 1 1 2

8

Page 9: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Os valores da diagonal principal represetam o número de conexões ou caminhos que o respectivovértice possui a partir dele. Fora da diagonal o número de conexões que o respectivo vértice possuicom os demais.

3.6 f)Calculando o produto Bt ·B:

1 1 0 01 0 1 00 1 1 00 1 0 10 0 1 1

1 1 0 0 01 0 1 1 00 1 1 0 10 0 0 1 1

=

2 1 1 1 01 2 1 0 11 1 2 1 11 0 1 2 10 1 1 1 2

4 Questão 6

Se para cada ligação entre vértices inserimos/aumentamos um grau para cada vértice partici-pante da ligação então, teremos para o seguinte grafo visto abaixo um número de vértices |V | = 2e número de arestas |E| = 1.

Figura 5: Exemplo de grafo para cálculo do grau. Primeiro Passo da Demonstração.

Para o próximo grafo teríamos o mesmo, um número de vértices |V | = 3 e número de arestas|E| = 2

Figura 6: Exemplo de grafo para cálculo do grau. Segundo Passo da Demonstração.

E por indução nós podemos contruir uma forma de chegar até∑v∈V

d(v) = 2m

Onde d(v) é a função que retorna o grau de um determinado vértice v ∈ V , V o conjunto devértices do grafo e m o número de arestas. Observando a matriz de incidência notamos quecada linha determina o grau de um vértice. Como para cada aresta aparecem dois 1s na matrizde incidência, a soma de todos os graus equivale a contar duas vezes cada aresta. Uma outraobservação interessante é que o número de vértices de grau impar em um grafo orientado sempreé par:

Nv(d(v)impar) = 2k

Sendo Nv a função que classifica e retorna o número de vértices que possuem grau ímpar, e essenúmero sempre será da forma 2k. Como a soma dos graus de todos os vértices é um número par(2n) é impossível que só um tenha grau ímpar. Os dois fatos relacionados nessa questão a prioripodem parecer coincidência mas são fortes consequências de leis encontradas na Álgebra Linear.Não faremos uso dessas ferramentas de caráter mais avançado, iremos apenas formalizar esses

9

Page 10: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

fatos de maneira bem simples. Para isso denotaremos um grafo pela letra G e representaremospor V (G) e A(G) respectivamente, os conjuntos de vértices e das arestas de G.

Teorema 1 (Relação Entre a Soma dos Graus e a Quantidade de Arestas). Para todo grafo G∑v∈V (G)

d(v) = 2 ·m

Isto é: “A soma dos graus dos vértices de um grafo é sempre o dobro do número de arestas.”

Demonstração. Quando contamos os graus dos vértices estamos contando as extremidades dasarestas uma vez. Como cada aresta tem duas extremidades, no processo de contagem cada arestafoi computada duas vezes.

Corolário 1 (Ou Lema do Aperto de Mãos). Todo grafo G possui um número par de vértices degrau ímpar.

Nv(d(v)impar) = 2k

Demonstração. Se tivéssemos um número ímpar de vértices de grau ímpar a soma dos graus seriaímpar. Mas a soma dos graus é o dobro do número de arestas e, portanto é um número par.

5 Questão 85.1 a)

Suponha que exista um grafo G bipartido. Se G não contém ciclos, então não há o queprovar. Suponha que G tem um ciclo Cn = v0v1, v1v2, ..., vs−1vs. Supondo que v0 ∈ V1, entãov1 ∈ V1, v2 ∈ V1, etc. Ou seja, vi ∈ V1 se e somente se i é par. Como v0 = vs, s deve ser par.Desta forma, utilizamos um número par de arestas.

5.2 b)Sim. Seja v0 ∈ V (G). Vamos separar os vértices de G em dois subconjuntos V1 e V2 de tal

modo que v0 ∈ V2 e v ∈ V1 se e somente se existe um caminho de comprimento ímpar de v0 a v.Então V1 e V2 são disjuntos. De fato, suponha que exista w ∈ V1 ∩ V2. Podemos supor que w é ovétice “mais próximo” de v0 tal que isso acontece. Então existiria um caminho C1 de comprimentopar de v0 a w e um caminho C2 de v0 a w de comprimento ímpar, que não se cruzam. EntãoC1 ∪ C2 seria um ciclo de comprimento ímpar, o que por absurdo não é válido.

5.3 c)Observa-se na figura abaixo que no grafo G1 existe um ciclo fechado ímpar no vértice A. Já

no grafo G2, todo ciclo fechado em A é par.

Figura 7: Exemplo de grafos não isomorfos.

10

Page 11: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Teoria dos Grafos - Exercícios do Capítulo 3Questões 1, 2 e 5

Michel Alves dos Santos ∗

Abril de 2011

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 12: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

ConteúdoLista de Figuras 3

Lista de Tabelas 3

1 Questão 1. Execute o algoritmo de Dijkstra com o exemplo do item 3.2, tro-cando antes o sinal do custo do arco (E,B). 4

2 Questão 2. Considere os dois grafos utilizados nos algoritmos de Dijkstra eBellman-Ford. 52.1 Aplique o algoritmo de Dijkstra, acompanhando a formalização, aos dois grafos, use

os vértices A, no primeiro, e 1, no segundo, como origem. . . . . . . . . . . . . . . 52.1.1 Para o primeiro grafo teremos: . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Para o segundo grafo teremos: . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Aplique o algoritmo de Bellmann-Ford aos dois grafos (mesma observação). . . . . 92.2.1 Para o primeiro grafo teremos: . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.2 Para o segundo grafo teremos: . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 No segundo grafo, mude o valor do arco(3,5) para -2 e aplique os dois algoritmos.Observe os resultados obtidos e interprete. . . . . . . . . . . . . . . . . . . . . . . . 102.3.1 Dijkstra: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3.2 Bellmann-Ford: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Questão 5. Utilizando o grafo a seguir, aplique o algoritmo de Dijkstra paraachar a menor distância do vértice A aos outros vértices e construa a arbores-cência de distâncias a partir de A. 12

2

Page 13: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Lista de Figuras1 Primeira Questão. Distâncias em quilômetros entre as cidades de uma certa região. 42 Arborescência de distâncias a partir do vértice A. . . . . . . . . . . . . . . . . . . . 53 Grafos fornecidos para a questão de número 2. . . . . . . . . . . . . . . . . . . . . 54 Arborescência de distâncias a partir do vértice A. . . . . . . . . . . . . . . . . . . . 75 Arborescência de distâncias a partir do vértice (1). . . . . . . . . . . . . . . . . . . 96 Grafo com o valor do arco (3,5) invertido. . . . . . . . . . . . . . . . . . . . . . . . 107 Grafo fornecido para a questão de número 5. . . . . . . . . . . . . . . . . . . . . . 128 Arborescência de distâncias a partir do vértice A. . . . . . . . . . . . . . . . . . . . 13

Lista de Tabelas1 1o Passo. Iniciando a tabela de distâncias e relações de anteriodidade. O rótulo

“Distância” indica a distância de qualquer vértice até o vértice A. O rótulo “Ante-rior” indica o vértice anterior pelo qual o caminho está sendo contruído. . . . . . . 4

2 2o Passo. Fechando o vértice C pois não existe menor distância. . . . . . . . . . . . 43 3o Passo. Fechando o vértice D pois não existe menor distância. . . . . . . . . . . . 44 4o Passo. Fechando o vértice E pois não existe menor distância. . . . . . . . . . . . 45 5o Passo. Fechando o vértice F pois não existe menor distância. . . . . . . . . . . . 46 Passo Final. Fechando o vértice B* pois não existe menor distância. Todos os

vértices foram avaliados, com isso construímos a tabela com as distâncias. . . . . . 57 1o Passo. Construindo a tabela de distâncias. . . . . . . . . . . . . . . . . . . . . . 58 2o Passo. Inicializando a tabela de distâncias. . . . . . . . . . . . . . . . . . . . . . 69 3o Passo. Passando pelo vértice C. . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 4o Passo. Passando pelo vértice D. . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 5o Passo. Passando pelo vértice E. . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 6o Passo. Passando pelo vértice B. . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 Passo Final. Obtenção de todas as distâncias a partir do vértice A. . . . . . . . . . 714 1o Passo. Construindo a tabela de distâncias. . . . . . . . . . . . . . . . . . . . . . 815 2o Passo. Inicializando a tabela de distâncias. . . . . . . . . . . . . . . . . . . . . . 816 3o Passo. Passando pelo vértice (2). . . . . . . . . . . . . . . . . . . . . . . . . . . 817 4o Passo. Passando pelo vértice (3). . . . . . . . . . . . . . . . . . . . . . . . . . . 818 5o Passo. Passando pelo vértice (4). . . . . . . . . . . . . . . . . . . . . . . . . . . 919 6o Passo. Passando pelo vértice (5). . . . . . . . . . . . . . . . . . . . . . . . . . . 920 Passo Final. Obtenção de todas as distâncias a partir do vértice (1). . . . . . . . . 921 1o Passo. Iniciando tabela com distâncias a partir do vértice (1). Usando o valor

1000 para representar infinito. Fechando o vértice (1), pois é nosso vértice de partida. 1022 2o Passo. Obtendo as rotas para os vértices (2) e (5) apartir do vértice (1). . . . . 1123 3o Passo. Obtendo as rotas para os vértices (3) e (4) apartir do vértice (2). . . . . 1124 4o Passo. Obtendo as rotas para os vértices (4) e (5) apartir do vértice (3). . . . . 1125 5o Passo. Obtendo rota para o vértice (1) apartir do vértice (4). Observe que o

vértice (1) já se encontra fechado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126 6o Passo. Obtendo rota para o vértice (1) e (4) apartir do vértice (5). . . . . . . . 1127 Tabela com todas as distâncias a partir do vértice (1). Houve uma redução nas

distâncias devido ao caminho com valor negativo. . . . . . . . . . . . . . . . . . . . 1128 1o Passo. Iniciando a tabela de distâncias e relações de anteriodidade. O rótulo

“Distância” indica a distância de qualquer vértice até o vértice A. O rótulo “Ante-rior” indica o vértice anterior pelo qual o caminho está sendo contruído. . . . . . . 12

29 Último Passo. Construção da tabela com as distâncias a partir do vértice A. . . . . 12

3

Page 14: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

1 Questão 1. Execute o algoritmo de Dijkstra com o exem-plo do item 3.2, trocando antes o sinal do custo do arco(E,B).

Figura 1: Primeira Questão. Distâncias em quilômetros entre as cidades de uma certa região.

A* B C D E FDistância 0 ∞ ∞ ∞ ∞ ∞Anterior - - - - - -

Tabela 1: 1o Passo. Iniciando a tabela de distâncias e relações de anteriodidade. O rótulo“Distância” indica a distância de qualquer vértice até o vértice A. O rótulo “Anterior” indica ovértice anterior pelo qual o caminho está sendo contruído.

A* B C* D E FDistância 0 12 4 ∞ ∞ ∞Anterior - A A - - -

Tabela 2: 2o Passo. Fechando o vértice C pois não existe menor distância.

A* B C* D* E FDistância 0 12 4 6 ∞ 12Anterior - A A C - D

Tabela 3: 3o Passo. Fechando o vértice D pois não existe menor distância.

A* B C* D* E* FDistância 0 12 4 6 6 12Anterior - A A C C E

Tabela 4: 4o Passo. Fechando o vértice E pois não existe menor distância.

A* B C* D* E* F*Distância 0 12 4 6 6 12Anterior - A A C C E

Tabela 5: 5o Passo. Fechando o vértice F pois não existe menor distância.

4

Page 15: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

A* B* C* D* E* F*Distância 0 12 4 6 6 12Anterior - A A C C E

Tabela 6: Passo Final. Fechando o vértice B* pois não existe menor distância. Todos os vérticesforam avaliados, com isso construímos a tabela com as distâncias.

Figura 2: Arborescência de distâncias a partir do vértice A.

2 Questão 2. Considere os dois grafos utilizados nos algo-ritmos de Dijkstra e Bellman-Ford.

Figura 3: Grafos fornecidos para a questão de número 2.

2.1 Aplique o algoritmo de Dijkstra, acompanhando a formalização, aosdois grafos, use os vértices A, no primeiro, e 1, no segundo, comoorigem.

2.1.1 Para o primeiro grafo teremos:

Procuramos a cidade mais próxima de A. Depois, sucessivamente, procuramos entre as cidadesnão visitadas aquela que tem a menor distância desde A, diretamente ou passando por algumacidade já visitada, anotando sempre o percurso escolhido. Estamos considerando que nunca te-remos distâncias negativas, pois isso atrapalharia o algoritmo, já que o mesmo não sabe lidarcom distâncias negativas(ele pode entrar em looping). Começamos por construir uma tabela dedistâncias entre os vértices. Para os vértices não ligados consideraremos a distância como infinita.Para os próximos passos usaremos o número 1000 para representar a distância infinita (∞) que

A* B C D E FA 0 12 4 ∞ ∞ ∞B ∞ 0 6 6 ∞ ∞C ∞ 10 0 ∞ 2 ∞D ∞ ∞ 8 0 ∞ 6E ∞ 2 ∞ ∞ 0 6F ∞ ∞ ∞ ∞ ∞ 0

Tabela 7: 1o Passo. Construindo a tabela de distâncias.

foi colocada na tabela de distâncias para representar a falta de ligação entre os vértices.

5

Page 16: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Inicialização: A distância de A para todos os outros vértices é marcada como infinita(nessecaso 1000), exceto para o próprio A(distância 0). Marcamos A como fechado, usando um asterisco,e o vértice anterior fica vazio porque A é o nosso vértice de partida.

A* B C D E FDistância 0 ∞ ∞ ∞ ∞ ∞Anterior - - - - - -

Tabela 8: 2o Passo. Inicializando a tabela de distâncias.

• 2o Passo: Que cidades posso alcançar a partir de A e qual é a distância entre elas?

• Resposta: B, distância = 12 (mudamos para 12 pois: 12 < 1000 )

• Resposta: C, distância = 4 (mudamos para 4 pois: 4 < 1000 )

O vértice C será fechado pois sua distância não pode ser melhorada e será o nosso próximo pontode partida.

A* B C* D E FDistância 0 12 4 ∞ ∞ ∞Anterior A A A - - -

Tabela 9: 3o Passo. Passando pelo vértice C.

• 3o Passo: Que cidades posso alcançar a partir de C e qual é a distância entre elas?

• Resposta: B, distância = 14 (não mudamos para 14 pois: 12 < 14 )

• Resposta: D, distância = 6 (mudamos para 6 pois: 6 < 1000 )

• Resposta: E, distância = 6 (mudamos para 6 pois: 6 < 1000 )

O vértice D será fechado pois sua distância não pode ser melhorada e será o nosso próximo pontode partida.

A* B C* D* E FDistância 0 12 4 6 6 ∞Anterior A A A C C -

Tabela 10: 4o Passo. Passando pelo vértice D.

• 4o Passo: Que cidades posso alcançar a partir de D e qual é a distância entre elas?

• Resposta: C, distância = 14 (não mudamos para 14 pois: 4 < 14 )

• Resposta: F, distância = 12 (mudamos para 12 pois: 12 < 1000 )

Por enquanto nenhum vértice será fechado mas as distâncias computadas que estavam dentro dopadrão de minimalidade serão atualizadas na tabela. Próximo ponto de partida será o vértice E.

• 5o Passo: Que cidades posso alcançar a partir de E e qual é a distância entre elas?

• Resposta: B, distância = 8 (mudamos para 8 pois: 8 < 12)

• Resposta: F, distância = 12 (mudamos para 12 pois: 12 <= 12)

6

Page 17: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

A* B C* D* E FDistância 0 12 4 6 6 12Anterior A A A C C D

Tabela 11: 5o Passo. Passando pelo vértice E.

A* B C* D* E* FDistância 0 8 4 6 6 12Anterior A E A C C E

Tabela 12: 6o Passo. Passando pelo vértice B.

O vértice E será fechado pois sua distância não pode ser melhorada e B será o nosso próximoponto de partida.

• 6o Passo: Que cidades posso alcançar a partir de B e qual é a distância entre elas?

• Resposta: C, distância = 14 (não mudamos para 14 pois: 4 < 14)

• Resposta: D, distância = 14 (não mudamos para 14 pois: 6 < 14)

Porém vale observar que o vértice C já foi fechado e o vértice D também, logo o vértice B se-ráfechado pois não existe menor distância para alcançá-lo. Além disso chegamos ao final dasverificações, logo o vértice F também será fechado e com isso teremos:

A* B* C* D* E* F*Distância 0 8 4 6 6 12Anterior A E A C C E

Tabela 13: Passo Final. Obtenção de todas as distâncias a partir do vértice A.

Figura 4: Arborescência de distâncias a partir do vértice A.

2.1.2 Para o segundo grafo teremos:

Começamos por construir uma tabela de distâncias entre os vértices. Para os vértices nãoligados consideraremos a distância como infinita (∞). Para os próximos passos usaremos o número1000 para representar a distância infinita (∞) que foi colocada na tabela de distâncias pararepresentar a falta de ligação entre os vértices.

Inicialização: A distância de (1) para todos os outros vértices é marcada como infinita(nessecaso 1000), exceto para o próprio (1)(distância 0). Marcamos (1) como fechado, usando umasterisco, e o vértice anterior fica vazio porque (1) é o nosso vértice de partida.

• 2o Passo: Que vértices posso alcançar a partir de (1) e qual é a distância entre eles?

• Resposta: (2), distância = 1 (mudamos para 1 pois: 1 < 1000 )

7

Page 18: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

(1) (2) (3) (4) (5)(1) 0 1 ∞ ∞ 1(2) ∞ 0 1 2 ∞(3) ∞ ∞ 0 4 2(4) 3 ∞ ∞ 0 ∞(5) 2 ∞ ∞ 1 0

Tabela 14: 1o Passo. Construindo a tabela de distâncias.

(1)* (2) (3) (4) (5)Distância 0 ∞ ∞ ∞ ∞Anterior - - - - -

Tabela 15: 2o Passo. Inicializando a tabela de distâncias.

• Resposta: (5), distância = 1 (mudamos para 1 pois: 1 < 1000 )

O vértice (2) será fechado pois sua distância não pode ser melhorada e será o nosso próximo pontode partida.

(1)* (2)* (3) (4) (5)Distância 0 1 ∞ ∞ 1Anterior - (1) - - (1)

Tabela 16: 3o Passo. Passando pelo vértice (2).

• 3o Passo: Que vértices posso alcançar a partir de (2) e qual é a distância entre eles?

• Resposta: (3), distância = 2 (mudamos para 2 pois: 2 < 1000 )

• Resposta: (4), distância = 3 (mudamos para 3 pois: 3 < 1000 )

O vértice (3) será fechado pois sua distância não pode ser melhorada e será o nosso próximo pontode partida.

(1)* (2)* (3)* (4) (5)Distância 0 1 2 3 1Anterior - (1) (2) (2) (1)

Tabela 17: 4o Passo. Passando pelo vértice (3).

• 4o Passo: Que vértices posso alcançar a partir de (3) e qual é a distância entre eles?

• Resposta: (4), distância = 6 (não mudamos para 6 pois: 3 < 6 )

• Resposta: (5), distância = 4 (não mudamos para 4 pois: 1 < 4 )

O vértice (4) não será fechado pois ainda não averiguamos se a distância pode ser melhorada eserá o nosso próximo ponto de partida.

• 4o Passo: Que vértices posso alcançar a partir de (4) e qual é a distância entre eles?

• Resposta: (1), distância = 6 (não mudamos para 6 pois: 0 < 6 )

8

Page 19: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

(1)* (2)* (3)* (4) (5)Distância 0 1 2 3 1Anterior - (1) (2) (2) (1)

Tabela 18: 5o Passo. Passando pelo vértice (4).

(1)* (2)* (3)* (4) (5)Distância 0 1 2 3 1Anterior - (1) (2) (2) (1)

Tabela 19: 6o Passo. Passando pelo vértice (5).

O vértice (4) não será fechado pois ainda não averiguamos se a distância pode ser melhorada e ovértice (5) será o nosso próximo ponto de partida. Observe que o vértice (1) já estava fechado.

• Passo Final: Que vértices posso alcançar a partir de (5) e qual é a distância entre eles?

• Resposta: (1), distância = 3 (não mudamos para 3 pois: 0 < 3 )

• Resposta: (4), distância = 2 (mudamos para 2 pois: 2 < 3 )

O vértice (4) será fechado pois a distância não pode ser melhorada e o vértice (5) também será.

(1)* (2)* (3)* (4)* (5)*Distância 0 1 2 2 1Anterior - (1) (2) (5) (1)

Tabela 20: Passo Final. Obtenção de todas as distâncias a partir do vértice (1).

Figura 5: Arborescência de distâncias a partir do vértice (1).

2.2 Aplique o algoritmo de Bellmann-Ford aos dois grafos (mesma ob-servação).

2.2.1 Para o primeiro grafo teremos:

(A, B) : dAB(∞) > d11(0) + vAB(12)→ dAB = 12 anterior(B) = A

(A, C) : dAC(∞) > d11(0) + vAC(4)→ dAC = 4 anterior(C) = A

(C, B) : dAB(12) < dAC(4) + vCB(10)→ dAB = 12 sem modificação

(C, D) : dAD(∞) > dAC(4) + vCD(2)→ dAD = 6 anterior(D) = C

(C, E) : dAE(∞) > dAC(4) + vCE(2)→ dAE = 6 anterior(E) = C

(D, C) : dAC(4) < dAD(6) + vDC(8)→ dAC = 4 sem modificação

(D, F ) : dAF (∞) > dAD(6) + vDF (6)→ dAF = 12 anterior(F ) = D

9

Page 20: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

(E, B) : dAB(12) > dAE(6) + vEB(2)→ dAB = 8 anterior(B) = E

(E, F ) : dAF (12) >= dAE(6) + vEF (6)→ dAF = 12 anterior(F ) = E

(B, C) : dAC(4) < dAB(8) + vBC(6)→ dAC = 4 sem modificação

(B, D) : dAD(6) < dAB(8) + vBD(6)→ dAD = 6 sem modificação

Em uma segunda iteração não haverá mudanças nos valores das distâncias.

2.2.2 Para o segundo grafo teremos:

(1, 2) : d12(∞) > d11(0) + v12(1)→ d12 = 1 anterior(2) = 1

(1, 5) : d15(∞) > d11(0) + v15(1)→ d15 = 1 anterior(5) = 1

(2, 3) : d13(∞) > d12(1) + v23(1)→ d13 = 2 anterior(3) = 2

(2, 4) : d14(∞) > d12(1) + v24(2)→ d14 = 3 anterior(4) = 2

(3, 4) : d14(3) > d13(2) + v34(4)→ sem modificação

(3, 5) : d15(1) > d13(2) + v35(2)→ sem modificação

(4, 1) : d11(0) > d14(3) + v41(3)→ sem modificação

(5, 1) : d11(0) > d15(1) + v51(2)→ sem modificação

(5, 4) : d14(3) > d15(1) + v54(1)→ d14 = 2 anterior(4) = 5

Em uma segunda iteração não haverá mudanças nos valores das distâncias.

2.3 No segundo grafo, mude o valor do arco(3,5) para -2 e aplique osdois algoritmos. Observe os resultados obtidos e interprete.

Figura 6: Grafo com o valor do arco (3,5) invertido.

2.3.1 Dijkstra:

(1)* (2) (3) (4) (5)Distância 0 1000 1000 1000 1000Anterior - - - - -

Tabela 21: 1o Passo. Iniciando tabela com distâncias a partir do vértice (1). Usando o valor 1000para representar infinito. Fechando o vértice (1), pois é nosso vértice de partida.

10

Page 21: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

(1)* (2) (3) (4) (5)Distância 0 1 1000 1000 1Anterior - (1) - - (1)

Tabela 22: 2o Passo. Obtendo as rotas para os vértices (2) e (5) apartir do vértice (1).

(1)* (2) (3) (4) (5)Distância 0 1 2 3 1Anterior - (1) (2) (2) (1)

Tabela 23: 3o Passo. Obtendo as rotas para os vértices (3) e (4) apartir do vértice (2).

(1)* (2)* (3)* (4) (5)Distância 0 1 2 3 0Anterior - (1) (2) (2) (3)

Tabela 24: 4o Passo. Obtendo as rotas para os vértices (4) e (5) apartir do vértice (3).

(1)* (2)* (3)* (4) (5)Distância 0 1 2 3 0Anterior - (1) (2) (2) (3)

Tabela 25: 5o Passo. Obtendo rota para o vértice (1) apartir do vértice (4). Observe que o vértice(1) já se encontra fechado.

(1)* (2)* (3)* (4)* (5)Distância 0 1 2 1 0Anterior - (1) (2) (5) (3)

Tabela 26: 6o Passo. Obtendo rota para o vértice (1) e (4) apartir do vértice (5).

(1)* (2)* (3)* (4)* (5)*Distância 0 1 2 1 0Anterior - (1) (2) (5) (3)

Tabela 27: Tabela com todas as distâncias a partir do vértice (1). Houve uma redução nasdistâncias devido ao caminho com valor negativo.

11

Page 22: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

2.3.2 Bellmann-Ford:

(1, 2) : d12(∞) > d11(0) + v12(1)→ d12 = 1 anterior(2) = 1

(1, 5) : d15(∞) > d11(0) + v15(1)→ d15 = 1 anterior(5) = 1

(2, 3) : d13(∞) > d12(1) + v23(1)→ d13 = 2 anterior(3) = 2

(2, 4) : d14(∞) > d12(1) + v24(2)→ d14 = 3 anterior(4) = 2

(3, 4) : d14(3) > d13(2) + v34(4)→ sem modificação

(3, 5) : d15(1) > d13(2) + v35(−2)→ d15 = 0 anterior(5) = 3

(4, 1) : d11(0) > d14(3) + v41(3)→ sem modificação

(5, 1) : d11(0) > d15(1) + v51(2)→ sem modificação

(5, 4) : d14(3) > d15(0) + v54(1)→ d14 = 1 anterior(4) = 5

Em uma segunda iteração não haverá mudanças nos valores das distâncias.

3 Questão 5. Utilizando o grafo a seguir, aplique o algo-ritmo de Dijkstra para achar a menor distância do vér-tice A aos outros vértices e construa a arborescência dedistâncias a partir de A.

Figura 7: Grafo fornecido para a questão de número 5.

A* B C D E F G H I JDistância 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞Anterior - - - - - - - - - -

Tabela 28: 1o Passo. Iniciando a tabela de distâncias e relações de anteriodidade. O rótulo“Distância” indica a distância de qualquer vértice até o vértice A. O rótulo “Anterior” indica ovértice anterior pelo qual o caminho está sendo contruído.

A* B* C* D* E* F* G* H* I* J*Distância 0 4 1 2 7 4 5 4 8 6Anterior - A A C B D D D F H

Tabela 29: Último Passo. Construção da tabela com as distâncias a partir do vértice A.

12

Page 23: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 8: Arborescência de distâncias a partir do vértice A.

13

Page 24: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Lista de Exercícios - Teoria dos Grafos

Michel Alves dos Santos ∗

Novembro de 2010

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. DocenteResponsável: Leonardo Viana Pereira.

1

Page 25: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

ConteúdoLista de Figuras 4

Lista de Tabelas 5

1 Exercícios do Capítulo 4 61.1 Determinine todas as árvores parciais do grafo G a seguir (Figura 1). . . . 61.2 Como podemos adaptar o algoritmo de Kruskal para obter o valor de uma

árvore parcial de valor máximo? . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Um grafo G é autocomplementar se e somente se: . . . . . . . . . . . . . . 71.4 Um problema muito conhecido é o de atravessar um rio com uma cabra, um

lobo e um cesto de alfaces, com o auxílio de um barqueiro, em um barcoque só comporta dois desses elementos (problema da travessia). Dadas asrestrições óbvias sobre quem pode, ou não, esperar lado a lado em umamargem, monte um modelo de caminho que indique ao menos uma sequênciaviável de travessia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5 Um modelo parecido é o “dos 8 litros”: você acha em um depósito de vinhosum garrafão com capacidade para 8 litros, cheio de um vinho que você desejadividir meio a meio com um amigo. A dificuldade é que, no depósito, existemapenas 2 garrafas vazias, uma com capacidade para 5 e a outra para 3 litros.A divisão talvez seja possível passando-se vinho de uma dessas garrafas paraoutra, em uma sequência. Monte um modelo que indica a sequência a serseguida, para que no final se tenham 4 litros na garrafa de 8 e os outros 4,naturalmente, na de 5 litros. . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Exercícios do Capítulo 8 102.1 Mostre que, se um grafo G não orientado for euleriano, seu conjunto de

arestas poderá ser particionado em ciclos disjuntos. . . . . . . . . . . . . . 102.2 Explique por que, no PCC orientado, todas as extremidades de arco adici-

onadas a um vértice dado serão sempre, ou saídas, ou chegadas. . . . . . . 102.3 Construa uma sequência de De Brujin B(2,3). . . . . . . . . . . . . . . . . 102.4 Mostre que sempre existe uma sequência de De Brujin (r,s), para quaisquer

r,s inteiros positivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.5 Construa um algoritmo para achar um ciclo euleriano em um grafo euleriano

não orientado, a partir da construção progressiva de ciclos ao longo de umpercurso inicial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.6 Verifique se os grafos a seguir(figura 5) são hamiltonianos ou não-hamiltonianos,justificando a resposta(Dica: Um deles é hamiltoniano e o outro não). . . . 11

2

Page 26: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

2.7 Considere dois vértices v e w em um grafo G com n vértices. Mostre que, sed(v) + d(w) >= n e G possui um percurso hamiltoniano entre v e w, entãoG é hamiltoniano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.8 Mostre que os grafos correspondentes aos 5 sólidos platônicos são hamilto-nianos. Quais deles são eulerianos? . . . . . . . . . . . . . . . . . . . . . . 11

3

Page 27: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Lista de Figuras1 Determinação de árvores parciais. . . . . . . . . . . . . . . . . . . . . . . . 62 Algumas árvores parciais do grafo G. . . . . . . . . . . . . . . . . . . . . . 63 Modelo para o problema da travessia. . . . . . . . . . . . . . . . . . . . . . 84 Problema da divisão do vinho. . . . . . . . . . . . . . . . . . . . . . . . . . 95 Verificação de ciclos hamiltonianos. . . . . . . . . . . . . . . . . . . . . . . 11

4

Page 28: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Lista de Tabelas

5

Page 29: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

1 Exercícios do Capítulo 4

1.1 Determinine todas as árvores parciais do grafo G a seguir(Figura 1).

Figura 1: Determinação de árvores parciais.

(a) Você pode garantir que realmente determinou todas?

(b) O processo que você utilizou seria eficaz para o grafo H?

Figura 2: Algumas árvores parciais do grafo G.

(a) Não.

(b) Seria necessário um tempo considerável de processamento uma vez que o processousado foi a retirada aleatória de ciclos. Como o grafo H possui vários ciclos o processonão seria eficaz.

1.2 Como podemos adaptar o algoritmo de Kruskal para obtero valor de uma árvore parcial de valor máximo?

É simples, basta ao invés de pegar a aresta com menor valor a cada iteração, pegar aarestas com maior valor em cada iteração, dessa forma o resultado será o valor de umaárvore parcial de valor máximo.

6

Page 30: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

1.3 Um grafo G é autocomplementar se e somente se:1. G = G.

(a) Que ordem deve ter uma árvore autocomplementar?

(b) Quais serão as árvores autocomplementares?

1.4 Um problema muito conhecido é o de atravessar um rio comuma cabra, um lobo e um cesto de alfaces, com o auxílio deum barqueiro, em um barco que só comporta dois desses ele-mentos (problema da travessia). Dadas as restrições óbviassobre quem pode, ou não, esperar lado a lado em uma mar-gem, monte um modelo de caminho que indique ao menosuma sequência viável de travessia.

Levando em consideração que todos estavam na margem 1 e o objetivo é que todosestejam na margem 2, teremos o seguinte algoritmo:

1. Barqueiro leva ovelha para margem 2.

2. Barqueiro volta só para margem 1.

3. Barqueiro leva o lobo ou cesto de alfaces para margem 2.

4. Barqueiro volta com o a ovelha.

5. Barqueiro leva o cesto de alfaces ou lobo.

6. Barqueiro volta só.

7. Barqueiro leva a ovelha.

Para montar um modelo de caminho algumas abstrações devem serem feitas. Cada nó teráem seu rótulo um par ordenado (x,y) onde x pertence ao conjunto 1,2,3,4 representando,respectivamente, a ovelha, o lobo, o cesto de alface e o barqueiro e y pertence ao conjunto1,2 onde representamos, respectivamente, a margem 1 e margem 2. Ou seja, no par teráquem está no barco e para onde está indo, lembrando que no caso onde x = 1 ou x = 2,ou x = 3, fica subentendido que o barqueiro também se encontra no barco. A ilustraçãoa seguir reforça a sequência de travessia apresentada (Figura 3). Vale observar que umalgoritmo de busca em profundidade resolveria esse modelo de caminho.

7

Page 31: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 3: Modelo para o problema da travessia.

1.5 Um modelo parecido é o “dos 8 litros”: você acha em umdepósito de vinhos um garrafão com capacidade para 8 litros,cheio de um vinho que você deseja dividir meio a meio comum amigo. A dificuldade é que, no depósito, existem apenas2 garrafas vazias, uma com capacidade para 5 e a outra para3 litros. A divisão talvez seja possível passando-se vinho deuma dessas garrafas para outra, em uma sequência. Monteum modelo que indica a sequência a ser seguida, para queno final se tenham 4 litros na garrafa de 8 e os outros 4,naturalmente, na de 5 litros.

Para a resolução desse problema propomos o seguinte algoritmo:

1. A garrafa 8L está cheia.

2. Colocamos 8L em 5L, sobrando 3 litros em 8L.

3. Colocamos 5L em 3L, sobrando 2 litros em 5L. 3 litros em 8L e 3 litros em 3L.

4. Colocamos 3L em 8L, dessa forma 8L ficará com 6 litros e 5L com 2 litros.

5. Colocamos 5L em 3L, dessa forma 3L estará com 2 litros, 5L vazia e 8L com 6 litros.

6. Colocamos o conteúdo de 8L em 5L, assim 5L ficará com 5 litros, 8L com 1 litro e3L com 2 litros.

8

Page 32: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

7. Colocamos o conteúdo de 5L em 3L até que 3L encha e com isso teremos 3 litros em3L, 4 litros em 5L e 1 litro em 8L.

8. Colocamos o conteúdo de 3L em 8L e assim teremos 8L com 4 litros e 5L com 4 litros.

Para montar o modelo de caminho algumas abstrações devem serem feitas. Cada nó teráem seu rótulo uma tupla de três ordenado (x,y,z) onde x e z pertencem ao conjunto 8,3,5representando, respectivamente: garrafa de 8L, garrafa de 3L e garrafa de 5L e y pertenceao conjunto 1,2,3,4,5,6,7,8 representando a quantidade de litros a serem tiradas de x ecolocadas em z. Vale observar que um algoritmo de busca em profundidade resolveria essemodelo de caminho.

Figura 4: Problema da divisão do vinho.

9

Page 33: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

2 Exercícios do Capítulo 8

2.1 Mostre que, se um grafo G não orientado for euleriano,seu conjunto de arestas poderá ser particionado em ciclos dis-juntos.

Seja G um grafo euleriano. O caso em que G não possui arestas é trivial. Sendo G

conexo e tendo pelo menos uma aresta, todo o seu vértice tem, pelo menos, grau 2.Portanto, pelo Teorema de Euler, possui um ciclo C1. Retirando de G as arestas de C1

obtemos um subgrafo gerador G1 cujos vértices têm ainda todos grau par. Se G1 nãotem arestas, está terminada a demonstração desta implicação. Caso contrário, G1 temum ciclo C2 e a repetição do argumento anterior conduz-nos a um grafo G2, subgrafogerador de G1, cujos vértices têm grau par. Se G2 não tem arestas terminamos, casocontrário repete-se o argumento. E continuamos com este raciocínio sucessivamenteaté obtermos um grafo Gn totalmente desconexo (isto é, sem arestas). Aí teremosuma partição das arestas de G em n ciclos. 2.2 Explique por que, noPCC orientado, todas as extremidades de arco adicionadas aum vértice dado serão sempre, ou saídas, ou chegadas.

2.3 Construa uma sequência de De Brujin B(2,3).

B(2, 3) : 11101000 2.4 Mostre que sempre existe uma sequênciade De Brujin (r,s), para quaisquer r,s inteiros positivos.

2.5 Construa um algoritmo para achar um ciclo eulerianoem um grafo euleriano não orientado, a partir da construçãoprogressiva de ciclos ao longo de um percurso inicial.

grau = 0;soma = 0;matrizAdjacencias[][];N = NumeroDeLinhas(matrizAdjacencias[][]);i = 0; //i é a linha atual

Enquanto ((soma <= 2) e ( i<= N)){

grau = 0;Para( j=0; j < N; j++) grau = grau + matrizAdjacencias[i][j];

10

Page 34: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Se (grau mod 2 == 1) soma ++; //caso seja ímpari++;

}

Se (soma > 2) Escreve ‘CAMINHO NÃO EXISTENTE’Senão Escreve ‘CAMINHO EXISTENTE’

2.6 Verifique se os grafos a seguir(figura 5) são hamiltonia-nos ou não-hamiltonianos, justificando a resposta(Dica: Umdeles é hamiltoniano e o outro não).

Figura 5: Verificação de ciclos hamiltonianos.

O primeiro grafo é hamiltoniano porque podemos passar uma única vez por cadavértice. Já o segundo grafo, não é hamiltoniano porque não podemos encontrar umcaminho hamiltoniano. Sempre faz-se necessário passar mais de uma vez por umvértice.

2.7 Considere dois vértices v e w em um grafo G com nvértices. Mostre que, se d(v) + d(w) >= n e G possui umpercurso hamiltoniano entre v e w, então G é hamiltoniano.

2.8 Mostre que os grafos correspondentes aos 5 sólidos platô-nicos são hamiltonianos. Quais deles são eulerianos?

11

Page 35: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Lista de Exercícios - Teoria dos GrafosExercícios do Capítulo 4

Michel Alves dos Santos ∗

Abril de 2011

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 36: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

ConteúdoLista de Figuras 2

1 Questão 3. Determinine todas as árvores parciais do grafo G a seguir. 2

2 Questão 6. Como podemos adaptar o algoritmo de Kruskal para obter o valor de umaárvore parcial de valor máximo? 3

3 Questão 9. Um grafo G é autocomplementar se e somente se: 3

4 Questão 16. Um problema muito conhecido é o de atravessar um rio com uma cabra,um lobo e um cesto de alfaces, com o auxílio de um barqueiro, em um barco que sócomporta dois desses elementos (problema da travessia). Dadas as restrições óbviassobre quem pode, ou não, esperar lado a lado em uma margem, monte um modelode caminho que indique ao menos uma sequência viável de travessia. 3

Lista de Figuras1 Determinação de árvores parciais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Algumas árvores parciais do grafo G. . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Modelo para o problema da travessia. . . . . . . . . . . . . . . . . . . . . . . . . . 4

1 Questão 3. Determinine todas as árvores parciais do grafo G a seguir.

Figura 1: Determinação de árvores parciais.

(a) Você pode garantir que realmente determinou todas?

(b) O processo que você utilizou seria eficaz para o grafo H?

Figura 2: Algumas árvores parciais do grafo G.

2

Page 37: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

(a) Não.

(b) Seria necessário um tempo considerável de processamento uma vez que o processo usado foia retirada aleatória de ciclos. Como o grafo H possui vários ciclos o processo não seria eficaz.

2 Questão 6. Como podemos adaptar o algoritmo de Kruskal para obter o valor de umaárvore parcial de valor máximo?

É simples, basta ao invés de pegar a aresta com menor valor a cada iteração, pegar a arestascom maior valor em cada iteração, dessa forma o resultado será o valor de uma árvore parcial devalor máximo.

3 Questão 9. Um grafo G é autocomplementar se e somente se:

1. G = G.

(a) Que ordem deve ter uma árvore autocomplementar?Como a ordem é pela cardinalidade ou número de vértices de um grafo então, |V(G)| seráigual a |V(G)|, onde V(X) é a função que retorna os vértices do grafo X e |V(X)| é o operadorque nos informa o número de vértices existentes no conjunto dos vértices pertencentes aografo X.

(b) Quais serão as árvores autocomplementares?Serão todas aquelas isomórficas a G.

4 Questão 16. Um problema muito conhecido é o de atravessar um rio com uma cabra,um lobo e um cesto de alfaces, com o auxílio de um barqueiro, em um barco que sócomporta dois desses elementos (problema da travessia). Dadas as restrições óbviassobre quem pode, ou não, esperar lado a lado em uma margem, monte um modelo decaminho que indique ao menos uma sequência viável de travessia.

Levando em consideração que todos estavam na margem 1 e o objetivo é que todos estejam namargem 2, teremos o seguinte algoritmo:

1. Barqueiro leva ovelha para margem 2.

2. Barqueiro volta só para margem 1.

3. Barqueiro leva o lobo ou cesto de alfaces para margem 2.

4. Barqueiro volta com o a ovelha.

5. Barqueiro leva o cesto de alfaces ou lobo.

6. Barqueiro volta só.

7. Barqueiro leva a ovelha.

Para montar um modelo de caminho algumas abstrações devem serem feitas. Cada nó terá em seurótulo um par ordenado (x,y) onde x pertence ao conjunto 1,2,3,4 representando, respectivamente,a ovelha, o lobo, o cesto de alface e o barqueiro e y pertence ao conjunto 1,2 onde representamos,respectivamente, a margem 1 e margem 2. Ou seja, no par terá quem está no barco e para ondeestá indo, lembrando que no caso onde x = 1 ou x = 2, ou x = 3, fica subentendido que o barqueirotambém se encontra no barco. A ilustração a seguir reforça a sequência de travessia apresentada(Figura 3). Vale observar que um algoritmo de busca em profundidade resolveria esse modelo decaminho.

3

Page 38: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 3: Modelo para o problema da travessia.

4

Page 39: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Lista de Exercícios - Teoria dos GrafosExercícios do Capítulo 2 - Questões 10, 11, 16, 19

Michel Alves dos Santos ∗

Março de 2011

ConteúdoLista de Figuras 1

1 Questão 10 21.1 a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Questão 11 22.1 a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Questão 16 4

4 Questão 19 44.1 a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44.2 b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44.3 c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Lista de Figuras1 Grafo apresentado para décima questão. A primeira figura indica apenas as ligações

entre os vértices, a segunda apresenta o grafo complementar. . . . . . . . . . . . . 22 Grafo bipartido original, grafo bipartido completo obtido a partir do bipartido ori-

ginal e grafo bipartido complementar obtido a partir do grafo bipartido original. . 23 Grafos não isomorfos - questão a). . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Grafos não isomorfos - questão b). . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Através do Teorema de Enumeração de Polya, podemos provar que um grafo com 5

vértices e 7 arestas possui 4 grafos não isomorfos. Os números ao lado dos vérticesdenotam o grau de cada vértice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 40: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

6 Grafos não isomorfos obtidos através do software Mathematica. Usando o pacoteCombinatorica‘ podemos obter o número de grafos não isomorfos através do co-mando NumberOfGraphs[n,k], onde n representa o número de vértices e k o númerode arestas. Através da função ListGraphs[n,k], pertencente ao mesmo pacote, po-demos obter a estrutura de cada grafo. Finalmente, utilizando o comando Show-GraphArray[ListGraphs[n,k]] somos capazes de desenhar todos os grafos simplesnão isomorfos com n vértices e k arestas. A base para a obtenção da quantidade degrafos não isomorfos origina-se do Teorema de Polya. . . . . . . . . . . . . . . . . . 3

7 Grafo sf-conexo com caminho em vermelho passando por todos os vértices. . . . . . 48 Grafo de 8 e 9 vértices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1 Questão 101.1 a)

Figura 1: Grafo apresentado para décima questão. A primeira figura indica apenas as ligaçõesentre os vértices, a segunda apresenta o grafo complementar.

Primeiramente podemos observar que a clique do grafo original deu origem a um conjuntoindependente em seu respectivo grafo complementar, além disso podemos concluir que o númerode ligações para cada vértice no grafo complementar será igual ao número total de vértices menoso antigo número de ligações mais um, ou seja:

K(v) = |V | − (d(v) + 1)Onde K(v) é o novo grau do vértice no grafo complementar, |V | é o número de vértices no grafooriginal e d(v) o grau do vértice no grafo original.

1.2 b)

Figura 2: Grafo bipartido original, grafo bipartido completo obtido a partir do bipartido originale grafo bipartido complementar obtido a partir do grafo bipartido original.

2 Questão 112.1 a)

Dois grafos são isomorfos se e somente se existir uma função bijetiva entre seus conjuntos devértices, que preserve suas relações de adjacência. Observa-se nos grafos abaixo, que G1 possuium vértice de grau 4 e G2, possui dois vértices de grau 4. Portanto, G1 e G2 não são isomorfos,pois a relação de adjacência não foi preservada.

2

Page 41: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 3: Grafos não isomorfos - questão a).

2.2 b)

Figura 4: Grafos não isomorfos - questão b).

Para esta questão vale a pena lembrar que através do teorema que relaciona o número dearestas com a soma dos graus dos vértices de um grafo podemos checar se a construção do graforealmente atende a seguinte propriedade: a soma dos graus de cada vértice deve ser igual ao dobrodo número de arestas.

Figura 5: Através do Teorema de Enumeração de Polya, podemos provar que um grafo com 5vértices e 7 arestas possui 4 grafos não isomorfos. Os números ao lado dos vértices denotam ograu de cada vértice.

Figura 6: Grafos não isomorfos obtidos através do software Mathematica. Usando o pacote Com-binatorica‘ podemos obter o número de grafos não isomorfos através do comando NumberOf-Graphs[n,k], onde n representa o número de vértices e k o número de arestas. Através da funçãoListGraphs[n,k], pertencente ao mesmo pacote, podemos obter a estrutura de cada grafo. Final-mente, utilizando o comando ShowGraphArray[ListGraphs[n,k]] somos capazes de desenhar todosos grafos simples não isomorfos com n vértices e k arestas. A base para a obtenção da quantidadede grafos não isomorfos origina-se do Teorema de Polya.

3

Page 42: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

3 Questão 16A definição de grafo sf-conexo diz que para todo par de vértices u, v, existirá um caminho

de u até v e/ou existirá um caminho de v até u. Lembre-se que caminho é um tipo depercurso em grafos orientados onde todos os arcos estão no sentido início do percurso −→ fim dopercurso(ou seja, não há voltas/ciclos). Veja o exemplo abaixo:

Figura 7: Grafo sf-conexo com caminho em vermelho passando por todos os vértices.

4 Questão 194.1 a)

Nenhum grafo antirregular com n vértices pode ter mais que n− 1 graus diferentes.

4.2 b)Se uma sequência de graus gerar um único grafo ela será chamada unigráfica. As sequências

de graus dos grafos antirregulares são unigráficas.

4.3 c)

Figura 8: Grafo de 8 e 9 vértices.

4

Page 43: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Teoria dos Grafos - Exercıcios do Capıtulo 3Algoritmo de Dijkstra e Bellmann-Ford

Michel Alves dos Santos ∗

Abril de 2011

∗Bacharelando em Ciencia da Computacao, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsavel: Leo-nardo Viana Pereira.

1

Page 44: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Conteudo

Lista de Figuras 2

Lista de Tabelas 2

1 Algoritmo de Dijkstra. 3

2 Algoritmo de Bellmann-Ford. 4

3 Algoritmos de Dijkstra e Bellmann-Ford. 4

4 Saıda Produzida Pela Aplicacao. 4

Lista de Figuras

1 Grafo utilizado para averiguar a efetividade da implementacao do Algoritmo deDijkstra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Arborescencia de distancias obtida atraves da aplicacao do Algoritmo de Dijkstra.Esta arborescencia pode ser construıda com base nos valores armazenados na tabelade distancias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Grafo utilizado para averiguar a efetividade da implementacao do Algoritmo deBellmann-Ford. Ao final do processo obtivemos a mesma arborescencia de distancias. 4

Lista de Tabelas

1 Construcao da tabela de distancias entre vertices. . . . . . . . . . . . . . . . . . . . 32 Depois da avaliacao de todos os vertices finalizamos a construcao da tabela com

todas as distancias a partir da origem. Com base nesta tabela tambem podemosconstruir a arborescencia de distancias. . . . . . . . . . . . . . . . . . . . . . . . . . 4

2

Page 45: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

1 Algoritmo de Dijkstra.

Para verificacao dos resultados utilizando o algoritmo de Dijkstra, usamos primeiramente ografo observado abaixo. Informalmente, sem nenhuma criteriosidade ou formalidade matematica

Figura 1: Grafo utilizado para averiguar a efetividade da implementacao do Algoritmo de Dijkstra.

podemos descrever o Algoritmo de Dijkstra da seguinte maneira: procuramos o vertice mais pro-ximo de A, depois, sucessivamente, procuramos entre os vertices nao visitados aquele que tem amenor distancia desde A, diretamente ou passando por algum vertice ja visitado, anotando sem-pre o percurso escolhido. Estamos considerando que nunca teremos distancias negativas, pois issoatrapalharia o algoritmo, ja que o mesmo nao sabe lidar com distancias negativas(ele pode entrarem looping). Comecamos por construir uma tabela de distancias entre os vertices. Para os verticesnao ligados consideraremos a distancia como infinita. Para efeitos de implementacao a distancia

A B C D

A 0 12 2 ∞B ∞ 0 ∞ ∞C ∞ 5 0 2

D ∞ 1 ∞ 0

Tabela 1: Construcao da tabela de distancias entre vertices.

infinita foi representada pelo maximo numerico que poderia ser indexado pelo computador hospe-deiro da aplicacao/programa. Em C++ (linguagem utilizada para implementar o algoritmo) essemaximo numerico e obtido atraves da biblioteca limits com o uso da classe numeric limits. Umexemplo de uso dessas instrucoes e dado logo abaixo:

// Abaixo um exemplo de obtenc~ao de limite numerico. Otenc~ao do maior inteiro

// com sinal que pode ser indexado, bem como o maior ponto flutuante de precis~ao

// dupla que pode ser representado na maquina hospedeira da aplicac~ao.

int maximo_int = numeric_limits<int>::max(); /*Maximo inteiro*/

double maximo_dbl = numeric_limits<double>::max(); /*Maximo ponto flutuante*/

Figura 2: Arborescencia de distancias obtida atraves da aplicacao do Algoritmo de Dijkstra. Estaarborescencia pode ser construıda com base nos valores armazenados na tabela de distancias.

3

Page 46: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

A B C D

Distancia 0 5 2 4

Anterior - D A C

Tabela 2: Depois da avaliacao de todos os vertices finalizamos a construcao da tabela com todas asdistancias a partir da origem. Com base nesta tabela tambem podemos construir a arborescenciade distancias.

2 Algoritmo de Bellmann-Ford.

Para verificacao dos resultados utilizando o algoritmo de Bellmann-Ford, usamos o mesmografo com o qual averiguamos a capacidade do algoritmo de Dijkstra.

Figura 3: Grafo utilizado para averiguar a efetividade da implementacao do Algoritmo deBellmann-Ford. Ao final do processo obtivemos a mesma arborescencia de distancias.

Abaixo verificamos os passos utilizados para calculo das rotas a partir das informacoes dedistancias entre os vertices.

(A,B) : dAB(∞) > dAA(0) + vAB(12) → dAB = 12 anterior(B) = A

(A,C) : dAC(∞) > dAA(0) + vAC(2) → dAC = 2 anterior(C) = A

(C,B) : dAB(12) > dAC(2) + vCB(5) → dAB = 7 anterior(B) = C

(C,D) : dAD(∞) > dAC(2) + vCD(2) → dAD = 4 anterior(D) = C

(D,B) : dAB(7) > dAD(4) + vDB(1) → dAB = 5 anterior(B) = D

Em uma segunda iteracao nao havera mudancas nos valores das distancias calculadas atraves doAlgoritmo de Bellmann-Ford.

3 Algoritmos de Dijkstra e Bellmann-Ford.

Os algoritmos de Dijkstra e Bellmann-Ford foram implementados atraves da linguagem C++.Os fontes com as respectivas classes e objetos de teste podem ser encontrados em anexo. Asfuncionalidades das partes integrantes dos fontes podem ser facilmente entendidas, ja que todas asinstrucoes foram exaustivamente documentadas. Para uma melhor compreensao dos mecanismosutilizados recomendamos a leitura dos livros Algorithms de Robert Sedgewick, The AlgorithmDesign Manual de Steven S. Skiena, C++: The Complete Reference de Herbert Schildt, C++by Dissection de Ira Pohl, The C++ Programming Language de Bjarne Stroustrup e finalmenteEffective C++ de Scott Meyers.

4 Saıda Produzida Pela Aplicacao.

A seguir sera exibida a saıda produzida pela aplicacao com base no exemplo dado anteriormente(ver figura 1). Verifique a evolucao da tabela de distancias para a saıda do algoritmo de Dijkstrae o numero de iteracoes necessarias, para que nesse exemplo, possamos chegar a um estado final.

4

Page 47: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Matriz de Adjacencias:

[e11,0] [e12,1] [e13,1] [e14,0]

[e21,1] [e22,0] [e23,1] [e24,1]

[e31,1] [e32,1] [e33,0] [e34,1]

[e41,0] [e42,1] [e43,1] [e44,0]

Lista de Vertices:

[A,0] [B,0] [C,0] [D,0]

Graus dos Vertices:

[A,0] : 2

[B,0] : 3

[C,0] : 3

[D,0] : 2

Matriz de Distancias:

0 12 2 2147483647

2147483647 0 2147483647 2147483647

2147483647 5 0 2

2147483647 1 2147483647 0

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][1.79769e+308] [1.79769e+308] [1.79769e+308] [1.79769e+308]

[Anterior] [ ] [ ] [ ] [ ]

Executando o Algoritmo de Dijkstra:

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [12] [2] [1.79769e+308]

[Anterior] [ ] [A] [A] [ ]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [7] [2] [1.79769e+308]

[Anterior] [ ] [C] [A] [ ]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [7] [2] [1.79769e+308]

[Anterior] [ ] [C] [A] [ ]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [7] [2] [4]

[Anterior] [ ] [C] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [7] [2] [4]

[Anterior] [ ] [C] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

5

Page 48: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

[Distancias][0] [5] [2] [4]

[Anterior] [ ] [D] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [5] [2] [4]

[Anterior] [ ] [D] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [5] [2] [4]

[Anterior] [ ] [D] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [5] [2] [4]

[Anterior] [ ] [D] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [5] [2] [4]

[Anterior] [ ] [D] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [5] [2] [4]

[Anterior] [ ] [D] [A] [C]

Tabela de Distancias:

[A] [B] [C] [D]

[Distancias][0] [5] [2] [4]

[Anterior] [ ] [D] [A] [C]

6

Page 49: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Teoria dos Grafos - Exercícios do Capítulo 8

Michel Alves dos Santos ∗

Junho de 2011

ConteúdoLista de Figuras 1

1 Mostre que, se um grafo G não orientado for euleriano, seu conjunto de arestaspoderá ser particionado em ciclos disjuntos. 1

2 No Exemplo do item 8.4.2, execute o algoritmo de Dijkstra e verifique a cons-trução da matriz de alocação, o resultado do algoritmo húngaro e os caminhosapontados pelo vetor ‘Anterior’ acompanhando-os no grafo. 2

3 Construa uma sequência de De Brujin B(2,3). 2

4 Mostre que o gráfico de Petersen(figura 1) é não hamiltoniano. Explique por-que as condições suficientes expostas no capítulo não se aplicam a ele.(Dica:Aproveite a simetria do grafo). 2

5 Construa um algoritmo para achar um ciclo euleriano em um grafo eulerianonão orientado, a partir da construção progressiva de ciclos ao longo de umpercurso inicial. 3

6 Verifique se os grafos a seguir(figura 2) são hamiltonianos ou não-hamiltonianos,justificando a resposta(Dica: Um deles é hamiltoniano e o outro não). 3

Lista de Figuras1 Grafo de Petersen. Sua sequência gráfica é (3,3,3,3,3,3,3,3,3,3). . . . . . . . . . . . 22 Verificação de ciclos hamiltonianos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1 Mostre que, se um grafo G não orientado for euleriano,seu conjunto de arestas poderá ser particionado em ciclosdisjuntos.

Seja G um grafo euleriano. O caso em que G não possui arestas é trivial. Sendo G conexoe tendo pelo menos uma aresta, todo o seu vértice tem, pelo menos, grau 2. Portanto, peloTeorema de Euler, possui um ciclo C1. Retirando de G as arestas de C1 obtemos um subgrafo

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 50: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

gerador G1 cujos vértices têm ainda todos grau par. Se G1 não tem arestas, está terminada ademonstração desta implicação. Caso contrário, G1 tem um ciclo C2 e a repetição do argumentoanterior conduz-nos a um grafo G2, subgrafo gerador de G1, cujos vértices têm grau par. Se G2 nãotem arestas terminamos, caso contrário repete-se o argumento. E continuamos com este raciocíniosucessivamente até obtermos um grafo Gn totalmente desconexo (isto é, sem arestas). Aí teremosuma partição das arestas de G em n ciclos.

2 No Exemplo do item 8.4.2, execute o algoritmo de Dijks-tra e verifique a construção da matriz de alocação, o re-sultado do algoritmo húngaro e os caminhos apontadospelo vetor ‘Anterior’ acompanhando-os no grafo.

Para execução do algoritmo de Dijkstra a partir do vértice com rótulo ‘01’ teremos o seguintecenário:

[Vértice] [01] [02] [03] [04] [05] [06] [07] [08] [09] [10][Distâncias][0] [85] [inf] [460] [195] [220] [inf] [370] [285] [320][Anterior] [-] [01] [01] [08] [02] [02] [01] [09] [05] [05]

[Vértice] [11] [12] [13] [14] [15][Distâncias] [inf] [inf] [435] [inf] [inf][Anterior] [01] [01] [09] [01] [01]

Podemos observar que partindo do primeiro vértice encontraremos algumas regiões onde ocorrerão‘loopings’, que podem ser chamados de caminhos de repetição. Note que nessa primeira iteraçãotomando como origem o vértice ‘01’ não conseguiremos alcançar todos os vértices, por isso atabela de distâncias indicará distância infinita(inf). Outros caminhos de repetição, que poderamser notados no grafo fornecido, são: (02, 05, 09), (06, 03, 02, 05, 09), (08, 04), (15, 11) e (15, 11,07, 08, 05, 10, 14).

3 Construa uma sequência de De Brujin B(2,3).

B(2,3): 11101000

4 Mostre que o gráfico de Petersen(figura 1) é não hamilto-niano. Explique porque as condições suficientes expostasno capítulo não se aplicam a ele.(Dica: Aproveite a sime-tria do grafo).

Figura 1: Grafo de Petersen. Sua sequência gráfica é (3,3,3,3,3,3,3,3,3,3).

O grafo de Petersen é um tipo de grafo de Moore. Este grafo tem grande importância teórica,por diversos motivos; em particular além de ser um grafo de Moore, ele tem cintura 5, é não

2

Page 51: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Hamiltoniano e não planar. O grafo de Petersen tem a pecualiaridade de ser contra exemplo paranumerosas conjecturas em diferentes temas da teoria dos grafos. Vale a pena registrar que o grafode Petersen é uma gaiola(grafo regular de cintura dada, com número mínimo de vértices). Umagaiola é denotada por seus parâmetros como c(d,g) (c = cage).

Porém a sequência de graus do grafo de Petersen não é forçosamente hamiltoniana. Umsequência forçosamente hamiltoniana é aquela para qual todas as representações gráficas(conexas)são grafos hamiltonianos. Uma sequência gráfica é uma sequência finita não descrescente, deinteiros positivos, que tenha uma correspondência biunívoca com a sequência dos graus dos vérticesde um grafo não orientado G. G é então uma representação gráfica da sequência.

5 Construa um algoritmo para achar um ciclo euleriano emum grafo euleriano não orientado, a partir da construçãoprogressiva de ciclos ao longo de um percurso inicial.

grau = 0;soma = 0;matrizAdjacencias[][];N = NumeroDeLinhas(matrizAdjacencias[][]);i = 0; //i é a linha atual

Enquanto ((soma <= 2) e ( i<= N)){

grau = 0;Para( j=0; j < N; j++) grau = grau + matrizAdjacencias[i][j];Se (grau mod 2 == 1) soma ++; //caso seja ímpari++;

}

Se (soma > 2) Escreve ‘CAMINHO NÃO EXISTENTE’Senão Escreve ‘CAMINHO EXISTENTE’

6 Verifique se os grafos a seguir(figura 2) são hamiltonianosou não-hamiltonianos, justificando a resposta(Dica: Umdeles é hamiltoniano e o outro não).

Figura 2: Verificação de ciclos hamiltonianos.

O primeiro grafo é hamiltoniano porque podemos passar uma única vez por cada vértice. Jáo segundo grafo, não é hamiltoniano porque não podemos encontrar um caminho hamiltoniano.Sempre faz-se necessário passar mais de uma vez por um vértice.

3

Page 52: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Teoria dos Grafos - Exercícios do Capítulo 6

Michel Alves dos Santos ∗

Maio de 2011

ConteúdoLista de Figuras 1

1 O dono de uma loja de animais comprou certa quantidade de peixes ornamen-tais de diversas espécies, um exemplar de cada espécie. Alguns desses peixesnão podem ficar no mesmo aquário. A compatibilidade entre as espécies estáretratada na tabela a seguir (1 significa que as espécies não devem ficar nomesmo aquário): 1

Lista de Figuras

1 O dono de uma loja de animais comprou certa quantidadede peixes ornamentais de diversas espécies, um exemplarde cada espécie. Alguns desses peixes não podem ficar nomesmo aquário. A compatibilidade entre as espécies estáretratada na tabela a seguir (1 significa que as espéciesnão devem ficar no mesmo aquário):

A B C D E F G H IA 0 0 0 0 0 1 1 0 1B 0 0 1 0 0 0 0 1 0C 0 1 0 0 1 0 0 1 0D 0 0 0 0 1 1 0 1 0E 0 0 1 1 0 0 1 0 0F 1 0 0 1 0 0 1 0 1G 1 0 0 0 1 1 0 1 1H 0 1 1 1 0 0 1 0 0I 1 0 0 0 0 1 1 0 0

Tabela 1: Construção da matriz que relaciona espécies não compatíveis.

a) Qual é o menor número de aquários necessários para abrigar todos os peixes?∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: mi-

[email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 53: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

b) É possível distribuir os peixes de forma que cada aquário tenha (aproximadamente) o mesmonúmero de peixes?

• O menor número de aquários é dado pelo número cromático relativo, modelando o mesmocomo um grafo e fazendo com que as relações de incompatibilidade representassem as arestas.Dessa forma teríamos que o número mínimo de aquários seria dado por: χ(P ) 6 ∆(P ) + 1.Sendo ∆(P ) = 5, o grau do grafo P, logo precisariamos de no máximo 6 aquários.

• Sim. Com o seguinte agrupamento: {A, H}, {B, I}, {G,D,C} e {E, F}.

2

Page 54: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Teoria dos Grafos - Exercícios do Capítulo 5

Michel Alves dos Santos ∗

Maio de 2011

ConteúdoLista de Figuras 2

1 a) Qual o número de independência α(P ) do grafo de Petersen, representado aseguir? 21.1 Utilize o item (a) para apresentar um acoplamento maximal de P com 3 arestas. . 21.2 Use cadeias aumentantes para encontrar um acoplamento maximal de P com 4 arestas. 21.3 Encontre um acoplamento máximo de P. Qual o valor de α′(P )? . . . . . . . . . . 3

2 Formule o problema de programação inteira que encontra o número de do-minação do grafo a seguir. Mostre o funcionamento da formulação com ossubconjuntos de vértices {x1, x2, x3} e {x2, x3, x6}. 32.1 Testando para o subconjunto de vértices {x1, x2, x3}. . . . . . . . . . . . . . . . . 42.2 Testando para o subconjunto de vértices {x2, x3, x6}. . . . . . . . . . . . . . . . . 4

3 Formule o problema de programação inteira que encontra o número de aco-plamento do grafo a seguir. Mostre o funcionamento da formulação com ossubconjuntos de arestas {x1x2, x3x6, x5x6} e {x1x2, x3x6, x4x5}. 53.1 Testando para o subconjunto de arestas {x1x2, x3x6, x5x6}. . . . . . . . . . . . . . 53.2 Testando para o subconjunto de arestas {x1x2, x3x6, x4x5}. . . . . . . . . . . . . . 6

4 Seja o grafo H=(V, E) não orientado, construído da seguinte forma (Vejaabaixo). Qual o maior conjunto independente deste grafo? 6

5 Uma cobertura de vértices é um subconjunto de vérices tal que toda arestaé incidente a um vértice do conjunto. O número de cobertura de vértices deum grafo G, notação β(G) é a cardinalidade da menor cobertura de vérticesde G. Formule o problema de programação inteira que encontra o número decobertura do grafo a seguir. Mostre o funcionamento da formulação com ossubconjuntos de vértices {x1, x2, x3} e {x2, x4, x6}. 65.1 Testando para o subconjunto de vértices {x1, x2, x3}. . . . . . . . . . . . . . . . . 75.2 Testando para o subconjunto de vértices {x2, x4, x6}. . . . . . . . . . . . . . . . . 8

6 Formule o problema de programação inteira que encontra o número de cober-tura de arestas do grafo a seguir. Mostre o funcionamento da formulação comos subconjuntos de arestas {ab, bc, bd} e {ab, cd, de}. 86.1 Testando para o subconjunto de arestas {ab, bc, bd}. . . . . . . . . . . . . . . . . 96.2 Testando para o subconjunto de arestas {ab, cd, de}. . . . . . . . . . . . . . . . . . 9

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 55: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

7 O problema das 8 damas consiste em se encontrar um posicionamento paraessas peças em um tabuleiro de xadrez, de tal forma que nenhuma dama ataqueoutra. Diga a qual conceito, dentre os expostos neste capítulo, este problemacorresponde. Procure encontrar por inspeção, uma solução para este problema. 9

Lista de Figuras1 O grafo de Petersen e o conjunto independente máximo em vermelho. . . . . . . . 22 O Grafo de Petersen. Acoplamento maximal com 3 arestas. . . . . . . . . . . . . . 23 O Grafo de Petersen. Acoplamento maximal com 4 arestas. . . . . . . . . . . . . . 34 O Grafo de Petersen. Acoplamento máximo com 5 arestas. . . . . . . . . . . . . . 35 Grafo fornecido para que se encontre o seu número de dominação. . . . . . . . . . 36 Grafo fornecido para que se encontre o seu número de acoplamento. . . . . . . . . 57 Grafo fornecido para que se encontre o seu número de cobertura de vértices. . . . . 68 Grafo fornecido para que se encontre o seu número de cobertura de arestas. . . . . 89 O Problema das 8 Damas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1 a) Qual o número de independência α(P ) do grafo de Pe-tersen, representado a seguir?

Figura 1: O grafo de Petersen e o conjunto independente máximo em vermelho.

O número α(P ) do grafo apresentado é 4.

1.1 Utilize o item (a) para apresentar um acoplamento maximal de Pcom 3 arestas.

As arestas pertencentes ao acoplamento maximal se encontram em vermelho. Este resultadofoi obtido por inspeção.

Figura 2: O Grafo de Petersen. Acoplamento maximal com 3 arestas.

1.2 Use cadeias aumentantes para encontrar um acoplamento maximalde P com 4 arestas.

As arestas pertencentes ao acoplamento maximal se encontram em vermelho tracejado. Esteresultado foi obtido por inspeção.

2

Page 56: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 3: O Grafo de Petersen. Acoplamento maximal com 4 arestas.

1.3 Encontre um acoplamento máximo de P. Qual o valor de α′(P )?As arestas pertencentes ao acoplamento máximo se encontram em vermelho tracejado. Este

resultado foi obtido por inspeção. O valor de α′(P ) é 5.

Figura 4: O Grafo de Petersen. Acoplamento máximo com 5 arestas.

2 Formule o problema de programação inteira que encon-tra o número de dominação do grafo a seguir. Mostreo funcionamento da formulação com os subconjuntos devértices {x1, x2, x3} e {x2, x3, x6}.

Figura 5: Grafo fornecido para que se encontre o seu número de dominação.

Começamos por tomar a matriz de incidência B do grafo fornecido. Em um passo seguinte

B =

X1X2 X1X4 X2X3 X2X5 X3X6 X4X5 X5X6X1 1 1 0 0 0 0 0X2 1 0 1 1 0 0 0X3 0 0 1 0 1 0 0X4 0 1 0 0 0 1 0X5 0 0 0 1 0 1 1X6 0 0 0 0 1 0 1

Tabela 1: Construção da matriz de incidência, que relaciona vértices e arestas.

encontramos sua transposta, visualizada logo abaixo: Tomamos agora um conjunto de vértices quesuspeitamos que faça parte de um conjunto dominante do grafo fornecido. Construímos um vetor

3

Page 57: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Bt =

X1 X2 X3 X4 X5 X6X1X2 1 1 0 0 0 0X1X4 1 0 0 1 0 0X2X3 0 1 1 0 0 0X2X5 0 1 0 0 1 0X3X6 0 0 1 0 0 1X4X5 0 0 0 1 1 0X5X6 0 0 0 0 1 1

Tabela 2: Construção da matriz de incidência transposta, que relaciona vértices e arestas.

característico, recebendo 1 se o vértice estiver no conjunto e 0 senão. Chamaremos esse vetor dex. Se multiplicarmos Bt por x, estaremos multiplicando a linha de cada aresta pelo vetor x. Seos dois vértices que aparecem na linha da aresta coincidirem com dois elementos do nosso vetor, éporque o nosso conjunto tem dois vértices adjacentes. Resumimos os nosso problema da seguinteforma:

• Minimizar 1 · x

• Sujeito a Bt · x 6 1

• xj ∈ {0, 1}

Onde nesse modelo o 1 representa o vetor formado por 1’s.

2.1 Testando para o subconjunto de vértices {x1, x2, x3}.Tomaremos como vetor característico x = (1, 1, 1, 0, 0, 0) e agora procediremos com a multipli-

cação Bt · x:

1 1 0 0 0 01 0 0 1 0 00 1 1 0 0 00 1 0 0 1 00 0 1 0 0 10 0 0 1 1 00 0 0 0 1 1

111000

=

2121100

O valor 2 que aparece indica que na lista proposta existem vértices adjacentes, logo esse conjuntonão pode ser chamado de dominante.

2.2 Testando para o subconjunto de vértices {x2, x3, x6}.Tomaremos como vetor característico x = (0, 1, 1, 0, 0, 1) e agora procediremos com a multipli-

cação Bt · x:

1 1 0 0 0 01 0 0 1 0 00 1 1 0 0 00 1 0 0 1 00 0 1 0 0 10 0 0 1 1 00 0 0 0 1 1

011001

=

1021201

O valor 2 que aparece indica que na lista proposta existem vértices adjacentes, logo esse conjuntotambém não pode ser chamado de dominante.

4

Page 58: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

3 Formule o problema de programação inteira que encon-tra o número de acoplamento do grafo a seguir. Mostreo funcionamento da formulação com os subconjuntos dearestas {x1x2, x3x6, x5x6} e {x1x2, x3x6, x4x5}.

Figura 6: Grafo fornecido para que se encontre o seu número de acoplamento.

Começamos por tomar a matriz de incidência B do grafo fornecido. Tomamos agora um

B =

X1X2 X1X4 X2X3 X2X5 X3X6 X4X5 X5X6X1 1 1 0 0 0 0 0X2 1 0 1 1 0 0 0X3 0 0 1 0 1 0 0X4 0 1 0 0 0 1 0X5 0 0 0 1 0 1 1X6 0 0 0 0 1 0 1

Tabela 3: Construção da matriz de incidência, que relaciona vértices e arestas.

conjunto de arestas que suspeitamos que faça parte de um conjunto de acoplamento do grafofornecido. Construímos um vetor característico, recebendo 1 se a aresta estiver no conjunto e 0senão. Chamaremos esse vetor de x. Se multiplicarmos B por x, estaremos multiplicando a linhade cada vértice pelo vetor x. Se as arestas que aparecem na coluna da aresta coincidirem com oselementos do nosso vetor, é porque o nosso conjunto tem arestas adjacentes. Resumimos os nossoproblema da seguinte forma:

• Maximizar 1 · x

• Sujeito a B · x 6 1

• xj ∈ {0, 1}

Onde nesse modelo o 1 representa o vetor formado por 1’s.

3.1 Testando para o subconjunto de arestas {x1x2, x3x6, x5x6}.Tomaremos como vetor característico x = (1, 0, 0, 0, 1, 0, 1) e agora procediremos com a multi-

plicação B · x: 1 1 0 0 0 0 01 0 1 1 0 0 00 0 1 0 1 0 00 1 0 0 0 1 00 0 0 1 0 1 10 0 0 0 1 0 1

1000101

=

111012

O valor 2 que aparece indica que na lista proposta existem arestas adjacentes, logo esse conjuntonão pode ser dito como um conjunto de acoplamento.

5

Page 59: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

3.2 Testando para o subconjunto de arestas {x1x2, x3x6, x4x5}.Tomaremos como vetor característico x = (1, 0, 0, 0, 1, 1, 0) e agora procediremos com a multi-

plicação B · x: 1 1 0 0 0 0 01 0 1 1 0 0 00 0 1 0 1 0 00 1 0 0 0 1 00 0 0 1 0 1 10 0 0 0 1 0 1

1000110

=

111111

Como todos os valores são menores ou iguais a 1, isso significa que estamos diante de um conjuntode acoplamento.

4 Seja o grafo H=(V, E) não orientado, construído da se-guinte forma (Veja abaixo). Qual o maior conjunto inde-pendente deste grafo?• V = conjunto dos números naturais de 2 a 100.

• E = { (a,b) | a e b têm um divisor comum}

É o conjunto formado pelos números primos situados entre 2 e 100.

5 Uma cobertura de vértices é um subconjunto de véricestal que toda aresta é incidente a um vértice do conjunto.O número de cobertura de vértices de um grafo G, nota-ção β(G) é a cardinalidade da menor cobertura de vérticesde G. Formule o problema de programação inteira que en-contra o número de cobertura do grafo a seguir. Mostreo funcionamento da formulação com os subconjuntos devértices {x1, x2, x3} e {x2, x4, x6}.

Figura 7: Grafo fornecido para que se encontre o seu número de cobertura de vértices.

O problema é muito similar aos anteriores. Começamos por tomar a matriz de incidência Bdo grafo fornecido. Em um passo seguinte encontramos sua transposta, visualizada logo abaixo:Tomamos agora um conjunto de vértices que suspeitamos que faça parte de um conjunto decobertura do grafo fornecido. Construímos um vetor característico, recebendo 1 se o vértice estiverno conjunto e 0 senão. Chamaremos esse vetor de x. Se multiplicarmos Bt por x, estaremosmultiplicando a linha de cada aresta pelo vetor x. Se os dois vértices que aparecem na linha da

6

Page 60: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

B =

X1X2 X1X4 X2X3 X2X5 X3X6 X4X5 X5X6X1 1 1 0 0 0 0 0X2 1 0 1 1 0 0 0X3 0 0 1 0 1 0 0X4 0 1 0 0 0 1 0X5 0 0 0 1 0 1 1X6 0 0 0 0 1 0 1

Tabela 4: Construção da matriz de incidência, que relaciona vértices e arestas.

Bt =

X1 X2 X3 X4 X5 X6X1X2 1 1 0 0 0 0X1X4 1 0 0 1 0 0X2X3 0 1 1 0 0 0X2X5 0 1 0 0 1 0X3X6 0 0 1 0 0 1X4X5 0 0 0 1 1 0X5X6 0 0 0 0 1 1

Tabela 5: Construção da matriz de incidência transposta, que relaciona vértices e arestas.

aresta coincidirem com dois elementos do nosso vetor, é porque o nosso conjunto tem dois vérticesadjacentes, e se isso ocorre a cobertura será prejudicada, ou seja, devemos ter um subconjuntomínimo de vértices não adjacentes de tal forma que toda aresta seja incidente a um vértice dessesubconjunto. Mas observe que toda aresta deve ser incidente, logo o resultado da multiplicaçãodeve nos fornecer um vetor onde todas as suas componentes sejam maiores ou iguais a um, e issogarantirá que todas as arestas estam presentes nessa relação. Resumimos os nosso problema daseguinte forma:

• Minimizar 1 · x

• Sujeito a Bt · x > 1

• xj ∈ {0, 1}

Onde nesse modelo o 1 representa o vetor formado por 1’s.

5.1 Testando para o subconjunto de vértices {x1, x2, x3}.Tomaremos como vetor característico x = (1, 1, 1, 0, 0, 0) e agora procediremos com a multipli-

cação Bt · x:

1 1 0 0 0 01 0 0 1 0 00 1 1 0 0 00 1 0 0 1 00 0 1 0 0 10 0 0 1 1 00 0 0 0 1 1

111000

=

2121100

O valor 2 que aparece indica que na lista proposta existem vértices adjacentes, e o 0 indica quefaltam arestas, logo esse conjunto não pode ser dito como de cobertura.

7

Page 61: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

5.2 Testando para o subconjunto de vértices {x2, x4, x6}.Tomaremos como vetor característico x = (0, 1, 0, 1, 0, 1) e agora procediremos com a multipli-

cação Bt · x:

1 1 0 0 0 01 0 0 1 0 00 1 1 0 0 00 1 0 0 1 00 0 1 0 0 10 0 0 1 1 00 0 0 0 1 1

010101

=

1111111

Como todos os valores são maiores ou iguais a 1, isso significa que estamos diante de um conjuntode cobertura.

6 Formule o problema de programação inteira que encontrao número de cobertura de arestas do grafo a seguir. Mos-tre o funcionamento da formulação com os subconjuntosde arestas {ab, bc, bd} e {ab, cd, de}.

Figura 8: Grafo fornecido para que se encontre o seu número de cobertura de arestas.

Começamos por tomar a matriz de incidência B do grafo fornecido. Tomamos agora um

B =

AB AD AE BC BD BE CD DEA 1 1 1 0 0 0 0 0B 1 0 0 1 1 1 0 0C 0 0 0 1 0 0 1 0D 0 1 0 0 1 0 1 1E 0 0 1 0 0 1 0 1

Tabela 6: Construção da matriz de incidência, que relaciona vértices e arestas.

conjunto de arestas que suspeitamos que faça parte de um conjunto de cobertura de arestas dografo fornecido. Construímos um vetor característico, recebendo 1 se a aresta estiver no conjuntoe 0 senão. Chamaremos esse vetor de x. Se multiplicarmos B por x, estaremos multiplicando alinha de cada vértice pelo vetor x. Se as arestas que aparecem na coluna da aresta coincidirem comos elementos do nosso vetor, é porque o nosso conjunto tem arestas adjacentes. Porém o resultadofinal da multiplicação deve nos fornecer um vetor no qual seus valores sejam maiores ou iguais a1, com isso teremos certeza que todo vértice foi tocado por uma aresta do conjunto. Resumimosos nosso problema da seguinte forma:

• Maximizar 1 · x

8

Page 62: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

• Sujeito a B · x > 1

• xj ∈ {0, 1}

Onde nesse modelo o 1 representa o vetor formado por 1’s.

6.1 Testando para o subconjunto de arestas {ab, bc, bd}.Tomaremos como vetor característico x = (1, 0, 0, 1, 1, 0, 0, 0) e agora procediremos com a

multiplicação B · x:

1 1 1 0 0 0 0 01 0 0 1 1 1 0 00 0 0 1 0 0 1 00 1 0 0 1 0 1 10 0 1 0 0 1 0 1

10011000

=

13110

Nem todo vértice foi tocado, isso é concluído devido ao aparecimento do valor zero. O vértice Enão foi tocado.

6.2 Testando para o subconjunto de arestas {ab, cd, de}.Tomaremos como vetor característico x = (1, 0, 0, 0, 0, 0, 1, 1) e agora procediremos com a

multiplicação B · x:

1 1 1 0 0 0 0 01 0 0 1 1 1 0 00 0 0 1 0 0 1 00 1 0 0 1 0 1 10 0 1 0 0 1 0 1

10000011

=

11121

Todos os vértices foram tocados, logo o subconjunto é uma cobertura de arestas.

7 O problema das 8 damas consiste em se encontrar umposicionamento para essas peças em um tabuleiro de xa-drez, de tal forma que nenhuma dama ataque outra. Digaa qual conceito, dentre os expostos neste capítulo, esteproblema corresponde. Procure encontrar por inspeção,uma solução para este problema.

O problema se relaciona ao conceito de Conjuntos Dominantes. Por inspeção, uma soluçãopossível é a seguinte:

9

Page 63: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 9: O Problema das 8 Damas.

10

Page 64: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Teoria dos Grafos - Exercícios do Capítulo 9

Michel Alves dos Santos ∗

Junho de 2011

ConteúdoLista de Figuras 1

1 Construa um grafo com a sequência de graus (4,4,3,3,3,3): (a) que seja planar,(b) que não seja planar. 1

2 Um grafo é autodual se GD é isomorfo a G. 2

3 Mostre que um grafo planar é bipartido se e só se GD for euleriano. 2

4 A cintura de um grafo, notação g(G) é o comprimento do seu menor ciclo.Mostre que em um grafo planar temos: m 6 [(n − 2)g]/(g − 2) 2

5 (a) Seja G um grafo maximal planar com n > 4. Mostre que os vértices de grau3, se existirem, formam um subconjunto independente dos vértices de G. (b)Seja G um grafo maximal planar com 5 vértices. Quantas faces triangularestem G. (c) Seja G no item b. Produzimos um grafo G’, incluindo um vértice degrau 3 em cada face triangular, como sugere a figura a seguir. Quantos vérticestem G’? Quantos vértices de grau 3 tem G’? Mostre que G’ não é hamiltoniano.(d) Adapte a construção mostrada acima e construa um grafo planar maximalsem vértices de grau 3. 4

Lista de Figuras1 A esquerda grafo planar, a direita grafo não planar. . . . . . . . . . . . . . . . . . . 22 Grafo planar maximal sem vértices de grau 3. . . . . . . . . . . . . . . . . . . . . . 4

1 Construa um grafo com a sequência de graus (4,4,3,3,3,3):(a) que seja planar, (b) que não seja planar.

Ver figura 1.∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: mi-

[email protected], [email protected]. Disciplina: Teoria dos Grafos. Docente Responsável: Leo-nardo Viana Pereira.

1

Page 65: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

Figura 1: A esquerda grafo planar, a direita grafo não planar.

2 Um grafo é autodual se GD é isomorfo a G.a) Mostre que se G é autodual então 2n = m + 2

b) Mostre que os grafos roda Rn são autoduais.

• a)Se G é autodual, então GD é isomorfo a G, pelo Teorema de Euler, temos que se um grafoG é planar, então f − m + n = 2. Reformulando temos que o número de faces desse grafo éf = m − n + 2. Analisando agora o grafo dual de G, GD, pela definição de dualidade, possuium vértice associado para cada face de G, logo o numero de vértices de GD será igual aonumero de faces de G, como pela hipótese os dois são isomorfos (então possuem o mesmonúmero de arestas e vértices), se substituirmos f = n em f = m − n + 2, temos 2n = m + 2.Provando o que queríamos.

• b)Sabemos que o número de faces de uma Roda Rn será igual ao número de vértices, logo peladefinição de dualidade, o grafo GD dual a roda, será também uma roda, pois ela possui onúmero de faces de uma roda é o seu número de vértices. Dessa forma, o grafo dual da rodaé isomórfico à ela, mostrando então que qualquer roda é autodual.

3 Mostre que um grafo planar é bipartido se e só se GD foreuleriano.

Se GD é euleriano então ele só terá ciclos pares, cada ciclo par corresponde à uma face par emum grafo planar. Se cada face é par no dual de G, então em G cada vértice terá grau par, o quecorresponde à todos os ciclos de G serem pares. Pelo teorema de grafo bipartido: um grafo G ébipartido se e somente se não possuir ciclos impares. Como G possui apenas ciclos pares então eleé bipartido.

4 A cintura de um grafo, notação g(G) é o comprimento doseu menor ciclo. Mostre que em um grafo planar temos:m 6 [(n − 2)g]/(g − 2)

Para demonstrar tal propriedade devemos recorrer ao conceito de gêneros de superfícies egrafos. O gênero de uma superfície é o número de alças e furos que ela possui; por exemplo, oplano e a esfera têm gênero zero e o toro, gênero 1.

O gênero l(G) de um grafo é o da superfície de menor gênero que admita uma imersão de G.Os grafos planares tem portanto gênero zero. A discussão sobre gênero de superfícies e de grafospermite a generalização de diversos resultados de grafos planares para grafos quaisquer. Um dessesresultados é exibido a seguir:

Teorema 1. (Relação entre Cintura e Gênero) Se a cintura (comprimento do menor ciclo)

2

Page 66: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

de um grafo G for g(G), então

l(G) > m

2

(1 − 2

g(G)

)− n

2 + 1

Executando as devidas transformações teremos:

l(G) >m

2

(1 − 2

g(G)

)− n

2 + 1

l(G) >m

2

(g(G)g(G) − 2

g(G)

)− n

2 + 1

l(G) >m

2

(g(G) − 2

g(G)

)− n

2 + 1

l(G) >m

2

(g(G) − 2

g(G)

)− n

2 + 22

l(G) >m

2

(g(G) − 2

g(G)

)+ 2 − n

2

l(G) >

(m

2 · [g(G) − 2]g(G)

)+ 2 − n

2

l(G) >

(m

2 · [g(G) − 2]g(G)

)+ g(G)

g(G) · [2 − n]2

l(G) >

(m · [g(G) − 2]

2 · g(G)

)+ g(G) · [2 − n]

2 · g(G)

l(G) >m · [g(G) − 2] + g(G) · [2 − n]

2 · g(G)l(G) · 2 · g(G) > m · [g(G) − 2] + g(G) · [2 − n]2 · l(G) · g(G) > m · [g(G) − 2] + g(G) · [2 − n]2 · l(G) · g(G) > m · [g(G) − 2] − g(G) · [n − 2]

Como os grafos planares possuem gênero zero, logo:

2 · l(G) · g(G) > m · [g(G) − 2] − g(G) · [n − 2]2 · 0 · g(G) > m · [g(G) − 2] − g(G) · [n − 2]

0 > m · [g(G) − 2] − g(G) · [n − 2]−m · [g(G) − 2] > −g(G) · [n − 2]−m · [g(G) − 2] > −g(G) · [n − 2] × (−1)

m · [g(G) − 2] 6 g(G) · [n − 2]m 6 (g(G) · [n − 2])/[g(G) − 2]

Executando as devidas substituições, que nesse caso seria apenas a troca de notação de g(G) porapenas g, teremos finalmente:

m 6 [(n − 2) · g]/(g − 2)

3

Page 67: Graph Theory - Exercises - Chapters 2, 3, 4, 5, 6, 7, 8, and 9

5 (a) Seja G um grafo maximal planar com n > 4. Mos-tre que os vértices de grau 3, se existirem, formam umsubconjunto independente dos vértices de G. (b) Seja Gum grafo maximal planar com 5 vértices. Quantas facestriangulares tem G. (c) Seja G no item b. Produzimosum grafo G’, incluindo um vértice de grau 3 em cada facetriangular, como sugere a figura a seguir. Quantos vér-tices tem G’? Quantos vértices de grau 3 tem G’? Mos-tre que G’ não é hamiltoniano. (d) Adapte a construçãomostrada acima e construa um grafo planar maximal semvértices de grau 3.

a)

b) Para grafo planar maximal temos: m=3n-6, com n=5, temos m=9, aplicando o teorema deeuler temos f-m+n=2, substituindo m e n, temos f=6.

c) 11 vértices. 6 vértices de grau 3. Ao tentar construir um ciclo hamiltoniano, veremos quesempre vai sobrar ao menos um vértice. Dessa forma, o grafo G’ é não hamiltoniano.

d) Solução deste quesito:

Figura 2: Grafo planar maximal sem vértices de grau 3.

4